Spring Boot+MVC實(shí)戰(zhàn)指南
定 價(jià):99.9 元
- 作者:高洪巖
- 出版時(shí)間:2022/1/1
- ISBN:9787115580610
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312.8-62
- 頁(yè)碼:368
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
《Spring Boot+MVC實(shí)戰(zhàn)指南》主要講解如何在Spring Boot框架中開(kāi)發(fā)MVC應(yīng)用,包括主流的JavaEE框架,如MyBatis、Spring、SpringMVC、FreeMarker和Thymeleaf等。讀者可以進(jìn)行“精要”式學(xué)習(xí),正確地進(jìn)行項(xiàng)目實(shí)戰(zhàn),同時(shí)汲取JavaEE的思想,并最終將這種思想靈活運(yùn)用到實(shí)際工作中。
《Spring Boot+MVC實(shí)戰(zhàn)指南》主要涉及MVC框架的原理實(shí)現(xiàn)、上傳、下載、數(shù)據(jù)驗(yàn)證、國(guó)際化、多模塊分組開(kāi)發(fā)、轉(zhuǎn)發(fā)/重定向、JSON的解析、將Ajax及JSON和MVC框架進(jìn)行整合開(kāi)發(fā),以及MyBatis中映射文件的使用。本書(shū)還介紹了Spring中的核心技術(shù)(依賴注入與AOP),掌握這兩項(xiàng)技術(shù)是學(xué)習(xí)Spring的重中之重。
《Spring Boot+MVC實(shí)戰(zhàn)指南》語(yǔ)言簡(jiǎn)潔,示例豐富,以掌握實(shí)用技術(shù)為目的,幫助讀者迅速掌握使用主流開(kāi)源JavaEE框架進(jìn)行開(kāi)發(fā)所需的各種技能。本書(shū)適合已具有一定Java編程基礎(chǔ)(具有Servlet編程經(jīng)驗(yàn))的讀者閱讀,也可供Java平臺(tái)下進(jìn)行各類軟件開(kāi)發(fā)的開(kāi)發(fā)人員、測(cè)試人員參考。
為了提高讀者學(xué)習(xí)JavaEE的效率,增強(qiáng)其項(xiàng)目實(shí)戰(zhàn)能力,以便在進(jìn)入新的軟件開(kāi)發(fā)崗位后能立即投身到開(kāi)發(fā)工作中,本書(shū)從實(shí)戰(zhàn)出發(fā),為讀者講解開(kāi)發(fā)企業(yè)級(jí)應(yīng)用軟件的常備知識(shí),以幫助讀者進(jìn)行“精要”式的學(xué)習(xí),汲取Java EE的思想,正確地進(jìn)行項(xiàng)目實(shí)戰(zhàn)。
本書(shū)內(nèi)容涉及Spring的內(nèi)部原理和實(shí)戰(zhàn)應(yīng)用、Spring MVC常用技巧和高頻使用案例、MyBatis的海量數(shù)據(jù)和高性能數(shù)據(jù)庫(kù)處理,以及標(biāo)簽庫(kù)引擎FreeMarker和Thymeleaf的使用。
本書(shū)適合具有一定Java編程基礎(chǔ)的軟件開(kāi)發(fā)人員、測(cè)試人員閱讀。
本書(shū)主要內(nèi)容:
Spring核心技術(shù)之IoC;
Spring核心技術(shù)之AOP;
Spring 5 MVC實(shí)戰(zhàn)技術(shù);
MyBatis 3核心技術(shù)之必備技能;
MyBatis 3核心技術(shù)之實(shí)戰(zhàn)技能;
模板引擎FeeMaker和Thymeleaf的使用。
高洪巖,世界500強(qiáng)企業(yè)高級(jí)項(xiàng)目經(jīng)理,具有10余年項(xiàng)目管理與開(kāi)發(fā)經(jīng)驗(yàn),在多線程和并發(fā)、Android移動(dòng)開(kāi)發(fā)、智能報(bào)表和分布式處理等企業(yè)級(jí)架構(gòu)技術(shù)領(lǐng)域深耕多年,深諳Java技術(shù)開(kāi)發(fā)要點(diǎn)與難點(diǎn),擁有良好的技術(shù)素養(yǎng)和豐富的實(shí)踐經(jīng)驗(yàn),一直在持續(xù)關(guān)注架構(gòu)的優(yōu)化和重構(gòu)領(lǐng)域,喜歡用技術(shù)與理論相結(jié)合的方式分享知識(shí),以共同提高。著有《Java多線程編程核心技術(shù)》《Java并發(fā)編程:核心方法與框架》《Java EE核心框架實(shí)戰(zhàn)》《NIO與Socket編程技術(shù)指南》《虛擬化高性能NoSQL存儲(chǔ)案例精粹:Redis+Docker》《Java Web實(shí)操》等書(shū)籍。
第 1章 Spring 5核心技術(shù)之IoC 1
1.1 什么是框架 1
1.2 反射與XML操作 1
1.2.1 基礎(chǔ)知識(shí)準(zhǔn)備——反射 1
1.2.2 基礎(chǔ)知識(shí)準(zhǔn)備——操作XML文件 13
1.3 Spring框架介紹 20
1.4 Spring框架的模塊組成 20
1.5 控制反轉(zhuǎn)和依賴注入介紹 21
1.6 IoC容器介紹 22
1.7 AOP介紹 22
1.8 初步體會(huì)IoC的優(yōu)勢(shì) 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)建對(duì)象 29
1.9.2 使用創(chuàng)建并獲取對(duì)象 30
1.9.3 使用“全注解”法創(chuàng)建對(duì)象 30
1.9.4 使用“全注解”法獲取對(duì)象時(shí)出現(xiàn)NoUniqueBeanDefinitionException異常的解決辦法 32
1.9.5 使用@ComponentScan(basePackages="")創(chuàng)建并獲取對(duì)象 33
1.9.6 使用@ComponentScan(basePackages="")掃描多個(gè)包 34
1.9.7 使用@ComponentScan的basePackageClasses屬性進(jìn)行掃描 36
1.9.8 使用@ComponentScan而不使用basePackages屬性時(shí)的效果 37
1.9.9 解決不同包中有相同類名時(shí)出現(xiàn)異常的問(wèn)題 38
1.9.10 推薦使用的代碼結(jié)構(gòu) 40
1.9.11 使用@Lazy注解實(shí)現(xiàn)延遲加載 40
1.9.12 出現(xiàn)Overriding bean definition情況時(shí)的解決方法 42
1.9.13 在IoC容器中創(chuàng)建單例對(duì)象和多例對(duì)象 43
1.10 裝配Spring Bean 45
1.10.1 使用注解法注入對(duì)象 45
1.10.2 多實(shí)現(xiàn)類的歧義性 46
1.10.3 使用@Autowired注解向構(gòu)造方法的參數(shù)進(jìn)行注入 49
1.10.4 使用@Autowired注解向方法的參數(shù)進(jìn)行注入 50
1.10.5 使用@Autowired注解向字段進(jìn)行注入 50
1.10.6 使用@Inject注解向字段、方法和構(gòu)造方法進(jìn)行注入 51
1.10.7 使用@Bean注解向工廠方法的參數(shù)進(jìn)行注入 53
1.10.8 使用@Autowired(required = false)的寫法 54
1.10.9 使用@Bean對(duì)JavaBean的id重命名 56
1.10.10 Spring上下文的相關(guān)知識(shí) 58
1.10.11 BeanFactory與ApplicationContext 65
1.10.12 使用注解@Value進(jìn)行注入 65
1.10.13 解決BeanCurrentlyInCreationException異常問(wèn)題 67
第 2章 Spring 5核心技術(shù)之AOP 71
2.1 AOP 71
2.2 AOP原理之代理設(shè)計(jì)模式 71
2.2.1 靜態(tài)代理的實(shí)現(xiàn) 72
2.2.2 使用JDK實(shí)現(xiàn)動(dòng)態(tài)代理 74
2.2.3 使用Spring實(shí)現(xiàn)動(dòng)態(tài)代理 76
2.2.4 使用cglib實(shí)現(xiàn)動(dòng)態(tài)代理 79
2.2.5 使用javassist實(shí)現(xiàn)動(dòng)態(tài)代理 80
2.3 AOP相關(guān)的概念 81
2.3.1 橫切關(guān)注點(diǎn) 82
2.3.2 切面 82
2.3.3 連接點(diǎn) 84
2.3.4 切點(diǎn) 84
2.3.5 通知 85
2.3.6 織入 85
2.4 AOP核心案例 86
2.4.1 實(shí)現(xiàn)前置通知、后置通知、返回通知和異常通知 86
2.4.2 向前置通知、后置通知、返回通知和異常通知傳入JoinPoint參數(shù) 91
2.4.3 實(shí)現(xiàn)環(huán)繞通知 92
2.4.4 使用bean表達(dá)式 92
2.4.5 使用@Pointcut定義全局切點(diǎn) 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 實(shí)現(xiàn)多切面的應(yīng)用 102
2.4.10 使用@Order注解制定切面的運(yùn)行順序 105
第3章 Spring 5 MVC實(shí)戰(zhàn)技術(shù) 106
3.1 簡(jiǎn)介 106
3.2 在Spring Boot框架中搭建Spring MVC開(kāi)發(fā)環(huán)境 106
3.2.1 搭建Spring MVC開(kāi)發(fā)環(huán)境 107
3.2.2 搭建CSS+JavaScript+HTML+JSP開(kāi)發(fā)環(huán)境 114
3.3 核心技術(shù) 118
3.3.1 執(zhí)行控制層——無(wú)傳遞參數(shù) 118
3.3.2 執(zhí)行控制層——有傳遞參數(shù) 119
3.3.3 執(zhí)行控制層——有傳遞參數(shù)簡(jiǎn)化版 120
3.3.4 實(shí)現(xiàn)登錄功能 120
3.3.5 將URL參數(shù)封裝到實(shí)體類 122
3.3.6 限制提交方式 123
3.3.7 控制層方法的參數(shù)類型 124
3.3.8 控制層方法的返回值類型 125
3.3.9 取得request-response-session對(duì)象 126
3.3.10 實(shí)現(xiàn)登錄失敗后的提示信息 126
3.3.11 向Controller控制層注入Service業(yè)務(wù)邏輯層 128
3.3.12 重定向——無(wú)傳遞參數(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庫(kù)在服務(wù)端將JSON字符串轉(zhuǎn)換成各種Java數(shù)據(jù)類型 133
3.3.17 在控制層返回JSON對(duì)象 137
3.3.18 在控制層返回JSON字符串 139
3.3.19 使用HttpServletResponse對(duì)象輸出響應(yīng)字符 140
3.3.20 解決日期問(wèn)題 142
3.3.21 單文件上傳1——使用MultipartHttpServletRequest 146
3.3.22 單文件上傳2——使用MultipartFile 147
3.3.23 單文件上傳3——使用MultipartFile并結(jié)合實(shí)體類 148
3.3.24 多文件上傳1——使用MultipartHttpServletRequest 149
3.3.25 多文件上傳2——使用MultipartFile[] 151
3.3.26 多文件上傳3——使用MultipartFile[]并結(jié)合實(shí)體類 152
3.3.27 使用AJAX實(shí)現(xiàn)文件上傳 154
3.3.28 支持中文文件名的文件下載 156
3.3.29 使用@RestController注解 157
3.4 擴(kuò)展技術(shù) 158
3.4.1 使用prefix和suffix簡(jiǎn)化返回的視圖名稱 158
3.4.2 控制層返回List對(duì)象及實(shí)體 159
3.4.3 實(shí)現(xiàn)國(guó)際化 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ù)類型(實(shí)現(xiàn)重定向) 182
3.4.10 使用@RequestAttribute和@SessionAttribute注解 182
3.4.11 使用@CookieValue和@RequestHeader注解 183
3.4.12 使用@SessionAttributes注解 184
3.4.13 使用@ModelAttribute注解實(shí)現(xiàn)作用域別名 186
3.4.14 在路徑中添加通配符的功能 187
3.4.15 控制層返回void數(shù)據(jù)的情況 188
3.4.16 解決多人開(kāi)發(fā)路徑可能重復(fù)的問(wèn)題 189
3.4.17 使用@PathVariable注解 191
3.4.18 通過(guò)URL參數(shù)訪問(wèn)指定的業(yè)務(wù)方法 192
3.4.19 使用@GetMapping、@PostMapping、@PutMapping和@Delete Mapping注解 193
3.4.20 使用攔截器 197
3.4.21 Spring 5 MVC應(yīng)用AOP切面 203
第4章 MyBatis 3核心技術(shù)之必備技能 205
4.1 ORM簡(jiǎn)介 205
4.2 MyBatis的優(yōu)勢(shì) 206
4.3 使用JDBC+反射技術(shù)實(shí)現(xiàn)泛型DAO 207
4.4 三大核心對(duì)象的介紹 213
4.5 三大核心對(duì)象的生命周期 213
4.6 使用MyBatis Generator插件:?jiǎn)文K 214
4.6.1 操作Oracle數(shù)據(jù)庫(kù) 215
4.6.2 操作MySQL數(shù)據(jù)庫(kù) 222
4.7 使用MyBatis Generator插件:多模塊 227
4.7.1 操作Oracle數(shù)據(jù)庫(kù) 227
4.7.2 操作MySQL數(shù)據(jù)庫(kù) 232
4.8 自建環(huán)境使用Mapper接口操作Oracle-MySQL數(shù)據(jù)庫(kù) 236
4.8.1 接口-SQL映射的對(duì)應(yīng)關(guān)系 236
4.8.2 針對(duì)Oracle的CURD 237
4.8.3 針對(duì)MySQL的CURD 244
4.9 向Mapper接口傳入?yún)?shù)類型 250
4.10 從SQL映射取得返回值類型 253
第5章 MyBatis 3核心技術(shù)之實(shí)戰(zhàn)技能 255
5.1 實(shí)現(xiàn)輸出日志 255
5.2 SQL語(yǔ)句中特殊符號(hào)的處理 255
5.3 使用別名 256
5.3.1 系統(tǒng)預(yù)定義別名 256
5.3.2 使用type-aliases-package配置設(shè)置別名 257
5.3.3 別名重復(fù)的解決辦法 258
5.4 對(duì)yml文件中的數(shù)據(jù)庫(kù)密碼進(jìn)行加密 260
5.5 不同數(shù)據(jù)庫(kù)對(duì)執(zhí)行不同SQL語(yǔ)句的支持 262
5.5.1 使用實(shí)現(xiàn)執(zhí)行不同的SQL語(yǔ)句 262
5.5.2 如果SQL映射的id值相同,有無(wú)databaseId的優(yōu)先級(jí) 263
5.6 動(dòng)態(tài)SQL 264
5.6.1 使用標(biāo)簽實(shí)現(xiàn)映射 264
5.6.2 標(biāo)簽與實(shí)體類有參構(gòu)造方法 265
5.6.3 使用${}拼接SQL語(yǔ)句 266
5.6.4 標(biāo)簽的使用 266
5.6.5 標(biāo)簽的使用 268
5.6.6 標(biāo)簽的使用 269
5.6.7 針對(duì)Oracle/MySQL實(shí)現(xiàn)like模糊查詢 270
5.6.8 標(biāo)簽的使用 271
5.6.9 標(biāo)簽的使用 272
5.6.10 標(biāo)簽的使用 273
5.6.11 使用執(zhí)行批量插入 274
5.6.12 使用標(biāo)簽對(duì)like語(yǔ)句進(jìn)行適配 276
5.6.13 使用標(biāo)簽規(guī)范SQL語(yǔ)句 278
5.7 讀寫大文本類型的數(shù)據(jù) 281
5.7.1 操作Oracle數(shù)據(jù)庫(kù) 281
5.7.2 操作MySQL數(shù)據(jù)庫(kù) 283
5.8 實(shí)現(xiàn)數(shù)據(jù)分頁(yè) 283
5.9 實(shí)現(xiàn)一對(duì)一級(jí)聯(lián) 284
5.9.1 數(shù)據(jù)表結(jié)構(gòu)和內(nèi)容以及關(guān)系 285
5.9.2 創(chuàng)建實(shí)體類 285
5.9.3 創(chuàng)建SQL映射文件 287
5.9.4 級(jí)聯(lián)解析 288
5.9.5 根據(jù)ID查詢記錄 288
5.9.6 查詢所有記錄 289
5.9.7 對(duì)SQL語(yǔ)句的執(zhí)行次數(shù)進(jìn)行優(yōu)化 289
5.10 實(shí)現(xiàn)一對(duì)多級(jí)聯(lián) 291
5.10.1 數(shù)據(jù)表結(jié)構(gòu)和內(nèi)容以及關(guān)系 291
5.10.2 創(chuàng)建實(shí)體類 291
5.10.3 創(chuàng)建SQL映射文件 293
5.10.4 級(jí)聯(lián)解析 294
5.10.5 根據(jù)ID查詢記錄 294
5.10.6 查詢所有記錄 294
5.10.7 對(duì)SQL語(yǔ)句的執(zhí)行次數(shù)進(jìn)行優(yōu)化 295
5.11 延遲加載 297
5.11.1 默認(rèn)采用立即加載策略 297
5.11.2 使用全局延遲加載策略與兩種加載方式 298
5.11.3 使用fetchType屬性設(shè)置局部加載策略 304
5.12 緩存的使用 305
5.12.1 一級(jí)緩存 305
5.12.2 二級(jí)緩存 307
5.12.3 驗(yàn)證update語(yǔ)句具有清除二級(jí)緩存的特性 308
5.13 Spring事務(wù)傳播特性 310
5.13.1 事務(wù)傳播特性REQUIRED 310
5.13.2 事務(wù)傳播特性SUPPORTS 311
5.13.3 事務(wù)傳播特性MANDATORY 311
5.13.4 事務(wù)傳播特性REQUIRES_NEW 312
5.13.5 事務(wù)傳播特性NOT_SUPPORTED 314
5.13.6 事務(wù)傳播特性NEVER 315
5.13.7 事務(wù)傳播特性NESTED 317
5.13.8 事務(wù)傳播特性總結(jié) 318
第6章 模板引擎FreeMarker和Thymeleaf的使用 320
6.1 使用FreeMarker模板引擎 321
6.1.1 FreeMarker的優(yōu)勢(shì) 321
6.1.2 FreeMarker的輸出 321
6.1.3 整合Spring Boot與輸出常見(jiàn)數(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命令實(shí)現(xiàn)判斷 333
6.1.8 判斷List的size值是否為0 334
6.1.9 處理null值 335
6.1.10 實(shí)現(xiàn)隔行變色 338
6.1.11 對(duì)象嵌套有null值的處理 340
6.1.12 比較運(yùn)算符 341
6.1.13 遺拾增補(bǔ) 342
6.1.14 填充select中的option 342
6.1.15 實(shí)現(xiàn)自動(dòng)選中select中的option 343
6.1.16 實(shí)現(xiàn)頁(yè)面靜態(tài)化 344
6.1.17 將ftlh文件中的內(nèi)容輸出到內(nèi)存中 345
6.2 使用Thymeleaf模板引擎 346
6.2.1 整合Spring Boot與常見(jiàn)的使用方式 346
6.2.2 處理復(fù)雜數(shù)據(jù)類型 351
6.2.3 處理嵌套數(shù)據(jù)類型 353
6.2.4 訪問(wèn)Array 354
6.2.5 訪問(wèn)List 355
6.2.6 訪問(wèn)Map 356
6.2.7 訪問(wèn)request-session-application作用域 358
6.2.8 訪問(wèn)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)變量的簡(jiǎn)化版 364
6.2.17 實(shí)現(xiàn)國(guó)際化 365
6.2.18 處理URL 366
6.2.19 處理布爾值 367
6.2.20 操作屬性 367