內容簡介
本書介紹了Java EE輕量級的三個開源框架:Struts2、Hibernate和Spring。其中在Struts2部分主要講解
MVC設計思想,
Struts2的處理流程及配置,Struts2常用控制器組件,以及Struts2常用標籤庫的使用。在
Hibernate部分主要講解O/R Mapping的設計理念,Hibernate對O/R Mapping的支持,Hibernate的配置及多種關係映射的實現,以及HQL查詢數據。在Spring部分主要講解IoC的原理,Spring對Bean的管理機制,Spring AOP編程,以及聲明事務的配置和管理。
本書重點突出、偏重套用,結合理論篇的實例和實踐篇對貫穿案例進行講解、剖析及實現。實踐篇貫穿案例線上考試系統採用S2SH框架,以任務驅動及依次累加的方式,實現一個完整的項目並貫穿整本書的技術知識點,使讀者加深
Struts2、
Hibernate、
Spring框架的套用及整合技巧,全面提高動手能力。
前 言
隨著IT產業的迅猛發展,企業對套用型人才的需求越來越大。“全面貼近企業需求,無縫打造專業實用人才”是目前高校
計算機專業教育的革新方向。
該系列教材是面向高等院校軟體專業方向的標準化教材。教材研發充分結合軟體企業的用人需求,經過了充分的調研和論證,並充分參照多所高校一線專家的意見,具有系統性、實用性等特點。旨在使讀者在系統掌握軟體開發知識的同時,著重培養其
綜合套用能力和解決問題的能力。
該系列教材具有如下幾個特色。
1. 以套用型人才為導向來培養學生
強調實踐:本系列教材以套用型軟體及外包人才為培養目標,在原有體制教育的基礎上對課程進行了改革,強化“套用型”技術的學習。使學生在經過系統、完整的學習後能夠達到如下要求:
具備軟體開發工作所需的理論知識和操作技能,能熟練進行編碼工作,並掌握軟體開發過程的規範;
具備一定的項目經驗,包括代碼的調試、文檔編寫、軟體測試等內容;
相當於一年的軟體開發經驗。
2. 以實用技能為核心來組織教學
二八原則:遵循企業生產過程中的“二八原則”,即企業生產過程中80%的時間在使用20%的核心技術,強調核心教學,即學生在學校用80%的學習時間來掌握企業中所用到的核心技術,從而保證對企業常用技術的掌握。教材內容精而專,同時配以知識拓展和拓展練習,以滿足不同層次的教學和學習需求。
3. 以新穎的教材架構來引導學習
自成體系:本系列教材採用的教材架構打破了傳統的以知識為標準編寫教材的方法,採用“全真案例”和“任務驅動”的組織模式。
理論篇:即最小教學集,包含了“二八原則”中提到的常用技術,以任務驅動引導知識點的學習,所選任務不但典型、實用,而且具有很強的趣味性和可操作性,引導學生循序漸進地理解和掌握這些知識和技能,培養學生的
邏輯思維能力,掌握利用開發語言進行程式設計的必備知識和技巧。
實踐篇:多點於一線,以完整的具體案例貫穿始終,力求使學生在動手實踐的過程中,加深課程內容的理解,培養學生獨立思考和解決問題的能力,並配備相關知識的拓展講解和拓展練習,拓寬學生的知識面。
結構靈活:本系列教材在內容設定上借鑑了軟體開發中“低
耦合高內聚”的設計理念,組織架構上遵循軟體開發中的MVC理念,即在課程的實施過程中各高校可根據自身的實際情況(課程配比、時間安排、學生水平、教學情況等),在保證最小教學集的前提下可對整個課程體系進行橫向(章節內容)、縱向(章節)裁剪。
4. 提供全面的教輔產品來輔助教學實施
為充分體現“實境耦合”的教學模式,方便教學實施,另外還開發了可配套使用的項目實訓教材和全套教輔產品,可供各院校選購:
項目篇:多線於一面,以輔助教材的形式,提供適應當前課程(及先行課程)的綜合項目,遵循軟體開發過程,進行講解、分析、設計、指導,注重工作過程的系統性,培養學生解決實際問題的能力,是實施“實境”教學的關鍵環節。
立體配套:為適應教學模式和教學方法的改革,本系列教材提供完備的教輔產品,主要包括教學指導、實驗指導、電子課件、習題集、實踐案例等內容,並配以相應的
網路教學資源。教學實施方面,提供全方位的解決方案(課程體系解決方案、實訓解決方案、教師培訓解決方案和就業指導解決方案等),以適應軟體開發
教學過程的特殊性。
2011年6月
目錄
理論篇 1
第1章 Java EE套用 2
1.1 Java EE概述 4
1.1.2 Model1與Model2 5
1.1.3 MVC思想及其優勢 6
1.2.1 實現控制器 7
1.3 Java EE架構技術 13
1.3.1 JSP&Servlet 13
1.3.2 Struts2介紹 13
1.3.3 Hibernate介紹 14
1.3.4 Spring介紹 14
1.3.5 EJB3.0介紹 14
小結 15
練習 15
第2章 Struts2基礎 17
2.1 Struts2概述 19
2.1.1 Struts2起源背景 19
2.1.2 Struts2框架結構 19
2.1.3 Struts2控制器組件 20
2.1.4 Struts2的配置檔案 21
2.1.5 Struts2的標籤庫 23
2.1.6 Struts2的處理步驟 23
2.2.1 配置套用環境 23
2.2.2 創建輸入視圖 25
2.2.3 實現業務邏輯類 25
2.2.4 創建業務控制器 26
2.2.5 配置業務控制器 27
2.2.6 創建結果視圖 28
2.2.7 運行 29
小結 29
練習 30
第3章 Struts2深入 31
3.1 配置檔案詳解 33
3.1.1 常量配置 33
3.1.2 包配置 35
3.1.3 命名空間配置 36
3.1.4 包含配置 38
3.2 Action詳解 39
3.2.1 Action實現 39
3.2.2 Action訪問ActionContext 46
3.2.3 Action直接訪問Servlet API 49
3.2.4 Action的配置 51
3.2.5 動態方法調用 52
3.3 處理結果 56
3.3.1 結果處理流程 57
3.3.2 result配置 57
3.3.3 result類型 59
3.3.4 動態result 63
3.4.1 Struts2異常處理機制 64
3.4.2 異常的配置 65
小結 66
練習 67
4.1 Struts2標籤庫概述 71
4.1.1 標籤庫簡介 71
4.1.2 標籤庫的組成 71
4.2 Struts2中使用OGNL 73
4.2.1 OGNL與值棧 73
4.2.2 OGNL語法 76
4.2.3 OGNL集合表達式 77
4.3 數據標籤 78
4.3.1 property標籤 79
4.3.2 param標籤 80
4.3.3 bean標籤 80
4.3.4 set標籤 83
4.3.5 include標籤 84
4.3.6 url標籤 85
4.4 控制標籤 87
4.4.1 if/elseif/else標籤 88
4.4.2 iterator標籤 89
4.5 主題和模板 92
4.5.1 主題 93
4.5.2 模板 95
4.6 表單標籤 95
4.6.1 checkboxlist標籤 96
4.6.2 datetimepicker標籤 97
4.6.3 doubleselect標籤 99
4.6.4 optiontransferselect標籤 101
4.6.5 optgroup標籤 102
4.7 非表單標籤 104
4.7.1 actionerror和actionmessage標籤 104
4.7.2 tree和treenode標籤 105
小結 107
練習 108
第5章 Hibernate基礎 109
5.1 Hibernate概述 111
5.1.1 ORM框架 111
5.1.2 Hibernate概述 112
5.2 Hibernate套用開發方式 115
5.3 Hibernate套用示例 115
5.3.3 利用Configuration裝載配置 119
5.4 Hibernate配置檔案詳解 125
5.4.1 hibernate.cfg.xml 126
5.4.2 hibernate.properties 126
5.4.3 聯合使用 127
5.5 Hibernate映射檔案詳解 128
5.5.1 映射檔案結構 128
5.5.2 主鍵生成器 129
5.5.3 映射集合屬性 130
5.6 持久化對象 131
5.6.1 持久化對象狀態 131
5.6.2 改變持久化對象狀態的方法 132
小結 136
練習 137
第6章 Hibernate核心技能 138
6.1 Hibernate關聯關係 140
6.1.1 一對多關聯關係 140
6.1.2 級聯關係 151
6.1.3 一對一關聯關係 154
6.1.4 多對多關聯 156
6.2 Hibernate批量處理 162
6.2.1 批量插入 162
6.2.2 批量更新 163
6.3 Hibernate檢索方式 165
6.4.2 使用別名 169
6.4.3 結果排序 170
6.4.4 分頁查詢 171
6.4.5 檢索一條記錄 173
6.4.6 設定查詢條件 175
6.4.7 HQL中綁定參數 179
6.4.9 投影、分組與統計 187
6.4.10 動態查詢 192
6.4.12 查詢方式比較 199
6.5 Hibernate事務管理 200
6.5.2 Hibernate中的事務 202
小結 203
練習 203
第7章 Spring基礎 205
7.1 Spring概述 207
7.1.1 Spring起源背景 207
7.1.2 Spring體系結構 207
7.2 IoC容器 209
7.2.1 IoC概述 209
7.2.2 BeanFactory 210
7.2.3 ApplicationContext 211
7.2.4 Bean的生命周期 213
7.3 IoC容器中裝配Bean 213
7.3.1 Spring配置檔案 214
7.3.2 Bean基本配置 214
7.3.3 依賴注入的方式 215
7.3.4 注入值的類型 220
7.3.5 Bean間關係 224
7.3.6 Bean作用域 225
7.3.7 自動裝配 227
小結 229
練習 230
第8章 Spring深入 231
8.1 Spring AOP 233
8.1.1 AOP思想和本質 233
8.1.2 AOP術語 233
8.1.3 Advice類型 235
8.1.4 基於XML配置的AOP 236
8.1.5 基於Annotation配置的AOP 246
8.2 Spring事務管理 250
8.2.1 Spring的事務策略 251
小結 262
練習 263
第9章 框架集成 264
9.1 Spring集成Struts2 266
9.1.2 集成步驟 266
9.2 Spring集成Hibernate 270
9.2.1 配置SessionFactory 271
9.2.2 使用HibernateTemplate 273
9.2.3 使用HibernateDaoSupport 273
9.2.5 OSIV模式 279
小結 280
練習 281
實踐篇 283
實踐1 Struts2基礎 284
實踐指導 284
實踐1.G.1 284
實踐1.G.2 291
實踐1.G.3 292
知識拓展 296
拓展練習 298
練習1.E.1 298
實踐2 Struts2深入 299
實踐指導 299
實踐2.G.1 299
實踐2.G.2 305
知識拓展 309
1. 攔截器 309
2. 輸入校驗 315
拓展練習 323
練習2.E.1 323
練習2.E.2 323
實踐3 Struts2標籤庫 324
實踐指導 324
實踐3.G.1 324
實踐3.G.2 333
實踐3.G.3 345
實踐3.G.4 356
知識拓展 361
2. 在Struts2下集成Ext JS 371
拓展練習 376
練習3.E.1 376
實踐4 實體類及映射檔案 377
實踐指導 377
實踐4.G.1 377
實踐4.G.2 378
實踐4.G.3 380
知識拓展 384
1. Hibernate的性能最佳化 384
2. 映射繼承關係 393
拓展練習 401
練習4.E.1 401
實踐5 業務類及DAO 402
實踐指導 402
實踐5.G.1 402
實踐5.G.2 406
實踐5.G.3 411
知識拓展 415
3. 自定義類型 420
拓展練習 426
練習5.E.1 426
練習5.E.2 426
練習5.E.3 426
實踐6 框架集成 427
實踐指導 427
實踐6.G.1 427
實踐6.G.2 438
實踐6.G.3 439
知識拓展 447
拓展練習 448
練習6.E.1 448
實踐7 AOP套用 449
實踐指導 449
實踐7.G.1 449
實踐7.G.2 451
知識拓展 462
1. 任務調度 462
拓展練習 468
練習7.E.1 468
實踐8 項目完善 469
實踐指導 469
實踐8.G.1 469
實踐8.G.2 473
實踐8.G.3 475
知識拓展 481
2. 使用JavaMail收發郵件 485
拓展練習 491
練習8.E.1 491
附錄A 常見Java EE框架 492
附錄B 常用開源類庫 494