Spring Boot + MVC 實戰指南

Spring Boot + MVC 實戰指南

作者: 高洪岩
出版社: 人民郵電
出版在: 2022-01-01
ISBN-13: 9787115580610
ISBN-10: 7115580618
裝訂格式: 平裝
總頁數: 368 頁





內容描述


《Spring Boot+MVC實戰指南》主要講解如何在Spring Boot框架中開發MVC應用,包括主流的JavaEE框架,如MyBatis、Spring、SpringMVC、FreeMarker和Thymeleaf等。讀者可以進行“精要”式學習,正確地進行項目實戰,同時汲取JavaEE的思想,並最終將這種思想靈活運用到實際工作中。
《Spring Boot+MVC實戰指南》主要涉及MVC框架的原理實現、上傳、下載、數據驗證、國際化、多模塊分組開發、轉發/重定向、JSON的解析、將Ajax及JSON和MVC框架進行整合開發,以及MyBatis中映射文件的使用。本書還介紹了Spring中的核心技術(依賴註入與AOP),掌握這兩項技術是學習Spring的重中之重。
《Spring Boot+MVC實戰指南》語言簡潔,示例豐富,以掌握實用技術為目的,幫助讀者迅速掌握使用主流開源JavaEE框架進行開發所需的各種技能。本書適合已具有一定Java編程基礎(具有Servlet編程經驗)的讀者閱讀,也可供Java平臺下進行各類軟件開發的開發人員、測試人員參考。


目錄大綱


