本書以Eclipse為開發(fā)工具,詳細講解了Struts 2,Hibernate和Spring這三個組件的基礎(chǔ)知識和基本使用方法,并通過一系列集成開發(fā)實例講解了這三個組件在J2EE項目中的應(yīng)用。
本書對每一個組件的講解都是以入門級實例開始的,然后對組件的架構(gòu)以及各方面的功能進行了深入的探討。這樣安排的好處是使讀者在具備了初步知識的基礎(chǔ)上對組件進行更深入的理解,并通過一系列貼近實際的實例來提高讀者對組件的把握能力以及迅速豐富開發(fā)經(jīng)驗。
本書的配套光盤中包含了本書所有實例的完整源代碼以及開發(fā)中需要使用到的輔助工具。
陳天河,具有多年的軟件開發(fā)經(jīng)驗,從事基于Java的Web應(yīng)用軟件開發(fā)已有8年時間,精通J2EE及各種開源組件,F(xiàn)在某外企公司擔(dān)任系統(tǒng)架構(gòu)師,負責(zé)系統(tǒng)架構(gòu)設(shè)計和底層應(yīng)用功能的實現(xiàn)。
目錄
第1章 Struts簡介 1
1.1 Struts項目的組成 1
1.2 獲得Struts 2
1.2.1 Struts發(fā)行包的分類及簡介 3
1.2.2 Struts的運行環(huán)境 3
1.3 運行Struts的樣例程序 5
1.3.1 安裝JDK 5
1.3.2 安裝Tomcat 6
1.3.3 部署Struts的樣例程序 7
1.4 小結(jié) 10
第2章 Struts入門 12
2.1 實例簡介 12
2.2 準(zhǔn)備工作 13
2.2.1 配置Ant 13
2.2.2 數(shù)據(jù)庫的安裝 13
2.3 使用Struts初始化一個Web應(yīng)用項目 14
2.3.1 構(gòu)建基礎(chǔ)目錄結(jié)構(gòu) 14
2.3.2 修改Ant的構(gòu)建文件 14
2.4 編寫第一個Action 17
2.5 編寫第一個頁面 19
2.5.1 設(shè)置文件的編碼格式 19
2.5.2 對國際化的支持 20
2.5.3 編寫JSP頁面 22
2.6 配置Action和forward 23
2.6.1 配置web.xml文件 23
2.6.2 配置Struts的配置文件 25
2.7 編譯、部署和測試Struts應(yīng)用程序 26
2.8 編寫第一個ActionForm 28
2.8.1 定義一個ActionForm類 29
2.8.2 定義ActionForm的屬性 29
2.8.3 覆蓋reset()方法 30
2.8.4 實現(xiàn)validate()方法 31
2.9 編寫第一個輸入頁面 32
2.10 在Action中增加對取消按鈕的處理 39
2.11 在Struts中更新數(shù)據(jù)庫 41
2.11.1 建立數(shù)據(jù)庫的輔助工具類 41
2.11.2 初始化數(shù)據(jù)庫表 44
2.11.3 修改Action的execute()方法 45
2.12 Struts中的異常處理 46
2.12.1 定義異常信息 47
2.12.2 定義對異常的處理 47
2.12.3 測試 48
2.13 使用Struts標(biāo)記來顯示對象 49
2.13.1 定義對象名稱 49
2.13.2 修改注冊成功頁面 50
2.14 使用Logic標(biāo)記來顯示用戶 52
2.14.1 實現(xiàn)用戶對象 52
2.14.2 編寫后臺Action以獲得所有的用戶信息 53
2.14.3 配置Action 54
2.14.4 實現(xiàn)用戶列表頁面 55
2.15 小結(jié) 56
第3章 Struts的框架結(jié)構(gòu) 57
3.1 MVC簡介 57
3.2 JSP開發(fā)模式 58
3.3 Struts的結(jié)構(gòu) 59
3.3.1 Struts概覽 60
3.3.2 Struts的組成 60
3.3.3 HTTP請求處理的順序 63
3.4 基于Struts的開發(fā)方法 66
3.5 小結(jié) 67
第4章 使用Eclipse和MyEclipse開發(fā)Struts應(yīng)用程序 68
4.1 Eclipse簡介 68
4.2 MyEclipse簡介 69
4.3 使用MyEclipse開發(fā)Struts應(yīng)用實例 70
4.3.1 創(chuàng)建一個新的項目 70
4.3.2 增加Struts組件到項目中 72
4.3.3 增加類庫到項目構(gòu)建的路徑中 73
4.3.4 Struts配置文件編輯器 75
4.3.5 開發(fā)一個簡單的Struts應(yīng)用程序 76
4.4 小結(jié) 85
第5章 用戶界面開發(fā)基礎(chǔ) 86
5.1 用戶界面開發(fā)概述 86
5.2 Struts標(biāo)記庫 88
5.2.1 Bean標(biāo)記庫 88
5.2.2 HTML標(biāo)記庫 96
5.2.3 標(biāo)記庫的配置和使用方法 106
5.3 Java標(biāo)準(zhǔn)標(biāo)記庫 106
5.3.1 JSTL簡介 107
5.3.2 JSTL的組成 107
5.3.3 JSTL的安裝 107
5.3.4 JSTL的使用 108
5.4 表達式語言 108
5.4.1 表達式語言簡介 108
5.4.2 變量的作用域 109
5.4.3 隱式對象 110
5.4.4 存取器 111
5.4.5 運算符 112
5.5 顯示柱狀圖 113
5.5.1 柱狀圖顯示實例的功能簡介 113
5.5.2 柱狀圖的實現(xiàn)原理 114
5.5.3 實現(xiàn)柱狀圖的顯示功能 114
5.6 實現(xiàn)表格隔行使用相同樣式 121
5.6.1 實例功能簡介 121
5.6.2 改變表格行樣式的方法 122
5.6.3 動態(tài)使用表格行樣式 122
5.7 數(shù)據(jù)的分頁顯示 124
5.7.1 數(shù)據(jù)分頁顯示的功能 125
5.7.2 數(shù)據(jù)分頁的實現(xiàn)方法 125
5.7.3 數(shù)據(jù)分頁功能的具體實現(xiàn) 126
5.8 對用戶輸入文本的處理 133
5.8.1 文本處理的原則 134
5.8.2 文本輸出的方式 134
5.8.3 自定義編碼方法 136
5.9 小結(jié) 136
第6章 各種各樣的ActionForm 137
6.1 ActionForm簡介 137
6.2 ActionForm的生命周期 138
6.3 在ActionForm中使用列表屬性 139
6.3.1 功能簡介 140
6.3.2 實現(xiàn)方法 140
6.3.3 在ActionForm中使用列表屬性的實例 140
6.4 在ActionForm中使用Map屬性 147
6.4.1 功能簡介 147
6.4.2 實現(xiàn)方法 147
6.4.3 在ActionForm中使用Map屬性的實例 147
6.5 使用動態(tài)ActionForm 153
6.5.1 功能簡介 153
6.5.2 實現(xiàn)方法 153
6.5.3 使用動態(tài)ActionForm的實例 155
6.6 使用Lazy動態(tài)ActionForm 159
6.6.1 功能簡介 159
6.6.2 實現(xiàn)方法 159
6.6.3 使用Lazy ActionForm的實例 159
6.7 自定義賦值轉(zhuǎn)換方法 161
6.8 小結(jié) 162
第7章 使用多樣性的Action 163
7.1 Action簡介 163
7.2 Action的開發(fā)步驟 163
7.3 各種各樣的Action 165
7.3.1 ForwardAction 166
7.3.2 IncludeAction 167
7.3.3 DispatchAction 168
7.3.4 DownloadAction 174
7.3.5 SwitchAction 174
7.3.6 LocaleAction 174
7.4 解決用戶重復(fù)提交的問題 174
7.4.1 功能簡介 175
7.4.2 Struts解決用戶重復(fù)提交的實現(xiàn)原理 175
7.4.3 在Struts中避免重復(fù)響應(yīng)用戶的請求 176
7.4.4 使用JavaScript解決用戶重復(fù)提交的問題 181
7.5 在Struts中輸出XML文件 183
7.5.1 功能簡介 183
7.5.2 Struts輸出XML文件的原理和方法 183
7.5.3 Struts中輸出XML文件的實例 184
7.6 文件上傳和下載功能的實現(xiàn) 186
7.6.1 功能簡介 186
7.6.2 實現(xiàn)方法 186
7.6.3 文件上傳功能的實現(xiàn) 187
7.6.4 文件下載功能的實現(xiàn) 193
7.7 小結(jié) 195
第8章 Validator的使用 196
8.1 Validator框架簡介 196
8.1.1 Validator的作用 196
8.1.2 Validator的優(yōu)點 197
8.1.3 Struts與Validator的關(guān)系 197
8.1.4 Validator的組成 197
8.2 Validator的使用 202
8.2.1 在Struts中使用Validator 202
8.2.2 在獨立的應(yīng)用中使用Validator 209
8.3 日期的驗證 216
8.4 驗證兩個輸入域是否相等 218
8.5 使用正則表達式進行驗證 219
8.6 小結(jié) 220
第9章 Struts的擴展與高級技巧 221
9.1 使用Struts的PlugIn進行Web應(yīng)用的擴展 221
9.2 擴展Struts的RequestProcessor 225
9.2.1 RequestProcessor簡介 225
9.2.2 RequestProcessor的擴展 227
9.3 ActionServlet的擴展 228
9.4 Struts的國際化 229
9.4.1 檢查瀏覽器的語言設(shè)置 229
9.4.2 在Struts中使用多語言的信息 230
9.5 基于Struts框架的系統(tǒng)安全 233
9.5.1 準(zhǔn)備工作 233
9.5.2 對于Action的權(quán)限校驗 233
9.5.3 在頁面中進行權(quán)限校驗 235
9.5.4 使用Filter進行權(quán)限的驗證 236
9.6 應(yīng)用中的異常處理 236
9.6.1 異常處理的原則 236
9.6.2 業(yè)務(wù)異常的設(shè)計 237
9.6.3 在Servlet容器中處理異常 238
9.6.4 Struts的異常處理機制 241
9.6.5 利用擴展Action的方法實現(xiàn)對異常的處理 243
9.7 小結(jié) 245
第10章 Hibernate簡介 246
10.1 持久化技術(shù) 246
10.2 持久層技術(shù) 246
10.3 持久層技術(shù)的實現(xiàn) 249
10.4 ORM概述 251
10.5 Hibernate簡介 251
10.6 獲得Hibernate 252
10.6.1 Hibernate Core 252
10.6.2 Hibernate Annotations 253
10.6.3 Hibernate EntityManager 254
10.6.4 Hibernate Tools 254
10.6.5 NHibernate 254
10.6.6 JBoss Seam 254
10.7 Hibernate Core軟件包的組成 254
10.7.1 運行樣例程序和測試程序 255
10.7.2 Hibernate的依賴組件 255
10.8 小結(jié) 257
第11章 Hibernate入門 258
11.1 項目的體系結(jié)構(gòu) 258
11.2 項目開發(fā)概述 260
11.2.1 功能介紹 260
11.2.2 應(yīng)用的主要技術(shù) 262
11.2.3 開發(fā)步驟和方法 263
11.3 開發(fā)博客管理系統(tǒng) 264
11.3.1 創(chuàng)建一個新項目 264
11.3.2 分析和建模 268
11.3.3 實現(xiàn)域模型 271
11.3.4 編寫數(shù)據(jù)庫腳本 283
11.3.5 定義映射文件 285
11.3.6 編寫Hibernate的配置文件 288
11.3.7 Hibernate工具類的實現(xiàn) 295
11.3.8 Hibernate Filter的實現(xiàn) 306
11.3.9 定義和實現(xiàn)系統(tǒng)的異常 311
11.3.10 定義和實現(xiàn)DAO 314
11.3.11 完成用戶注冊和登錄功能 343
11.3.12 博客管理功能的實現(xiàn) 358
11.3.13 博客主頁的實現(xiàn) 374
11.4 小結(jié) 383
第12章 Hibernate的體系結(jié)構(gòu) 384
12.1 Hibernate的體系結(jié)構(gòu) 384
12.1.1 Hibernate在應(yīng)用程序中的位置 384
12.1.2 Hibernate的體系結(jié)構(gòu) 385
12.2 Hibernate實體對象的生命周期 387
12.2.1 Transient(瞬態(tài)) 387
12.2.2 Persistent(持久態(tài)) 388
12.2.3 Detached(游離態(tài)) 389
12.2.4 實體對象的狀態(tài)轉(zhuǎn)換 390
12.3 Hibernate API簡介 397
12.3.1 Configuration類 397
12.3.2 SessionFactory接口 398
12.3.3 Session接口 398
12.3.4 Transaction接口 403
12.3.5 Query接口 404
12.3.6 Criteria接口 414
12.4 小結(jié) 418
第13章 Hibernate的映射技巧 419
13.1 映射文件的配置 419
13.1.1 的說明 419
13.1.2 元素 421
13.1.3 元素 424
13.1.4 元素 426
13.2 集合類的映射 428
13.2.1 Java的集合類 428
13.2.2 集合類的映射 432
13.3 實體對象關(guān)聯(lián)關(guān)系的映射 436
13.3.1 一對一關(guān)聯(lián)關(guān)系的映射 437
13.3.2 一對多關(guān)聯(lián)關(guān)系的映射 440
13.3.3 多對一關(guān)聯(lián)關(guān)系的映射 441
13.3.4 多對多關(guān)聯(lián)關(guān)系的映射 442
13.4 實體對象繼承的映射 444
13.4.1 每個具體類一張表 444
13.4.2 每個類分層結(jié)構(gòu)一張表 447
13.4.3 每個子類一張表 448
13.4.4 對象繼承的映射方法總結(jié) 450
13.5 映射中的inverse和cascade 450
13.5.1 inverse屬性 451
13.5.2 cascade屬性 454
13.5.3 inverse與cascade的區(qū)別 455
13.6 小結(jié) 455
第14章 Hibernate事務(wù)處理、緩存以及性能優(yōu)化 456
14.1 Hibernate的事務(wù)處理 456
14.1.1 事務(wù)的基本概念 456
14.1.2 數(shù)據(jù)庫的隔離級別 457
14.1.3 Hibernate中的事務(wù)處理 458
14.1.4 并發(fā)控制 459
14.2 Hibernate緩存 467
14.2.1 什么是緩存 467
14.2.2 一級緩存 468
14.2.3 二級緩存 468
14.2.4 Hibernate查詢方法與緩存的關(guān)系 477
14.3 Hibernate的性能優(yōu)化 478
14.3.1 設(shè)計階段的考慮問題 478
14.3.2 批量插入、更新和刪除 479
14.3.3 提升數(shù)據(jù)庫查詢的性能 480
14.4 小結(jié) 484
第15章 Spring簡介 485
15.1 Spring簡介 485
15.2 控制反轉(zhuǎn)(Inversion of Control) 487
15.3 依賴注入 488
15.4 面向切面的編程 489
15.5 Spring框架簡介 491
15.6 獲得Spring 492
15.7 小結(jié) 492
第16章 Spring的核心技術(shù) 493
16.1 IoC容器 493
16.1.1 IoC容器和Bean 494
16.1.2 Bean的基本配置 499
16.1.3 Bean的其他特性 521
16.2 資源 526
16.2.1 Resource接口 527
16.2.2 Resource的實現(xiàn) 527
16.2.3 ResourceLoader接口 528
16.2.4 資源小結(jié) 529
16.3 數(shù)據(jù)綁定功能 529
16.3.1 BeanWrapper類 529
16.3.2 PropertyEditor 533
16.3.3 實現(xiàn)自定義的PropertyEditor 534
16.3.4 數(shù)據(jù)綁定功能小結(jié) 538
16.4 面向切面的編程 538
16.4.1 AOP的思想和本質(zhì) 538
16.4.2 AOP的基本概念 539
16.4.3 Spring AOP的功能 540
16.4.4 基于配置的AOP 541
16.4.5 基于@AspectJ的AOP 548
16.5 小結(jié) 555
第17章 基于Struts的數(shù)據(jù)訪問 556
17.1 事務(wù)管理 556
17.1.1 事務(wù)管理的框架 556
17.1.2 聲明式事務(wù)管理 558
17.1.3 注解式事務(wù)管理 560
17.2 使用JDBC訪問數(shù)據(jù)庫 561
17.2.1 Spring JDBC簡介 562
17.2.2 Spring JDBC核心包的使用 562
17.2.3 Spring JDBC數(shù)據(jù)源包 569
17.2.4 Spring JDBC對象包 570
17.2.5 Spring JDBC支持包 570
17.3 使用Hibernate訪問數(shù)據(jù)庫 572
17.3.1 Hibernate數(shù)據(jù)庫訪問流程 572
17.3.2 利用Spring的IoC容器創(chuàng)建SessionFactory 573
17.3.3 DAO的開發(fā) 575
17.3.4 Hibernate的事務(wù)管理 578
17.3.5 OpenSessionInView模式 579
17.4 小結(jié) 580
第18章 Spring MVC入門 581
18.1 簡介 581
18.2 準(zhǔn)備工作 581
18.2.1 初始化項目 581
18.2.2 編寫Ant構(gòu)建文件 582
18.3 使用Spring的MVC 589
18.3.1 Spring MVC簡介 589
18.3.2 配置DispatcherServlet 590
18.3.3 創(chuàng)建自己的控制器 591
18.3.4 頁面視圖的實現(xiàn) 592
18.3.5 配置控制器的映射 593
18.3.6 增加業(yè)務(wù)邏輯 596
18.3.7 增加前臺提交數(shù)據(jù)的處理功能 603
18.3.8 數(shù)據(jù)保存功能的實現(xiàn) 618
18.4 小結(jié) 625
第19章 Spring的Web集成 626
19.1 視圖集成技術(shù) 626
19.1.1 視圖和視圖解析器 626
19.1.2 集成前的準(zhǔn)備工作 627
19.1.3 JSP和JSTL的使用 629
19.1.4 XSLT的使用 630
19.1.5 PDF的輸出 632
19.1.6 Excel文件的輸出 634
19.1.7 視圖集成技術(shù)小結(jié) 636
19.2 Web框架集成技術(shù) 636
19.2.1 通用配置 636
19.2.2 Struts集成 637
19.3 小結(jié) 639
第20章 使用Struts+Spring+Hibernate架構(gòu)開發(fā)訂貨系統(tǒng) 640
20.1 Web應(yīng)用的體系結(jié)構(gòu) 641
20.1.1 表示層 641
20.1.2 持久層 642
20.1.3 業(yè)務(wù)層 642
20.1.4 域模型層 643
20.2 項目初始化 643
20.3 開發(fā)訂貨系統(tǒng) 644
20.3.1 域模型層的配置 645
20.3.2 持久層的配置 647
20.3.3 業(yè)務(wù)層的開發(fā)和配置 648
20.3.4 編寫服務(wù)Locator類 659
20.3.5 UI層(表示層)實現(xiàn) 659
20.4 小結(jié) 676