Spring Boot+MVC實戰(zhàn)指南
定 價:99.9 元
- 作者:高洪巖
- 出版時間:2022/1/1
- ISBN:9787115580610
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312.8-62
- 頁碼:368
- 紙張:
- 版次:01
- 開本:16開
《Spring Boot+MVC實戰(zhàn)指南》主要講解如何在Spring Boot框架中開發(fā)MVC應用,包括主流的JavaEE框架,如MyBatis、Spring、SpringMVC、FreeMarker和Thymeleaf等。讀者可以進行“精要”式學習,正確地進行項目實戰(zhàn),同時汲取JavaEE的思想,并最終將這種思想靈活運用到實際工作中。
《Spring Boot+MVC實戰(zhàn)指南》主要涉及MVC框架的原理實現(xiàn)、上傳、下載、數(shù)據(jù)驗證、國際化、多模塊分組開發(fā)、轉發(fā)/重定向、JSON的解析、將Ajax及JSON和MVC框架進行整合開發(fā),以及MyBatis中映射文件的使用。本書還介紹了Spring中的核心技術(依賴注入與AOP),掌握這兩項技術是學習Spring的重中之重。
《Spring Boot+MVC實戰(zhàn)指南》語言簡潔,示例豐富,以掌握實用技術為目的,幫助讀者迅速掌握使用主流開源JavaEE框架進行開發(fā)所需的各種技能。本書適合已具有一定Java編程基礎(具有Servlet編程經驗)的讀者閱讀,也可供Java平臺下進行各類軟件開發(fā)的開發(fā)人員、測試人員參考。
為了提高讀者學習JavaEE的效率,增強其項目實戰(zhàn)能力,以便在進入新的軟件開發(fā)崗位后能立即投身到開發(fā)工作中,本書從實戰(zhàn)出發(fā),為讀者講解開發(fā)企業(yè)級應用軟件的常備知識,以幫助讀者進行“精要”式的學習,汲取Java EE的思想,正確地進行項目實戰(zhàn)。
本書內容涉及Spring的內部原理和實戰(zhàn)應用、Spring MVC常用技巧和高頻使用案例、MyBatis的海量數(shù)據(jù)和高性能數(shù)據(jù)庫處理,以及標簽庫引擎FreeMarker和Thymeleaf的使用。
本書適合具有一定Java編程基礎的軟件開發(fā)人員、測試人員閱讀。
本書主要內容:
Spring核心技術之IoC;
Spring核心技術之AOP;
Spring 5 MVC實戰(zhàn)技術;
MyBatis 3核心技術之必備技能;
MyBatis 3核心技術之實戰(zhàn)技能;
模板引擎FeeMaker和Thymeleaf的使用。
高洪巖,世界500強企業(yè)高級項目經理,具有10余年項目管理與開發(fā)經驗,在多線程和并發(fā)、Android移動開發(fā)、智能報表和分布式處理等企業(yè)級架構技術領域深耕多年,深諳Java技術開發(fā)要點與難點,擁有良好的技術素養(yǎng)和豐富的實踐經驗,一直在持續(xù)關注架構的優(yōu)化和重構領域,喜歡用技術與理論相結合的方式分享知識,以共同提高。著有《Java多線程編程核心技術》《Java并發(fā)編程:核心方法與框架》《Java EE核心框架實戰(zhàn)》《NIO與Socket編程技術指南》《虛擬化高性能NoSQL存儲案例精粹:Redis+Docker》《Java Web實操》等書籍。
第 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的優(yōu)勢 23
1.8.1 傳統(tǒng)方式 23
1.8.2 Spring方式 24
1.8.3 依賴注入的原理是反射 28
1.9 在Spring中創(chuàng)建JavaBean 28
1.9.1 使用創(chuàng)建對象 29
1.9.2 使用創(chuàng)建并獲取對象 30
1.9.3 使用“全注解”法創(chuàng)建對象 30
1.9.4 使用“全注解”法獲取對象時出現(xiàn)NoUniqueBeanDefinitionException異常的解決辦法 32
1.9.5 使用@ComponentScan(basePackages="")創(chuàng)建并獲取對象 33
1.9.6 使用@ComponentScan(basePackages="")掃描多個包 34
1.9.7 使用@ComponentScan的basePackageClasses屬性進行掃描 36
1.9.8 使用@ComponentScan而不使用basePackages屬性時的效果 37
1.9.9 解決不同包中有相同類名時出現(xiàn)異常的問題 38
1.9.10 推薦使用的代碼結構 40
1.9.11 使用@Lazy注解實現(xiàn)延遲加載 40
1.9.12 出現(xiàn)Overriding bean definition情況時的解決方法 42
1.9.13 在IoC容器中創(chuàng)建單例對象和多例對象 43
1.10 裝配Spring Bean 45
1.10.1 使用注解法注入對象 45
1.10.2 多實現(xiàn)類的歧義性 46
1.10.3 使用@Autowired注解向構造方法的參數(shù)進行注入 49
1.10.4 使用@Autowired注解向方法的參數(shù)進行注入 50
1.10.5 使用@Autowired注解向字段進行注入 50
1.10.6 使用@Inject注解向字段、方法和構造方法進行注入 51
1.10.7 使用@Bean注解向工廠方法的參數(shù)進行注入 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 靜態(tài)代理的實現(xiàn) 72
2.2.2 使用JDK實現(xiàn)動態(tài)代理 74
2.2.3 使用Spring實現(xiàn)動態(tài)代理 76
2.2.4 使用cglib實現(xiàn)動態(tài)代理 79
2.2.5 使用javassist實現(xiàn)動態(tài)代理 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 實現(xiàn)前置通知、后置通知、返回通知和異常通知 86
2.4.2 向前置通知、后置通知、返回通知和異常通知傳入JoinPoint參數(shù) 91
2.4.3 實現(xiàn)環(huán)繞通知 92
2.4.4 使用bean表達式 92
2.4.5 使用@Pointcut定義全局切點 94
2.4.6 向切面?zhèn)魅雲(yún)?shù) 96
2.4.7 使用@AfterReturning和@AfterThrowing向切面?zhèn)魅雲(yún)?shù) 98
2.4.8 向環(huán)繞通知傳入?yún)?shù) 100
2.4.9 實現(xiàn)多切面的應用 102
2.4.10 使用@Order注解制定切面的運行順序 105
第3章 Spring 5 MVC實戰(zhàn)技術 106
3.1 簡介 106
3.2 在Spring Boot框架中搭建Spring MVC開發(fā)環(huán)境 106
3.2.1 搭建Spring MVC開發(fā)環(huán)境 107
3.2.2 搭建CSS+JavaScript+HTML+JSP開發(fā)環(huán)境 114
3.3 核心技術 118
3.3.1 執(zhí)行控制層——無傳遞參數(shù) 118
3.3.2 執(zhí)行控制層——有傳遞參數(shù) 119
3.3.3 執(zhí)行控制層——有傳遞參數(shù)簡化版 120
3.3.4 實現(xiàn)登錄功能 120
3.3.5 將URL參數(shù)封裝到實體類 122
3.3.6 限制提交方式 123
3.3.7 控制層方法的參數(shù)類型 124
3.3.8 控制層方法的返回值類型 125
3.3.9 取得request-response-session對象 126
3.3.10 實現(xiàn)登錄失敗后的提示信息 126
3.3.11 向Controller控制層注入Service業(yè)務邏輯層 128
3.3.12 重定向——無傳遞參數(shù) 129
3.3.13 重定向——有傳遞參數(shù) 130
3.3.14 重定向傳遞參數(shù)——Redirect-Attributes.addAttribute()方法 131
3.3.15 重定向傳遞參數(shù)——Redirect-Attributes.addFlashAttribute()方法 132
3.3.16 使用jackson庫在服務端將JSON字符串轉換成各種Java數(shù)據(jù)類型 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實現(xiàn)文件上傳 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 實現(xiàn)國際化 163
3.4.4 處理異常 172
3.4.5 方法的參數(shù)是Model數(shù)據(jù)類型 177
3.4.6 方法的參數(shù)是ModelMap數(shù)據(jù)類型 178
3.4.7 方法的返回值是ModelMap數(shù)據(jù)類型 179
3.4.8 方法的返回值是ModelAndView數(shù)據(jù)類型 180
3.4.9 方法的返回值是ModelAndView數(shù)據(jù)類型(實現(xiàn)重定向) 182
3.4.10 使用@RequestAttribute和@SessionAttribute注解 182
3.4.11 使用@CookieValue和@RequestHeader注解 183
3.4.12 使用@SessionAttributes注解 184
3.4.13 使用@ModelAttribute注解實現(xiàn)作用域別名 186
3.4.14 在路徑中添加通配符的功能 187
3.4.15 控制層返回void數(shù)據(jù)的情況 188
3.4.16 解決多人開發(fā)路徑可能重復的問題 189
3.4.17 使用@PathVariable注解 191
3.4.18 通過URL參數(shù)訪問指定的業(yè)務方法 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的優(yōu)勢 206
4.3 使用JDBC+反射技術實現(xiàn)泛型DAO 207
4.4 三大核心對象的介紹 213
4.5 三大核心對象的生命周期 213
4.6 使用MyBatis Generator插件:單模塊 214
4.6.1 操作Oracle數(shù)據(jù)庫 215
4.6.2 操作MySQL數(shù)據(jù)庫 222
4.7 使用MyBatis Generator插件:多模塊 227
4.7.1 操作Oracle數(shù)據(jù)庫 227
4.7.2 操作MySQL數(shù)據(jù)庫 232
4.8 自建環(huán)境使用Mapper接口操作Oracle-MySQL數(shù)據(jù)庫 236
4.8.1 接口-SQL映射的對應關系 236
4.8.2 針對Oracle的CURD 237
4.8.3 針對MySQL的CURD 244
4.9 向Mapper接口傳入?yún)?shù)類型 250
4.10 從SQL映射取得返回值類型 253
第5章 MyBatis 3核心技術之實戰(zhàn)技能 255
5.1 實現(xiàn)輸出日志 255
5.2 SQL語句中特殊符號的處理 255
5.3 使用別名 256
5.3.1 系統(tǒng)預定義別名 256
5.3.2 使用type-aliases-package配置設置別名 257
5.3.3 別名重復的解決辦法 258
5.4 對yml文件中的數(shù)據(jù)庫密碼進行加密 260
5.5 不同數(shù)據(jù)庫對執(zhí)行不同SQL語句的支持 262
5.5.1 使用實現(xiàn)執(zhí)行不同的SQL語句 262
5.5.2 如果SQL映射的id值相同,有無databaseId的優(yōu)先級 263
5.6 動態(tài)SQL 264
5.6.1 使用標簽實現(xiàn)映射 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實現(xiàn)like模糊查詢 270
5.6.8 標簽的使用 271
5.6.9 標簽的使用 272
5.6.10 標簽的使用 273
5.6.11 使用執(zhí)行批量插入 274
5.6.12 使用標簽對like語句進行適配 276
5.6.13 使用標簽規(guī)范SQL語句 278
5.7 讀寫大文本類型的數(shù)據(jù) 281
5.7.1 操作Oracle數(shù)據(jù)庫 281
5.7.2 操作MySQL數(shù)據(jù)庫 283
5.8 實現(xiàn)數(shù)據(jù)分頁 283
5.9 實現(xiàn)一對一級聯(lián) 284
5.9.1 數(shù)據(jù)表結構和內容以及關系 285
5.9.2 創(chuàng)建實體類 285
5.9.3 創(chuàng)建SQL映射文件 287
5.9.4 級聯(lián)解析 288
5.9.5 根據(jù)ID查詢記錄 288
5.9.6 查詢所有記錄 289
5.9.7 對SQL語句的執(zhí)行次數(shù)進行優(yōu)化 289
5.10 實現(xiàn)一對多級聯(lián) 291
5.10.1 數(shù)據(jù)表結構和內容以及關系 291
5.10.2 創(chuàng)建實體類 291
5.10.3 創(chuàng)建SQL映射文件 293
5.10.4 級聯(lián)解析 294
5.10.5 根據(jù)ID查詢記錄 294
5.10.6 查詢所有記錄 294
5.10.7 對SQL語句的執(zhí)行次數(shù)進行優(yōu)化 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的優(yōu)勢 321
6.1.2 FreeMarker的輸出 321
6.1.3 整合Spring Boot與輸出常見數(shù)據(jù)類型 322
6.1.4 輸出布爾值 327
6.1.5 輸出Date數(shù)據(jù)類型 328
6.1.6 循環(huán)集合中的數(shù)據(jù) 329
6.1.7 使用if命令實現(xiàn)判斷 333
6.1.8 判斷List的size值是否為0 334
6.1.9 處理null值 335
6.1.10 實現(xiàn)隔行變色 338
6.1.11 對象嵌套有null值的處理 340
6.1.12 比較運算符 341
6.1.13 遺拾增補 342
6.1.14 填充select中的option 342
6.1.15 實現(xiàn)自動選中select中的option 343
6.1.16 實現(xiàn)頁面靜態(tài)化 344
6.1.17 將ftlh文件中的內容輸出到內存中 345
6.2 使用Thymeleaf模板引擎 346
6.2.1 整合Spring Boot與常見的使用方式 346
6.2.2 處理復雜數(shù)據(jù)類型 351
6.2.3 處理嵌套數(shù)據(jù)類型 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參數(shù)值 358
6.2.9 循環(huán)Array 359
6.2.10 循環(huán)List 359
6.2.11 循環(huán)Set 360
6.2.12 循環(huán)Map 361
6.2.13 生成Table 361
6.2.14 循環(huán)生成 362
6.2.15 獲得狀態(tài)變量 363
6.2.16 獲得狀態(tài)變量的簡化版 364
6.2.17 實現(xiàn)國際化 365
6.2.18 處理URL 366
6.2.19 處理布爾值 367
6.2.20 操作屬性 367