內容簡介
《Struts2+Spring3+Hibernate框架技術精講與整合案例》的重點是介紹當前流行的三個輕量級開源框架Struts 2、Spring 3和Hibernate的基礎知識,以及三個框架的整合案例開發。在知識點講解中,均結合了小案例的精講,以幫助讀者更好地理解和掌握。綜合示例均採用三層架構,按功能分類進行精講,各層之間分層清晰,層與層之間以松耦合的方法組織在一起,便於讀者理解每個功能的實現過程。
《Struts2+Spring3+Hibernate框架技術精講與整合案例》內容全面、易於理解、示例眾多,為讀者更好地使用Java EE這項技術和標準進行工作提供了很好的指導。書中既包含了簡單易懂的代碼片段,也有大量實際可用的套用系統示例,有利於讀者迅速掌握Java EE Web開發的核心技術。全書共分為6篇28章。
《Struts2+Spring3+Hibernate框架技術精講與整合案例》主要面向有Java語言基礎、從事Java EE Web開發的工程技術人員、高校學生和相關技術的愛好者,可作為大專院校Java EE Web程式開發課程的教材,也可作為Java EE Web程式開發人員的入門書籍和參考書,尤其適合於對Struts 2、Spring 3、Hibernate了解不夠深入,或對Struts 2 + Spring 3 + Hibernate整合開發不太熟悉的開發人員閱讀。
圖書目錄
第一篇 環境搭建篇
第1章 建立開發環境 3
1.1 建立Java的環境 3
1.1.1 JDK的下載和安裝 3
1.1.2 設定JAVA_HOME、CLASSPATH和Path 4
1.1.3 驗證JDK是否安裝成功 5
1.2 建立Tomcat環境 5
1.2.1 Tomcat簡介 6
1.2.2 Tomcat的下載 6
1.2.3 Tomcat的安裝配置 7
1.2.4 驗證Tomcat是否安裝成功 7
1.2.5 Tomcat的結構 8
1.3 搭建Java Web開發環境 8
1.3.1 MyEclipse的下載和安裝 9
1.3.2 在MyEclipse中配置環境 10
1.4 搭建MySQL資料庫環境 13
1.4.1 MySQL概述 13
1.4.2 MySQL的下載 14
1.4.3 MySQL的安裝與配置 15
1.4.4 SQLyog訪問伺服器 19
1.4.5 使用MySQL資料庫 19
1.5 創建和發布Web應用程式 21
1.5.1 創建Web項目、設計項目結構 21
1.5.2 編寫項目代碼、部署和運行Web項目 22
1.6 小結 24
第二篇 Java Web基礎篇
第2章 JSP技術 27
2.1 JSP技術簡介 27
2.1.1 JSP技術的特徵 27
2.1.2 JSP技術的原理 28
2.1.3 JSP程式的執行過程 29
2.2 JSP頁面的組成 33
2.2.1 靜態內容 33
2.2.2 JSP的注釋 34
2.2.3 JSP的指令元素 35
2.2.4 JSP的表達式 39
2.2.5 JSP的小腳本 40
2.2.6 JSP的聲明 41
2.2.7 JSP的動作標籤 41
2.3 JSP的內置對象 44
2.3.1 out對象 44
2.3.2 request對象 45
2.3.3 response對象 46
2.3.4 session對象 47
2.3.5 application對象 50
2.3.6 其他內置對象 51
2.4 四種屬性範圍 52
2.4.1 page屬性範圍 53
2.4.2 request屬性範圍 54
2.4.3 session屬性範圍 56
2.4.4 application屬性範圍 56
2.5 Servlet技術 57
2.5.1 Servlet簡介 57
2.5.2 創建第一個Servlet 57
2.5.3 Servlet的生命周期 58
2.5.4 Servlet的編譯和部署 59
2.5.5 Servlet的常用類和接口 61
2.6 JSTL和EL 62
2.6.1 EL表達式 62
2.6.2 EL的特點和使用簡介 62
2.6.3 EL語法 63
2.6.4 EL隱式對象 65
2.6.5 什麼是JSTL 66
2.6.6 使用JSTL 67
2.6.7 JSTL核心標籤庫 68
2.7 小結 70
第3章 用MVC架構實現Web項目開發 71
3.1 MVC的概述 71
3.1.1 MVC的思想及特點 71
3.1.2 常見的MVC技術 72
3.2 JDBC技術 73
3.2.1 JDBC簡介 73
3.2.2 通過JDBC連線MySQL資料庫 74
3.3 JavaBean 78
3.3.1 JavaBean簡介 78
3.3.2 在JSP中訪問JavaBean 78
3.3.3 JavaBean與MVC框架 80
3.4 使用MVC模式設計用戶登錄模組 81
3.4.1 項目設計簡介 81
3.4.2 模型設計 83
3.4.3 視圖設計 84
3.4.4 控制器設計 85
3.4.5 部署和運行程式 86
3.5 小結 86
第三篇 Struts 2框架篇
第4章 Struts 2概述 89
4.1 Struts 2基礎 89
4.1.1 Struts 2簡介 89
4.1.2 Struts 2的MVC模式 90
4.1.3 Struts 2的工作原理 91
4.2 配置Struts 2的運行環境 92
4.2.1 下載Struts 2框架 92
4.2.2 Struts 2的配置檔案 94
4.3 使用Struts 2實現Hello World示例 96
4.3.1 新建Web項目 96
4.3.2 添加Struts 2框架支持檔案 98
4.3.3 新建JSP頁面 98
4.3.4 在web.xml檔案中添加過濾器 99
4.3.5 創建業務控制器HelloAction類 99
4.3.6 編寫struts.xml配置檔案 100
4.3.7 部署測試項目 100
4.4 小結 101
第5章 Struts 2的架構和運行流程 103
5.1 Struts 2的系統架構 103
5.1.1 Struts 2的模組和運行流程 103
5.1.2 Struts 2各模組的說明 104
5.1.3 Struts 2的核心概念 105
5.2 Struts 2的基本流程 106
5.2.1 Struts 2的運行流程 106
5.2.2 核心控制器 109
5.2.3 業務控制器 110
5.2.4 模型組件 110
5.2.5 視圖組件 111
5.3 Struts 2的基本配置 111
5.3.1 web.xml檔案的配置 112
5.3.2 struts.xml檔案的配置 113
5.3.3 struts.properties檔案的配置 115
5.3.4 struts.xml檔案的結構 115
5.4 配置struts.xml 117
5.4.1 Bean的配置 117
5.4.2 常量的配置 118
5.4.3 包的配置 118
5.4.4 命名空間的配置 119
5.4.5 包含的配置 121
5.4.6 Action的配置 121
5.4.7 結果的配置 122
5.4.8 攔截器的配置 122
5.5 小結 123
第6章 Action和Result的配置 125
6.1 Action和Result的基礎 125
6.1.1 Action的基礎知識 125
6.1.2 Result的基礎知識 126
6.2 Action的實現 126
6.2.1 POJO的實現 126
6.2.2 實現Action接口 127
6.2.3 繼承ActionSupport 128
6.2.4 execute方法內部的實現 129
6.2.5 Struts 2訪問Servlet API 130
6.3 Action的配置 134
6.3.1 Struts 2中Action的作用 134
6.3.2 配置Action 135
6.3.3 分模組配置方式 135
6.3.4 動態方法調用 136
6.3.5 用method屬性處理調用方法 138
6.3.6 使用通配符 139
6.3.7 配置默認的Action 140
6.4 Action的數據 140
6.4.1 數據來源 140
6.4.2 基本的數據對應方式 141
6.4.3 傳入非String類型的值 144
6.4.4 如何處理傳入多個值 145
6.5 使用註解來配置Action 145
6.5.1 與Action配置相關的註解 145
6.5.2 使用註解配置Action示例 147
6.6 常用的Result類型 149
6.6.1 如何配置Result 149
6.6.2 預定義的ResultType 150
6.6.3 名稱為dispatcher的ResultType 152
6.6.4 名稱為redirect的ResultType 152
6.6.5 名稱為redirectAction的ResultType 154
6.6.6 名稱為chain的ResultType 156
6.6.7 其他ResultType 156
6.7 Result的配置 157
6.7.1 使用通配符動態配置Result 157
6.7.2 通過請求參數動態配置Result 157
6.7.3 全局Result 159
6.7.4 自定義Result 160
6.8 小結 160
第7章 Struts 2的攔截器 161
7.1 攔截器簡介 161
7.1.1 為什麼需要攔截器 161
7.1.2 攔截器的工作原理 162
7.2 攔截器的配置 163
7.2.1 配置攔截器 163
7.2.2 使用攔截器 164
7.2.3 默認攔截器 165
7.3 內建攔截器 166
7.3.1 內建攔截器介紹 166
7.3.2 內建攔截器的配置 167
7.4 自定義攔截器 168
7.4.1 實現攔截器類 168
7.4.2 自定義攔截器示例 169
7.5 深入攔截器 172
7.5.1 攔截器的方法過濾 172
7.5.2 使用攔截器實現許可權控制 173
7.6 小結 176
第8章 Struts 2的標籤庫 177
8.1 Struts 2標籤庫概述 177
8.2 Struts 2的表單標籤 178
8.2.1 表單標籤的公共屬性 178
8.2.2 簡單的表單標籤 179
8.2.3 標籤 180
8.2.4 標籤 182
8.2.5 標籤 184
8.2.6 標籤 185
8.2.7 標籤 185
8.2.8 標籤 186
8.2.9 標籤 187
8.2.10 標籤 188
8.3 Struts 2的非表單標籤 189
8.3.1 、和標籤 189
8.3.2 標籤 190
8.4 控制標籤 191
8.4.1 、、標籤 191
8.4.2 標籤 192
8.4.3 標籤 193
8.4.4 標籤 194
8.4.5 標籤 195
8.4.6 標籤 196
8.4.7 標籤 197
8.5 數據標籤 197
8.5.1 標籤 197
8.5.2 標籤 199
8.5.3 標籤 200
8.5.4 標籤 200
8.5.5 標籤 201
8.5.6 標籤 202
8.5.7 標籤 203
8.5.8 標籤 204
8.5.9 標籤 204
8.5.10 標籤 205
8.5.11 和標籤 205
8.6 小結 206
第9章 OGNL和類型轉換 207
9.1 OGNL和Struts 2 207
9.1.1 數據轉移和類型轉換 207
9.1.2 OGNL概述 207
9.1.3 OGNL表達式 208
9.1.4 OGNL如何融入框架 209
9.2 類型轉換 210
9.2.1 簡單類型轉換 210
9.2.2 使用OGNL表達式 212
9.3 自定義類型轉換器 216
9.3.1 基於OGNL的類型轉換器 216
9.3.2 基於Struts 2的類型轉換器 217
9.3.3 註冊自定義類型轉換器 218
9.4 類型轉換的錯誤處理 223
9.5 小結 224
第10章 Struts 2的驗證框架 225
10.1 數據校驗概述 225
10.2 編程實現Struts 2的數據校驗 226
10.2.1 重寫validate方法的數據校驗 226
10.2.2 重寫validateXxx方法的數據校驗 228
10.2.3 Struts 2的輸入校驗流程 230
10.3 Struts 2驗證框架 231
10.3.1 驗證框架的作用 232
10.3.2 編寫校驗規則檔案 232
10.3.3 校驗器的配置格式 233
10.3.4 常用的內置校驗器 235
10.3.5 校驗框架的運行流程 235
10.3.6 使用Struts 2驗證框架實現驗證 236
10.4 小結 240
第11章 Struts 2的國際化 241
11.1 國際化簡介 241
11.1.1 國際化概述 241
11.1.2 Java內置的國際化 243
11.1.3 資源檔案的定義和使用 244
11.1.4 使用占位符輸出動態內容 246
11.2 Struts 2國際化簡介 247
11.2.1 Struts 2實現國際化機制 247
11.2.2 配置全局資源檔案 247
11.2.3 載入資源檔案的方式 248
11.2.4 資源檔案的載入順序 249
11.3 使用Struts 2實現頁面國際化 250
11.3.1 手動設定語言環境實現國際化 250
11.3.2 自行選擇語言環境實現國際化 256
11.4 小結 258
第12章 Struts 2的檔案上傳和下載 259
12.1 檔案上傳 259
12.1.1 檔案上傳原理 259
12.1.2 使用Struts 2實現單個檔案上傳 260
12.1.3 動態設定檔案上傳 263
12.1.4 限制檔案的大小和類型 264
12.1.5 實現上傳多個檔案 266
12.1.6 通過添加檔案域上傳多個檔案 268
12.2 檔案下載 269
12.2.1 概述 269
12.2.2 使用Struts 2實現檔案下載 270
12.3 小結 271
第13章 Struts 2的Ajax支持 273
13.1 Ajax概述 273
13.1.1 Ajax的發展和套用 273
13.1.2 Ajax的核心技術 275
13.1.3 Ajax示例 276
13.2 Struts 2的Ajax標籤 277
13.2.1 Struts 2對Ajax的支持 278
13.2.2 標籤 278
13.2.3 和標籤 281
13.2.4 標籤 282
13.2.5 標籤 283
13.2.6 標籤 284
13.2.7 和標籤 285
13.2.8 標籤 286
13.2.9 標籤 287
13.3 常見框架外掛程式 288
13.3.1 jQuery 288
13.3.2 DWR 289
13.3.3 JSON 290
13.3.4 Struts 2、jQuery、JSON和Ajax聯合開發 291
13.4 小結 295
第14章 使用Struts 2實現用戶信息CRUD 297
14.1 概述 297
14.1.1 功能簡介 297
14.1.2 使用技術 297
14.1.3 準備開發環境 298
14.2 資料庫的設計 299
14.2.1 創建資料庫 299
14.2.2 創建數據表 300
14.3 實現Dao層 301
14.3.1 實現資料庫連線 302
14.3.2 實現數據訪問層 303
14.4 實現Biz層 307
14.5 使用Struts 2實現表現層 308
14.5.1 實現合併Action類 308
14.5.2 顯示全部用戶信息 309
14.5.3 添加用戶 311
14.5.4 修改用戶 314
14.5.5 刪除用戶 316
14.5.6 顯示用戶詳細信息 317
14.6 加入國際化 318
14.6.1 國際化信息檔案 318
14.6.2 使用國際化信息 319
14.7 相關輸入校驗 320
14.7.1 頁面添加驗證 321
14.7.2 驗證信息國際化 322
14.8 小結 323
第四篇 Hibernate框架篇
第15章 Hibernate初步 327
15.1 Hibernate概述 327
15.1.1 JDBC的困擾 327
15.1.2 Hibernate的優勢 327
15.1.3 持久化和ORM 328
15.1.4 Hibernate的體系結構 328
15.2 Hibernate入門 329
15.2.1 Hibernate的下載和安裝 329
15.2.2 Hibernate的執行流程 331
15.2.3 第一個Hibernate程式 331
15.3 使用Hibernate運算元據庫 341
15.3.1 使用Hibernate載入數據 341
15.3.2 使用Hibernate刪除數據 343
15.3.3 使用Hibernate修改數據 344
15.4 使用MyEclipse工具簡化資料庫開發 345
15.4.1 使用工具給項目添加Hibernate支持 345
15.4.2 使用工具自動生成實體類和映射檔案 350
15.4.3 編寫BaseHibernateDAO類 352
15.5 使用Annotation註解實現Hibernate零配置 356
15.5.1 給項目添加Annotation支持 357
15.5.2 生成帶註解的持久化類 357
15.5.3 測試Annotation註解 360
15.6 小結 361
第16章 Hibernate的關聯映射 363
16.1 單向多對一映射 363
16.1.1 多對一映射的配置 363
16.1.2 測試多對一映射 365
16.2 單向一對多映射 366
16.2.1 單向一對多映射的配置 366
16.2.2 測試一對多映射 367
16.3 雙向多對一映射 368
16.3.1 添加數據 368
16.3.2 刪除數據 374
16.3.3 更改數據 377
16.4 雙向一對一關聯映射 378
16.4.1 基於外鍵的一對一映射 378
16.4.2 基於主鍵的一對一映射 382
16.5 多對多關聯映射 386
16.5.1 多對多映射配置 386
16.5.2 添加數據 389
16.5.3 刪除數據 393
16.6 基於Annotation註解的關聯映射 394
16.6.1 多對一雙向關聯Annotation註解的實現 394
16.6.2 一對一雙向關聯Annotation註解的實現 402
16.6.3 多對多雙向關聯Annotation註解的實現 407
16.7 小結 413
第17章 Hibernate檢索方式 415
17.1 HQL查詢方式 415
17.1.1 基本查詢 415
17.1.2 動態實例查詢 420
17.1.3 分頁查詢 421
17.1.4 條件查詢 422
17.1.5 連線查詢 424
17.1.6 子查詢 429
17.2 QBC查詢 432
17.2.1 基本查詢 433
17.2.2 組合查詢 436
17.2.3 關聯查詢 437
17.2.4 分頁查詢 438
17.2.5 QBE查詢 439
17.2.6 離線查詢 441
17.3 小結 442
第18章 Hibernate進階 443
18.1 Hibernate的批量處理 443
18.1.1 批量插入 443
18.1.2 批量更新 447
18.1.3 批量刪除 448
18.2 Hibernate事務 450
18.2.1 事務的特性 450
18.2.2 並發控制 450
18.2.3 在Hibernate中使用事務 451
18.2.4 Hibernate的悲觀鎖和樂觀鎖 452
18.3 Hibernate快取 465
18.3.1 快取的概念 465
18.3.2 快取的範圍 465
18.3.3 Hibernate中的第一級快取 465
18.3.4 Hibernate中的第二級快取 470
18.3.5 Hibernate中的查詢快取 473
18.4 Hibernate使用資料庫連線池 476
18.4.1 配置數據源名稱 478
18.4.2 在Hibernate中使用資料庫連線池 480
18.5 Hibernate調用存儲過程 481
18.6 小結 484
第19章 Struts 2與Hibernate的整合 485
19.1 環境搭建 485
19.2 登錄功能的流程 486
19.3 實現DAO層 486
19.4 實現Biz層 487
19.5 實現Action 488
19.6 編寫配置檔案 489
19.6.1 配置struts.xml 489
19.6.2 配置web.xml 489
19.7 創建登錄頁面 490
19.8 小結 492
第五篇 Spring框架篇
第20章 Spring的基本套用 495
20.1 Spring簡介 495
20.1.1 Spring的背景 496
20.1.2 Spring的框架 496
20.2 一個簡單的Spring示例 496
20.2.1 搭建Spring開發環境 496
20.2.2 編寫HelloWorld類 499
20.2.3 配置applicationContext.xml檔案 499
20.2.4 編寫測試類 500
20.3 Spring核心機制:依賴注入 500
20.3.1 理解控制反轉 500
20.3.2 如何使用Spring的依賴注入 501
20.4 小結 503
第21章 深入Spring中的Bean 505
21.1 Bean工廠的ApplicationContext 505
21.2 Bean的作用域 506
21.3 Bean的裝配方式 508
21.3.1 基於XML的Bean裝配 508
21.3.2 基於Annotation的Bean裝配 512
21.3.3 自動Bean裝配 514
21.4 小結 515
第22章 面向方面編程(Spring AOP) 517
22.1 Spring AOP簡介 517
22.1.1 為什麼使用AOP 517
22.1.2 AOP的重要概念 517
22.2 基於代理類ProxyFactoryBean的AOP實現 518
22.2.1 編寫數據訪問層 518
22.2.2 編寫業務邏輯層 519
22.2.3 編寫方面代碼 519
22.2.4 將“業務邏輯代碼”和“方面代碼”組裝進 代理類 521
22.2.5 編寫測試類 522
22.3 Spring AOP通知(Advice) 523
22.3.1 後置通知(After Returning Advice) 523
22.3.2 異常通知(Throws Advice) 524
22.3.3 環繞通知(Interception Around Advice) 526
22.4 基於Schema的AOP實現 527
22.5 基於@AspectJ註解的AOP實現 531
22.6 小結 534
第23章 Spring整合Hibernate與Struts 2 535
23.1 Spring整合Hibernate 535
23.1.1 添加Spring和Hibernate支持 535
23.1.2 生成實體類和映射檔案 539
23.1.3 DAO開發 539
23.1.4 Biz層開發 541
23.1.5 配置ApplicationContext.xml 541
23.1.6 編寫測試類 542
23.2 Spring整合Struts 2 542
23.2.1 添加Struts 2支持 542
23.2.2 創建Action 543
23.2.3 Spring整合Struts 2的步驟 544
23.3 基於Annotation註解的SSH2整合 546
23.3.1 環境搭建 547
23.3.2 生成基於註解的實體類 547
23.3.3 基於註解的DAO開發 547
23.3.4 基於註解的Biz開發 548
23.3.5 基於註解的Action開發 549
23.3.6 修改相關的配置檔案 550
23.3.7 編寫頁面檔案 551
23.4 小結 552
第24章 Spring事務管理 553
24.1 Spring事務管理的方式 553
24.2 Spring 3聲明式事務管理 553
24.2.1 基於AOP的事務管理 554
24.2.2 基於@Transactional註解的事務管理 557
24.3 基於AOP事務管理實現銀行轉賬 558
24.3.1 生成實體類和映射檔案 558
24.3.2 實現DAO層 559
24.3.3 實現Biz層 560
24.3.4 創建Action 560
24.3.5 Spring中配置DAO、Biz和AccountManager 561
24.3.6 struts.xml中配置AccountManager類 562
24.3.7 配置基於AOP的聲明式事務 562
24.3.8 編寫轉賬頁面 562
24.3.9 聲明式事務測試 563
24.4 基於@Transactional註解實現銀行轉賬 564
24.5 小結 565
第25章 Spring Web 567
25.1 Spring MVC概述 567
25.2 配置DispatcherServlet 568
25.3 控制器 568
25.3.1 命令控制器 569
25.3.2 表單控制器 572
25.3.3 多動作控制器 576
25.4 處理器映射 578
25.5 視圖解析器 579
25.6 基於註解的Spring MVC 580
25.7 Spring MVC(註解)檔案上傳 586
25.8 Spring MVC國際化 588
25.9 小結 590
第六篇 SSH2項目示例篇
第26章 新聞發布系統 593
26.1 系統概述及需求分析 593
26.2 系統分析 594
26.3 資料庫設計 594
26.4 系統環境搭建 596
26.4.1 創建項目 596
26.4.2 添加Spring支持 596
26.4.3 添加Hibernate支持 598
26.4.4 添加Struts 2支持 601
26.4.5 配置事務管理 601
26.5 系統結構 602
26.6 生成實體類和映射檔案 603
26.7 新聞瀏覽 608
26.7.1 新聞瀏覽首頁 608
26.7.2 瀏覽新聞內容 618
26.8 管理員功能的實現 621
26.8.1 管理員登錄 621
26.8.2 新聞管理首頁 625
26.8.3 添加新聞 628
26.8.4 修改新聞 631
26.8.5 刪除新聞 633
26.8.6 添加主題 635
26.8.7 主題編輯頁 636
26.8.8 修改主題 637
26.8.9 刪除主題 640
26.9 小結 641
第27章 網上訂餐系統 643
27.1 系統概述及需求分析 643
27.2 系統分析 644
27.3 資料庫設計 645
27.4 系統環境搭建 647
27.5 配置事務管理 648
27.6 生成實體類和映射檔案 649
27.7 前台功能模組的實現 654
27.7.1 瀏覽餐品 654
27.7.2 查詢餐品 663
27.7.3 用戶和管理員登錄 664
27.7.4 購物車功能 669
27.7.5 訂單功能 674
27.8 後台功能模組實現 684
27.8.1 添加餐品 684
27.8.2 管理餐品 687
27.8.3 訂單處理 692
27.9 小結 699
第28章 網上銀行系統 701
28.1 系統概述 701
28.2 系統分析 701
28.2.1 系統目標 701
28.2.2 需求分析 702
28.3 資料庫設計 703
28.4 搭建開發環境 705
28.5 基於@Transactional註解的事務管理 706
28.6 生成實體類和映射檔案 707
28.7 客戶功能實現 710
28.7.1 系統登錄 710
28.7.2 客戶主頁面 716
28.7.3 修改密碼 717
28.7.4 修改個人信息 720
28.7.5 存款 726
28.7.6 取款 732
28.7.7 轉賬 735
28.7.8 查詢交易記錄 739
28.8 管理功能實現 744
28.8.1 管理員登錄 745
28.8.2 顯示用戶信息 747
28.8.3 查詢用戶 753
28.8.4 凍結、啟用功能 755
28.8.5 刪除用戶 757
28.8.6 開戶 758
28.9 小結 762