本光盤(pán)是《輕量級(jí)Java EE企業(yè)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)——Struts 2+Spring+Hibernate整合開(kāi)發(fā)》一書(shū)的配書(shū)光盤(pán),書(shū)中的代碼按章、按節(jié)存放,即第2章、第1節(jié)所使用的代碼放在codes文件夾中的02\2.1文件夾下,依此類推。
Java EE互聯(lián)網(wǎng)輕量級(jí)框架整合開(kāi)發(fā)目錄
第1部分 入門(mén)和技術(shù)基礎(chǔ)
第1章 認(rèn)識(shí)SSM框架和Redis 2
1.1 Spring框架 2
1.1.1 Spring IoC簡(jiǎn)介 2
1.1.2 Spring AOP 4
1.2 MyBatis簡(jiǎn)介 6
1.2.1 Hibernate簡(jiǎn)介 7
1.2.2 MyBatis 8
1.2.3 Hibernate和MyBatis的區(qū)別 11
1.3 Spring MVC簡(jiǎn)介 11
1.4 最流行的NoSQL——Redis 12
1.5 SSM Redis結(jié)構(gòu)框圖及概述 13
第2章 Java設(shè)計(jì)模式 15
2.1 Java反射技術(shù) 15
2.1.1 通過(guò)反射構(gòu)建對(duì)象 15
2.1.2 反射方法 17
2.1.3 實(shí)例 18
2.2 動(dòng)態(tài)代理模式和責(zé)任鏈模式 19
2.2.1 JDK動(dòng)態(tài)代理 20
2.2.2 CGLIB動(dòng)態(tài)代理 22
2.2.3 攔截器 24
2.2.4 責(zé)任鏈模式 28
2.3 觀察者(Observer)模式 30
2.3.1 概述 31
2.3.2 實(shí)例 32
2.4 工廠模式和抽象工廠模式 35
2.4.1 普通工廠(Simple Factory)模式 35
2.4.2 抽象工廠(Abstract Factory)模式 36
2.5 建造者(Builder)模式 38
2.5.1 概述 38
2.5.2 Builder模式實(shí)例 39
2.6 總結(jié) 41
第2部分 互聯(lián)網(wǎng)持久框架——MyBatis
第3章 認(rèn)識(shí)MyBatis核心組件 44
3.1 持久層的概念和MyBatis的特點(diǎn) 44
3.2 準(zhǔn)備MyBatis環(huán)境 45
3.3 MyBatis的核心組件 46
3.4 SqlSessionFactory(工廠接口) 47
3.4.1 使用XML構(gòu)建SqlSessionFactory 48
3.4.2 使用代碼創(chuàng)建SqlSessionFactory 50
3.5 SqlSession 50
3.6 映射器 51
3.6.1 用XML實(shí)現(xiàn)映射器 52
3.6.2 注解實(shí)現(xiàn)映射器 53
3.6.3 SqlSession發(fā)送SQL 54
3.6.4 用Mapper接口發(fā)送SQL 55
3.6.5 對(duì)比兩種發(fā)送SQL方式 55
3.7 生命周期 55
3.7.1 SqlSessionFactoryBuilder 56
3.7.2 SqlSessionFactory 56
3.7.3 SqlSession 56
3.7.4 Mapper 56
3.8 實(shí)例 57
第4章 MyBatis配置 63
4.1 概述 63
4.2 properties屬性 64
4.2.1 property子元素 64
4.2.2 使用properties文件 65
4.2.3 使用程序傳遞方式傳遞參數(shù) 66
4.2.4 總結(jié) 66
4.3 settings設(shè)置 66
4.4 typeAliases別名 69
4.4.1 系統(tǒng)定義別名 69
4.4.2 自定義別名 72
4.5 typeHandler類型轉(zhuǎn)換器 72
4.5.1 系統(tǒng)定義的typeHandler 73
4.5.2 自定義typeHandler 78
4.5.3 枚舉typeHandler 81
4.5.4 文件操作 86
4.6 ObjectFactory(對(duì)象工廠) 87
4.7 插件 89
4.8 environments(運(yùn)行環(huán)境) 89
4.8.1 transactionManager(事務(wù)管理器) 90
4.8.2 environment數(shù)據(jù)源環(huán)境 92
4.9 databaseIdProvider數(shù)據(jù)庫(kù)廠商標(biāo)識(shí) 95
4.9.1 使用系統(tǒng)默認(rèn)的databaseIdProvider 95
4.9.2 不使用系統(tǒng)規(guī)則 98
4.10 引入映射器的方法 99
第5章 映射器 102
5.1 概述 102
5.2 select元素——查詢語(yǔ)句 103
5.2.1 簡(jiǎn)單的select元素的應(yīng)用 104
5.2.2 自動(dòng)映射和駝峰映射 105
5.2.3 傳遞多個(gè)參數(shù) 106
5.2.4 使用resultMap映射結(jié)果集 109
5.2.5 分頁(yè)參數(shù)RowBounds 110
5.3 insert元素——插入語(yǔ)句 112
5.3.1 概述 112
5.3.2 簡(jiǎn)單的insert語(yǔ)句的應(yīng)用 113
5.3.3 主鍵回填 113
5.3.4 自定義主鍵 114
5.4 update元素和delete元素 114
5.5 sql元素 115
5.6 參數(shù) 116
5.6.1 概述 116
5.6.2 存儲(chǔ)過(guò)程參數(shù)支持 117
5.6.3 特殊字符串的替換和處理(#和$) 117
5.7 resultMap元素 118
5.7.1 resultMap元素的構(gòu)成 118
5.7.2 使用map存儲(chǔ)結(jié)果集 119
5.7.3 使用POJO存儲(chǔ)結(jié)果集 119
5.8 級(jí)聯(lián) 120
5.8.1 MyBatis中的級(jí)聯(lián) 121
5.8.2 建立POJO 124
5.8.3 配置映射文件 127
5.8.4 N 1問(wèn)題 133
5.8.5 延遲加載 133
5.8.6 另一種級(jí)聯(lián) 137
5.8.7 多對(duì)多級(jí)聯(lián) 140
5.9 緩存 143
5.9.1 一級(jí)緩存和二級(jí)緩存 144
5.9.2 緩存配置項(xiàng)、自定義和引用 147
5.10 存儲(chǔ)過(guò)程 149
5.10.1 IN和OUT參數(shù)存儲(chǔ)過(guò)程 150
5.10.2 游標(biāo)的使用 152
第6章 動(dòng)態(tài)SQL 155
6.1 概述 155
6.2 if元素 156
6.3 choose、when、otherwise元素 156
6.4 trim、where、set元素 157
6.5 foreach元素 159
6.6 用test的屬性判斷字符串 159
6.7 bind元素 160
第7章 MyBatis的解析和運(yùn)行原理 162
7.1 構(gòu)建SqlSessionFactory過(guò)程 163
7.1.1 構(gòu)建Configuration 165
7.1.2 構(gòu)建映射器的內(nèi)部組成 165
7.1.3 構(gòu)建SqlSessionFactory 167
7.2 SqlSession運(yùn)行過(guò)程 168
7.2.1 映射器(Mapper)的動(dòng)態(tài)代理 168
7.2.2 SqlSession下的四大對(duì)象 172
7.2.3 SqlSession運(yùn)行總結(jié) 179
第8章 插件 181
8.1 插件接口 181
8.2 插件的初始化 182
8.3 插件的代理和反射設(shè)計(jì) 183
8.4 常用的工具類——MetaObject 186
8.5 插件開(kāi)發(fā)過(guò)程和實(shí)例 187
8.5.1 確定需要攔截的簽名 187
8.5.2 實(shí)現(xiàn)攔截方法 189
8.5.3 配置和運(yùn)行 191
8.5.4 插件實(shí)例——分頁(yè)插件 192
8.6 總結(jié) 205
第3部分 Spring基礎(chǔ)
第9章 Spring IoC的概念 208
9.1 Spring的概述 208
9.2 Spring IoC概述 210
9.2.1 主動(dòng)創(chuàng)建對(duì)象 211
9.2.2 被動(dòng)創(chuàng)建對(duì)象 213
9.2.3 Spring IoC闡述 214
9.3 Spring IoC容器 215
9.3.1 Spring IoC容器的設(shè)計(jì) 215
9.3.2 Spring IoC容器的初始化和依賴注入 218
9.3.3 Spring Bean的生命周期 219
9.4 小結(jié) 223
第10章 裝配Spring Bean 224
10.1 依賴注入的3種方式 224
10.1.1 構(gòu)造器注入 224
10.1.2 使用setter注入 225
10.1.3 接口注入 226
10.2 裝配Bean概述 227
10.3 通過(guò)XML配置裝配Bean 228
10.3.1 裝配簡(jiǎn)易值 228
10.3.2 裝配集合 229
10.3.3 命名空間裝配 233
10.4 通過(guò)注解裝配Bean 235
10.4.1 使用@Component裝配Bean 236
10.4.2 自動(dòng)裝配——@Autowired 239
10.4.3 自動(dòng)裝配的歧義性(@Primary和@Qualifier) 241
10.4.4 裝載帶有參數(shù)的構(gòu)造方法類 244
10.4.5 使用@Bean裝配Bean 245
10.4.6 注解自定義Bean的初始化和銷毀方法 245
10.5 裝配的混合使用 246
10.6 使用Profile 249
10.6.1 使用注解@Profile配置 249
10.6.2 使用XML定義Profile 250
10.6.3 啟動(dòng)Profile 252
10.7 加載屬性(properties)文件 254
10.7.1 使用注解方式加載屬性文件 254
10.7.2 使用XML方式加載屬性文件 257
10.8 條件化裝配Bean 258
10.9 Bean的作用域 259
10.10 使用Spring表達(dá)式(Spring EL) 261
10.10.1 Spring EL相關(guān)的類 261
10.10.2 Bean的屬性和方法 264
10.10.3 使用類的靜態(tài)常量和方法 265
10.10.4 Spring EL運(yùn)算 265
第11章 面向切面編程 267
11.1 一個(gè)簡(jiǎn)單的約定游戲 267
11.1.1 約定規(guī)則 267
11.1.2 讀者的代碼 269
11.1.3 筆者的代碼 271
11.2 Spring AOP的基本概念 274
11.2.1 AOP的概念和使用原因 274
11.2.2 面向切面編程的術(shù)語(yǔ) 278
11.2.3 Spring對(duì)AOP的支持 280
11.3 使用@AspectJ注解開(kāi)發(fā)Spring AOP 280
11.3.1 選擇切點(diǎn) 281
11.3.2 創(chuàng)建切面 281
11.3.3 連接點(diǎn) 283
11.3.4 測(cè)試AOP 285
11.3.5 環(huán)繞通知 287
11.3.6 織入 289
11.3.7 給通知傳遞參數(shù) 289
11.3.8 引入 290
11.4 使用XML配置開(kāi)發(fā)Spring AOP 293
11.4.1 前置通知、后置通知、返回通知和異常通知 294
11.4.2 環(huán)繞通知 296
11.4.3 給通知傳遞參數(shù) 297
11.4.4 引入 298
11.5 經(jīng)典Spring AOP應(yīng)用程序 299
11.6 多個(gè)切面 301
11.7 小結(jié) 306
第12章 Spring和數(shù)據(jù)庫(kù)編程 307
12.1 傳統(tǒng)的JDBC代碼的弊端 307
12.2 配置數(shù)據(jù)庫(kù)資源 309
12.2.1 使用簡(jiǎn)單數(shù)據(jù)庫(kù)配置 309
12.2.2 使用第三方數(shù)據(jù)庫(kù)連接池 310
12.2.3 使用JNDI數(shù)據(jù)庫(kù)連接池 310
12.3 JDBC代碼失控的解決方案——jdbcTemplate 311
12.3.1 jdbcTemplate的增、刪、查、改 312
12.3.2 執(zhí)行多條SQL 314
12.3.3 jdbcTemplate的源碼分析 315
12.4 MyBatis-Spring項(xiàng)目 317
12.4.1 配置SqlSessionFactoryBean 318
12.4.2 SqlSessionTemplate組件 322
12.4.3 配置MapperFactoryBean 324
12.4.4 配置MapperScannerConfigurer 324
12.4.5 測(cè)試Spring MyBatis 327
第13章 深入Spring數(shù)據(jù)庫(kù)事務(wù)管理 330
13.1 Spring數(shù)據(jù)庫(kù)事務(wù)管理器的設(shè)計(jì) 331
13.1.1 配置事務(wù)管理器 333
13.1.2 用Java配置方式實(shí)現(xiàn)Spring數(shù)據(jù)庫(kù)事務(wù) 334
13.2 編程式事務(wù) 336
13.3 聲明式事務(wù) 337
13.3.1 Transactional的配置項(xiàng) 337
13.3.2 使用XML進(jìn)行配置事務(wù)管理器 339
13.3.3 事務(wù)定義器 340
13.3.4 聲明式事務(wù)的約定流程 341
13.4 數(shù)據(jù)庫(kù)的相關(guān)知識(shí) 343
13.4.1 數(shù)據(jù)庫(kù)事務(wù)ACID特性 343
13.4.2 丟失更新 343
13.4.3 隔離級(jí)別 344
13.5 選擇隔離級(jí)別和傳播行為 347
13.5.1 選擇隔離級(jí)別 347
13.5.2 傳播行為 348
13.6 在Spring MyBatis組合中使用事務(wù) 350
13.7 @Transactional的自調(diào)用失效問(wèn)題 358
13.8 典型錯(cuò)誤用法的剖析 363
13.8.1 錯(cuò)誤使用Service 363
13.8.2 過(guò)長(zhǎng)時(shí)間占用事務(wù) 364
13.8.3 錯(cuò)誤捕捉異常 366
第4部分 Spring MVC框架
第14章 Spring MVC的初始化和流程 370
14.1 MVC設(shè)計(jì)概述 370
14.1.1 Spring MVC的架構(gòu) 372
14.1.2 Spring MVC組件與流程 372
14.1.3 Spring MVC入門(mén)的實(shí)例 374
14.2 Spring MVC初始化 378
14.2.1 初始化Spring IoC上下文 378
14.2.2 初始化映射請(qǐng)求上下文 379
14.2.3 使用注解配置方式初始化 386
14.3 S
Java EE互聯(lián)網(wǎng)輕量級(jí)框架整合開(kāi)發(fā)光盤(pán)內(nèi)容
另:書(shū)中每份源代碼也給出與光盤(pán)源文件的對(duì)應(yīng)關(guān)系,方便讀者查找。
本光盤(pán)codes目錄下有10個(gè)文件夾,其內(nèi)容和含義說(shuō)明如下:
(1) 文件夾01~10對(duì)應(yīng)于《輕量級(jí)Java EE企業(yè)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)——Struts 2+Spring+Hibernate整合開(kāi)發(fā)》中的章名,即第2章所使用的代碼放在codes文件夾中的02文件夾下,依此類推。
(2) 文件夾10下有HRSystem和HRSystem_Eclipse兩個(gè)文件夾,它們是同一個(gè)項(xiàng)目的源文件,其中HRSystem是IDE平臺(tái)無(wú)關(guān)的項(xiàng)目,使用Ant來(lái)編譯即可;而HRSystem_Eclipse是該項(xiàng)目在Eclipse IDE工具中的項(xiàng)目文件。
(3) codes\03\3.2\Struts2Demo目錄、codes\05\5.2\HibernateDemo目錄、codes\07\7.2\myspring目錄和codes\10\HRSystem_Eclipse目錄下有.classpath、.mymetadata、.project、.springBeans等文件,它們是Eclipse項(xiàng)目文件,請(qǐng)不要?jiǎng)h除。
二、運(yùn)行環(huán)境
本書(shū)中的程序在以下環(huán)境調(diào)試通過(guò):
(1) 安裝jdk-6u6-windows-i586-p.exe,安裝完成后,添加CLASSPATH環(huán)境變量,該環(huán)境變量的值為;%JAVA_HOME%/lib/tools.jar;;%JAVA_HOME%/lib/dt.jar。如果為了可以編譯和運(yùn)行Java程序,還應(yīng)該在PATH環(huán)境變量中增加%JAVA_HOME%/bin。其中,JAVA_HOME代表JDK(不是JRE)的安裝路徑。
(2) 安裝Apache的Tomcat 6.0.16,不要使用安裝文件安裝,而是采用解壓縮的安裝方式。
安裝Tomcat請(qǐng)參看第1章。安裝完成后,將Tomcat安裝路徑的lib下的jsp-api.jar和servlet-api.jar兩個(gè)JAR文件添加到CLASSPATH環(huán)境變量之后。
(3) 安裝apache-ant-1.7.0。將下載的Ant壓縮文件解壓縮到任意路徑,然后增加ANT_HOME環(huán)境變量,讓變量的值為Ant的解壓縮路徑。并在PATH環(huán)境變量中增加%ANT_HOME%/bin環(huán)境變量。
(4) 安裝MySQL 5.0或更高版本,安裝MysSQL時(shí)選擇GBK的編碼方式。
(5) 安裝Eclipse 3.2,并安裝MyEclipse 6.0插件。
關(guān)于如何安裝上面工具,請(qǐng)參考本書(shū)的第1章。
三、注意事項(xiàng)
(1) 獨(dú)立應(yīng)用程序的代碼中都包括build.xml文件,在DOS或Shell下進(jìn)入build.xml文件所在路徑,執(zhí)行如下命令:
ant build -- 編譯程序
ant run --運(yùn)行程序
(2) 對(duì)于Web應(yīng)用,將該應(yīng)用復(fù)制到%TOMCAT_HOME%/webapps路徑下,然后進(jìn)入build.xml所在路徑,執(zhí)行如下命令:
ant build -- 編譯應(yīng)用
啟動(dòng)Tomcat服務(wù)器,使用瀏覽器即可訪問(wèn)該應(yīng)用。
(3) 對(duì)于Eclipse項(xiàng)目文件,導(dǎo)入Eclipse開(kāi)發(fā)工具即可。
(4) 第10章的案例,請(qǐng)參看項(xiàng)目下的readme.txt文件。
(5) 代碼中有大量代碼需要連接數(shù)據(jù)庫(kù),讀者應(yīng)修改數(shù)據(jù)庫(kù)URL以及用戶名、密碼,讓這些代碼與讀者運(yùn)行環(huán)境一致。如果項(xiàng)目下有SQL腳本,導(dǎo)入SQL腳本即可;如果沒(méi)有SQL腳本,系統(tǒng)將在運(yùn)行時(shí)自動(dòng)建表,讀者只需創(chuàng)建對(duì)應(yīng)數(shù)據(jù)庫(kù)即可。
(6) 在使用本光盤(pán)中的程序時(shí),請(qǐng)將程序拷貝到硬盤(pán)上,并去除文件的只讀屬性。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版