第 1章 Spring 5核心技術之IoC 1
1.1 什麽是框架 1
1.2 反射與XML操作 1
1.2.1 基礎知識準備——反射 1
1.2.2 基礎知識準備——操作XML文件 13
1.3 Spring框架介紹 20
1.4 Spring框架的模塊組成 20
1.5 控制反轉和依賴註入介紹 21
1.6 IoC容器介紹 22
1.7 AOP介紹 22
1.8 初步體會IoC的優勢 23
1.8.1 傳統方式 23
1.8.2 Spring方式 24
1.8.3 依賴註入的原理是反射 28
1.9 在Spring中創建JavaBean 28
1.9.1 使用創建對象 29
1.9.2 使用創建並獲取對象 30
1.9.3 使用“全註解”法創建對象 30
1.9.4 使用“全註解”法獲取對象時出現NoUniqueBeanDefinitionException異常的解決辦法 32
1.9.5 使用@ComponentScan(basePackages="")創建並獲取對象 33
1.9.6 使用@ComponentScan(basePackages="")掃描多個包 34
1.9.7 使用@ComponentScan的basePackageClasses屬性進行掃描 36
1.9.8 使用@ComponentScan而不使用basePackages屬性時的效果 37
1.9.9 解決不同包中有相同類名時出現異常的問題 38
1.9.10 推薦使用的代碼結構 40
1.9.11 使用@Lazy註解實現延遲加載 40
1.9.12 出現Overriding bean definition情況時的解決方法 42
1.9.13 在IoC容器中創建單例對象和多例對象 43
1.10 裝配Spring Bean 45
1.10.1 使用註解法註入對象 45
1.10.2 多實現類的歧義性 46
1.10.3 使用@Autowired註解向構造方法的參數進行註入 49
1.10.4 使用@Autowired註解向方法的參數進行註入 50
1.10.5 使用@Autowired註解向字段進行註入 50
1.10.6 使用@Inject註解向字段、方法和構造方法進行註入 51
1.10.7 使用@Bean註解向工廠方法的參數進行註入 53
1.10.8 使用@Autowired(required = false)的寫法 54
1.10.9 使用@Bean對JavaBean的id重命名 56
1.10.10 Spring上下文的相關知識 58
1.10.11 BeanFactory與ApplicationContext 65
1.10.12 使用註解@Value進行註入 65
1.10.13 解決BeanCurrentlyInCreationException異常問題 67
第 2章 Spring 5核心技術之AOP 71
2.1 AOP 71
2.2 AOP原理之代理設計模式 71
2.2.1 靜態代理的實現 72
2.2.2 使用JDK實現動態代理 74
2.2.3 使用Spring實現動態代理 76
2.2.4 使用cglib實現動態代理 79
2.2.5 使用javassist實現動態代理 80
2.3 AOP相關的概念 81
2.3.1 橫切關註點 82
2.3.2 切麵 82
2.3.3 連接點 84
2.3.4 切點 84
2.3.5 通知 85
2.3.6 織入 85
2.4 AOP核心案例 86
2.4.1 實現前置通知、後置通知、返回通知和異常通知 86
2.4.2 向前置通知、後置通知、返回通知和異常通知傳入JoinPoint參數 91
2.4.3 實現環繞通知 92
2.4.4 使用bean表達式 92
2.4.5 使用@Pointcut定義全局切點 94
2.4.6 向切麵傳入參數 96
2.4.7 使用@AfterReturning和@AfterThrowing向切麵傳入參數 98
2.4.8 向環繞通知傳入參數 100
2.4.9 實現多切麵的應用 102
2.4.10 使用@Order註解制定切麵的運行順序 105
第3章 Spring 5 MVC實戰技術 106
3.1 簡介 106
3.2 在Spring Boot框架中搭建Spring MVC開發環境 106
3.2.1 搭建Spring MVC開發環境 107
3.2.2 搭建CSS+JavaScript+HTML+JSP開發環境 114
3.3 核心技術 118
3.3.1 執行控制層——無傳遞參數 118
3.3.2 執行控制層——有傳遞參數 119
3.3.3 執行控制層——有傳遞參數簡化版 120
3.3.4 實現登錄功能 120
3.3.5 將URL參數封裝到實體類 122
3.3.6 限制提交方式 123
3.3.7 控制層方法的參數類型 124
3.3.8 控制層方法的返回值類型 125
3.3.9 取得request-response-session對象 126
3.3.10 實現登錄失敗後的提示信息 126
3.3.11 向Controller控制層註入Service業務邏輯層 128
3.3.12 重定向——無傳遞參數 129
3.3.13 重定向——有傳遞參數 130
3.3.14 重定向傳遞參數——Redirect-Attributes.addAttribute()方法 131
3.3.15 重定向傳遞參數——Redirect-Attributes.addFlashAttribute()方法 132
3.3.16 使用jackson庫在服務端將JSON字符串轉換成各種Java數據類型 133
3.3.17 在控制層返回JSON對象 137
3.3.18 在控制層返回JSON字符串 139
3.3.19 使用HttpServletResponse對象輸出響應字符 140
3.3.20 解決日期問題 142
3.3.21 單文件上傳1——使用MultipartHttpServletRequest 146
3.3.22 單文件上傳2——使用MultipartFile 147
3.3.23 單文件上傳3——使用MultipartFile並結合實體類 148
3.3.24 多文件上傳1——使用MultipartHttpServletRequest 149
3.3.25 多文件上傳2——使用MultipartFile[] 151
3.3.26 多文件上傳3——使用MultipartFile[]並結合實體類 152
3.3.27 使用AJAX實現文件上傳 154
3.3.28 支持中文文件名的文件下載 156
3.3.29 使用@RestController註解 157
3.4 擴展技術 158
3.4.1 使用prefix和suffix簡化返回的視圖名稱 158
3.4.2 控制層返回List對象及實體 159
3.4.3 實現國際化 163
3.4.4 處理異常 172
3.4.5 方法的參數是Model數據類型 177
3.4.6 方法的參數是ModelMap數據類型 178
3.4.7 方法的返回值是ModelMap數據類型 179
3.4.8 方法的返回值是ModelAndView數據類型 180
3.4.9 方法的返回值是ModelAndView數據類型(實現重定向) 182
3.4.10 使用@RequestAttribute和@SessionAttribute註解 182
3.4.11 使用@CookieValue和@RequestHeader註解 183
3.4.12 使用@SessionAttributes註解 184
3.4.13 使用@ModelAttribute註解實現作用域別名 186
3.4.14 在路徑中添加通配符的功能 187
3.4.15 控制層返回void數據的情況 188
3.4.16 解決多人開發路徑可能重復的問題 189
3.4.17 使用@PathVariable註解 191
3.4.18 通過URL參數訪問指定的業務方法 192
3.4.19 使用@GetMapping、@PostMapping、@PutMapping和@Delete Mapping註解 193
3.4.20 使用攔截器 197
3.4.21 Spring 5 MVC應用AOP切麵 203
第4章 MyBatis 3核心技術之必備技能 205
4.1 ORM簡介 205
4.2 MyBatis的優勢 206
4.3 使用JDBC+反射技術實現泛型DAO 207
4.4 三大核心對象的介紹 213
4.5 三大核心對象的生命周期 213
4.6 使用MyBatis Generator插件:單模塊 214
4.6.1 操作Oracle數據庫 215
4.6.2 操作MySQL數據庫 222
4.7 使用MyBatis Generator插件:多模塊 227
4.7.1 操作Oracle數據庫 227
4.7.2 操作MySQL數據庫 232
4.8 自建環境使用Mapper接口操作Oracle-MySQL數據庫 236
4.8.1 接口-SQL映射的對應關系 236
4.8.2 針對Oracle的CURD 237
4.8.3 針對MySQL的CURD 244
4.9 向Mapper接口傳入參數類型 250
4.10 從SQL映射取得返回值類型 253
第5章 MyBatis 3核心技術之實戰技能 255
5.1 實現輸出日誌 255
5.2 SQL語句中特殊符號的處理 255
5.3 使用別名 256
5.3.1 系統預定義別名 256
5.3.2 使用type-aliases-package配置設置別名 257
5.3.3 別名重復的解決辦法 258
5.4 對yml文件中的數據庫密碼進行加密 260
5.5 不同數據庫對執行不同SQL語句的支持 262
5.5.1 使用實現執行不同的SQL語句 262
5.5.2 如果SQL映射的id值相同,有無databaseId的優先級 263
5.6 動態SQL 264
5.6.1 使用標簽實現映射 264
5.6.2 標簽與實體類有參構造方法 265
5.6.3 使用${}拼接SQL語句 266
5.6.4 標簽的使用 266
5.6.5 標簽的使用 268
5.6.6 標簽的使用 269
5.6.7 針對Oracle/MySQL實現like模糊查詢 270
5.6.8 標簽的使用 271
5.6.9 標簽的使用 272
5.6.10 標簽的使用 273
5.6.11 使用執行批量插入 274
5.6.12 使用標簽對like語句進行適配 276
5.6.13 使用標簽規範SQL語句 278
5.7 讀寫大文本類型的數據 281
5.7.1 操作Oracle數據庫 281
5.7.2 操作MySQL數據庫 283
5.8 實現數據分頁 283
5.9 實現一對一級聯 284
5.9.1 數據表結構和內容以及關系 285
5.9.2 創建實體類 285
5.9.3 創建SQL映射文件 287
5.9.4 級聯解析 288
5.9.5 根據ID查詢記錄 288
5.9.6 查詢所有記錄 289
5.9.7 對SQL語句的執行次數進行優化 289
5.10 實現一對多級聯 291
5.10.1 數據表結構和內容以及關系 291
5.10.2 創建實體類 291
5.10.3 創建SQL映射文件 293
5.10.4 級聯解析 294
5.10.5 根據ID查詢記錄 294
5.10.6 查詢所有記錄 294
5.10.7 對SQL語句的執行次數進行優化 295
5.11 延遲加載 297
5.11.1 默認採用立即加載策略 297
5.11.2 使用全局延遲加載策略與兩種加載方式 298
5.11.3 使用fetchType屬性設置局部加載策略 304
5.12 緩存的使用 305
5.12.1 一級緩存 305
5.12.2 二級緩存 307
5.12.3 驗證update語句具有清除二級緩存的特性 308
5.13 Spring事務傳播特性 310
5.13.1 事務傳播特性REQUIRED 310
5.13.2 事務傳播特性SUPPORTS 311
5.13.3 事務傳播特性MANDATORY 311
5.13.4 事務傳播特性REQUIRES_NEW 312
5.13.5 事務傳播特性NOT_SUPPORTED 314
5.13.6 事務傳播特性NEVER 315
5.13.7 事務傳播特性NESTED 317
5.13.8 事務傳播特性總結 318
第6章 模板引擎FreeMarker和Thymeleaf的使用 320
6.1 使用FreeMarker模板引擎 321
6.1.1 FreeMarker的優勢 321
6.1.2 FreeMarker的輸出 321
6.1.3 整合Spring Boot與輸出常見數據類型 322
6.1.4 輸出布爾值 327
6.1.5 輸出Date數據類型 328
6.1.6 循環集合中的數據 329
6.1.7 使用if命令實現判斷 333
6.1.8 判斷List的size值是否為0 334
6.1.9 處理null值 335
6.1.10 實現隔行變色 338
6.1.11 對象嵌套有null值的處理 340
6.1.12 比較運算符 341
6.1.13 遺拾增補 342
6.1.14 填充select中的option 342
6.1.15 實現自動選中select中的option 343
6.1.16 實現頁面靜態化 344
6.1.17 將ftlh文件中的內容輸出到內存中 345
6.2 使用Thymeleaf模板引擎 346
6.2.1 整合Spring Boot與常見的使用方式 346
6.2.2 處理復雜數據類型 351
6.2.3 處理嵌套數據類型 353
6.2.4 訪問Array 354
6.2.5 訪問List 355
6.2.6 訪問Map 356
6.2.7 訪問request-session-application作用域 358
6.2.8 訪問URL參數值 358
6.2.9 循環Array 359
6.2.10 循環List 359
6.2.11 循環Set 360
6.2.12 循環Map 361
6.2.13 生成Table 361
6.2.14 循環生成 362
6.2.15 獲得狀態變量 363
6.2.16 獲得狀態變量的簡化版 364
6.2.17 實現國際化 365
6.2.18 處理URL 366
6.2.19 處理布爾值 367
6.2.20 操作屬性 367


作者介紹


高洪岩,世界500强企业高级项目经理,具有10余年项目管理与开发经验,在多线程和并发、Android移动开发、智能报表和分布式处理等企业级架构技术领域深耕多年,深谙Java技术开发要点与难点,拥有良好的技术素养和丰富的实践经验,一直在持续关注架构的优化和重构领域,喜欢用技术与理论相结合的方式分享知识,以共同提高。著有《Java多线程编程核心技术》《Java并发编程:核心方法与框架》《Java EE核心框架实战》《NIO与Socket编程技术指南》《虚拟化高性能NoSQL存储案例精粹:Redis+Docker》《Java Web实操》等书籍。




相關書籍

C#程序設計教程(第3版)-微課版

作者 江紅 餘青松

2022-01-01

RESTful Java with JAX-RS 2.0, 2/e (Paperback)

作者 Bill Burke

2022-01-01

Scala 程式設計, 2/e (Programming Scala: Scalability = Functional Programming + Objects, 2/e)

作者 萬普勒(Dean Wampler) 佩恩(Alex Payne)

2022-01-01