輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發(含CD光碟1張)
輕量級Java EE企業應用實戰(第4版):Struts 2+Spring4+Hibernate整合開發(含CD光碟1張)(國家級獎項獲獎作品升級版,四版累計印刷27次發行量超10萬冊的輕量級Java EE經典著作)
李剛 編著
ISBN 978-7-121-24253-3
2014年10月出版
定價:108.00元
824頁
16開
編輯推薦
國內知名IT圖書作家李剛老師基於曾榮獲中國書刊發行業協會“年度全行業優秀暢銷品種”大獎的《輕量級Java EE企業應用實戰(第3版)》全新升級;
本書內容升級到Struts 2.3、Spring 4.0、Hibernate 4.3;全書所有示例基於Java 8、Hibernate註解進行全面升級;
《輕量級Java EE企業應用實戰》新增Maven、SVN、Tomcat 8.0、Eclipse luna(4.4)等知識;
數百個小型案例及完整的工作流系統綜合案例幫讀者領略S2SH開發精髓;
《輕量級Java EE企業應用實戰》被多所“985”“211”院校選作教材;
最受程式設計師歡迎、影響力最大的國人原創S2SH應用開發必讀經典。
內容提要
《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》是《輕量級 Java EE 企業應用實戰》的第4 版,第4 版保持了前幾版內容全面、深入的特點,主要完成全部知識的升級。
《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》介紹了 Java EE 領域的三個開源框架:Struts2、Spring 和Hibernate。其中Struts 2 升級到2.3.16.3,Spring 升級到4.0.4,Hibernate 升級到4.3.5。《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring4+Hibernate整合開發》還全面介紹了Servlet 3.1 的新特性,以及Tomcat 8.0 的配置和用法,《輕量級JavaEE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》的示例也應該在Tomcat 8.0 上執行。
《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》重點介紹如何整合 Struts 2.3+Spring 4.0+Hibernate 4.3 進行Java EE 開發,主要包括三部分。第一部分介紹了Java EE 開發的基礎知識,以及如何搭建開發環境。第二部分詳細講解了Struts 2.3、Spring 4.0 和Hibernate 4.3 三個框架的用法,介紹三個框架時,以Eclipse IDE 的使用來上手,一步步帶領讀者深入三個框架的核心。這部分內容是筆者講授“瘋狂Java 實訓”的培訓講義,因此是《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》的重點部分。這部分內容既包含了筆者多年開發經歷的領悟,也融入了豐富的授課經驗。第三部分示範開發了一個包含7 個表,表之間具有複雜的關聯對映、繼承對映等關係,且業務也相對複雜的工作流案例,希望讓讀者理論聯絡實際,將三個框架真正運用到實際開發中去。該案例採用目前最流行、最規範的Java EE架構,整個應用分為領域物件層、DAO層、業務邏輯層、MVC 層和檢視層,各層之間分層清晰,層與層之間以鬆耦合的方法組織在一起。該案例既提供了IDE 無關的、基於Ant 管理的專案原始碼,也提供了基於Eclipse IDE 的專案原始碼,最大限度地滿足讀者的需求。
《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》不再介紹 Struts 1.x 相關內容,如果讀者希望獲取《輕量級J2EE 企業應用實戰》第1 版中關於Struts 1.x 的知識,請登入http://www.crazyit.org下載。當讀者閱讀此書遇到技術難題時,也可登入http://www.crazyit.org 發帖,筆者將會及時予以解答。
閱讀《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發》之前,建議先認真閱讀筆者所著的《瘋狂 Java 講義》一書。《輕量級Java EE企業應用實戰(第4版):Struts 2+Spring4+Hibernate整合開發》適合於有較好的Java 程式設計基礎,或有初步JSP、Servlet 基礎的讀者,尤其適合於對Struts 2、Spring、Hibernate 瞭解不夠深入,或對Struts2+Spring+Hibernate 整合開發不太熟悉的開發人員閱讀。
目錄
第1章 Java EE應用和開發環境 1
1.1 Java EE應用概述 2
1.1.1 Java EE應用的分層模型 2
1.1.2 Java EE應用的元件 3
1.1.3 Java EE應用的結構和優勢 4
1.1.4 常用的Java EE伺服器 4
1.2 輕量級Java EE應用相關技術 5
1.2.1 JSP、Servlet 3.x和JavaBean及替代技術 5
1.2.2 Struts 2.3及替代技術 5
1.2.3 Hibernate 4.3及替代技術 6
1.2.4 Spring 4.0及替代技術 6
1.3 Tomcat的下載和安裝 7
1.3.1 安裝Tomcat伺服器 7
1.3.2 配置Tomcat的服務埠 9
1.3.3 進入控制檯 9
1.3.4 部署Web應用 12
1.3.5 配置Tomcat的資料來源 12
1.4 Eclipse的安裝和使用 14
1.4.1 Eclipse的下載和安裝 14
1.4.2 線上安裝Eclipse外掛 14
1.4.3 從本地壓縮包安裝外掛 16
1.4.4 手動安裝Eclipse外掛 17
1.4.5 使用Eclipse開發Java EE應用 17
1.4.6 匯入Eclipse專案 20
1.4.7 匯入非Eclipse專案 21
1.5 Ant的安裝和使用 22
1.5.1 Ant的下載和安裝 22
1.5.2 使用Ant工具 23
1.5.3 定義生成檔案 24
1.5.4 Ant的任務(task) 29
1.6 Maven的安裝和使用 31
1.6.1 下載和安裝Maven 31
1.6.2 設定Maven 32
1.6.3 建立、構建簡單的專案 33
1.6.4 Maven的核心概念 36
1.6.5 依賴管理 41
1.6.6 POM檔案的元素 44
1.7 使用SVN進行協作開發 44
1.7.1 下載和安裝SVN伺服器 45
1.7.2 配置SVN資源庫 46
1.7.3 下載和安裝SVN客戶端 47
1.7.4 將專案釋出到伺服器 48
1.7.5 從伺服器下載專案 48
1.7.6 提交(Commit)修改 49
1.7.7 同步(Update)本地檔案 49
1.7.8 新增檔案和目錄 50
1.7.9 刪除檔案和目錄 50
1.7.10 檢視檔案或目錄的版本變革 51
1.7.11 從以前版本重新開始 51
1.7.12 建立分支 52
1.7.13 沿著分支開發 52
1.7.14 合併分支 53
1.7.15 使用Eclipse作為SVN客戶端 54
1.8 本章小結 57
第2章 JSP/Servlet及相關技術詳解 58
2.1 Web應用和web.xml檔案 59
2.1.1 構建Web應用 59
2.1.2 配置描述符web.xml 60
2.2 JSP的基本原理 61
2.3 JSP的4種基本語法 65
2.3.1 JSP註釋 65
2.3.2 JSP宣告 66
2.3.3 輸出JSP表示式 67
2.3.4 JSP指令碼 68
2.4 JSP的3個編譯指令 70
2.4.1 page指令 70
2.4.2 include指令 74
2.5 JSP的7個動作指令 75
2.5.1 forward指令 75
2.5.2 include指令 77
2.5.3 useBean、setProperty、getProperty指令 79
2.5.4 plugin指令 81
2.5.5 param指令 81
2.6 JSP指令碼中的9個內建物件 82
2.6.1 application物件 83
2.6.2 config物件 88
2.6.3 exception物件 90
2.6.4 out物件 92
2.6.5 pageContext物件 93
2.6.6 request物件 95
2.6.7 response物件 102
2.6.8 session物件 106
2.7 Servlet介紹 108
2.7.1 Servlet的開發 108
2.7.2 Servlet的配置 110
2.7.3 JSP/Servlet的生命週期 111
2.7.4 load-on-startup Servlet 112
2.7.5 訪問Servlet的配置引數 113
2.7.6 使用Servlet作為控制器 115
2.8 JSP 2的自定義標籤 119
2.8.1 開發自定義標籤類 120
2.8.2 建立TLD檔案 120
2.8.3 使用標籤庫 121
2.8.4 帶屬性的標籤 122
2.8.5 帶標籤體的標籤 125
2.8.6 以頁面片段作為屬性的標籤 128
2.8.7 動態屬性的標籤 129
2.9 Filter介紹 131
2.9.1 建立Filter類 132
2.9.2 配置Filter 133
2.9.3 使用URL Rewrite實現網站偽靜態 136
2.10 Listener介紹 137
2.10.1 實現Listener類 138
2.10.2 配置Listener 139
2.10.3 使用ServletContextAttributeListener 140
2.10.4 使用ServletRequestListener和ServletRequestAttributeListener 141
2.10.5 使用HttpSessionListener和HttpSessionAttributeListener 142
2.11 JSP 2特性 147
2.11.1 配置JSP屬性 147
2.11.2 表示式語言 149
2.11.3 Tag File支援 157
2.12 Servlet 3.0新特性 159
2.12.1 Servlet 3.0的註解 159
2.12.2 Servlet 3.0的Web模組支援 160
2.12.3 Servlet 3.0提供的非同步處理 162
2.12.4改進的Servlet API 165
2.13 Servlet 3.1新增的非阻塞式IO 167
2.14 Tomcat 8的WebSocket支援 170
2.15 本章小結 174
第3章 Struts 2的基本用法 175
3.1 MVC思想概述 176
3.1.1 傳統Model 1和Model 2 176
3.1.2 MVC思想及其優勢 177
3.2 Struts 2的下載和安裝 178
3.2.1 為Web應用增加Struts 2支援 178
3.2.2 在Eclipse中使用Struts 2 179
3.2.3 增加登入處理 180
3.3 Struts 2的流程 183
3.3.1 Struts 2應用的開發步驟 183
3.3.2 Struts 2的流程 184
3.4 Struts 2的常規配置 185
3.4.1 常量配置 185
3.4.2 包含其他配置檔案 191
3.5 實現Action 191
3.5.1 Action介面和ActionSupport基類 193
3.5.2 Action訪問Servlet API 195
3.5.3 Action直接訪問Servlet API 197
3.5.4 使用ServletActionContext訪問Servlet API 199
3.6 配置Action 200
3.6.1 包和名稱空間 200
3.6.2 Action的基本配置 203
3.6.3 使用Action的動態方法呼叫 204
3.6.4 指定method屬性及使用萬用字元 205
3.6.5 配置預設Action 211
3.6.6 配置Action的預設處理類 211
3.7 配置處理結果 212
3.7.1 理解處理結果 212
3.7.2 配置結果 213
3.7.3 Struts 2支援的結果型別 214
3.7.4 plainText結果型別 215
3.7.5 redirect結果型別 217
3.7.6 redirectAction結果型別 218
3.7.7 動態結果 219
3.7.8 Action屬性值決定物理檢視資源 219
3.7.9 全域性結果 221
3.7.10 使用PreResultListener 222
3.8 配置Struts 2的異常處理 223
3.8.1 Struts 2的異常處理機制 223
3.8.2 宣告式異常捕捉 225
3.8.3 輸出異常資訊 226
3.9 Convention外掛與“約定”支援 227
3.9.1 Action的搜尋和對映約定 228
3.9.2 按約定對映Result 230
3.9.3 Action鏈的約定 233
3.9.4 自動重載入對映 234
3.9.5 Convention外掛的相關常量 234
3.9.6 Convention外掛相關Annotation 235
3.10 使用Struts 2的國際化 235
3.10.1 檢視頁面的國際化 235
3.10.2 Action的國際化 236
3.10.3 使用包範圍的國際化資源 238
3.10.4 使用全域性國際化資源 239
3.10.5 輸出帶佔位符的國際化訊息 241
3.10.6 載入資原始檔的順序 243
3.11 使用Struts 2的標籤庫 243
3.11.1 Struts 2標籤庫概述 243
3.11.2 使用Struts 2標籤 244
3.11.3 Struts 2的OGNL表示式語言 245
3.11.4 OGNL中的集合操作 247
3.11.5 訪問靜態成員 248
3.11.6 Lambda()表示式 248
3.11.7 控制標籤 249
3.11.8 資料標籤 259
3.11.9 主題和模板 268
3.11.10 自定義主題 270
3.11.11 表單標籤 271
3.11.12 非表單標籤 284
3.12 本章小結 287
第4章 深入使用Struts 2 288
4.1 詳解Struts 2的型別轉換 289
4.1.1 Struts 2內建的型別轉換器 290
4.1.2 基於OGNL的型別轉換 290
4.1.3 指定集合元素的型別 292
4.1.4 自定義型別轉換器 294
4.1.5 註冊型別轉換器 297
4.1.6 基於Struts 2的自定義型別轉換器 298
4.1.7 處理Set集合 299
4.1.8 型別轉換中的錯誤處理 301
4.2 使用Struts 2的輸入校驗 307
4.2.1 編寫校驗規則檔案 307
4.2.2 國際化提示資訊 310
4.2.3 使用客戶端校驗 311
4.2.4 欄位校驗器配置風格 312
4.2.5 非欄位校驗器配置風格 313
4.2.6 短路校驗器 315
4.2.7 校驗檔案的搜尋規則 316
4.2.8 校驗順序和短路 318
4.2.9 內建校驗器 318
4.2.10 基於註解的輸入校驗 329
4.2.11 手動完成輸入校驗 330
4.3 使用Struts 2控制檔案上傳 334
4.3.1 Struts 2的檔案上傳 334
4.3.2 實現檔案上傳的Action 335
4.3.3 配置檔案上傳的Action 337
4.3.4 手動實現檔案過濾 338
4.3.5 攔截器實現檔案過濾 340
4.3.6 輸出錯誤提示 341
4.3.7 檔案上傳的常量配置 342
4.4 使用Struts 2控制檔案下載 343
4.4.1 實現檔案下載的Action 343
4.4.2 配置Action 343
4.4.3 下載前的授權控制 344
4.5 詳解Struts 2的攔截器機制 345
4.5.1 攔截器在Struts 2中的作用 346
4.5.2 Struts 2內建的攔截器 346
4.5.3 配置攔截器 348
4.5.4 使用攔截器的配置語法 349
4.5.5 配置預設攔截器 350
4.5.6 實現攔截器類 351
4.5.7 使用攔截器 353
4.5.8 攔截方法的攔截器 354
4.5.9 攔截器的執行順序 356
4.5.10 攔截結果的監聽器 358
4.5.11 覆蓋攔截器棧裡特定攔截器的引數 359
4.5.12 使用攔截器完成許可權控制 360
4.6 使用Struts 2的Ajax支援 362
4.6.1 使用stream型別的Result實現Ajax 363
4.6.2 JSON的基本知識 365
4.6.3 實現Action邏輯 367
4.6.4 JSON外掛與json型別的Result 368
4.6.5 實現JSP頁面 370
4.7 本章小結 371
第5章 Hibernate的基本用法 372
5.1 ORM和Hibernate 373
5.1.1 物件/關聯式資料庫對映(ORM) 373
5.1.2 基本對映方式 374
5.1.3 流行的ORM框架簡介 375
5.1.4 Hibernate概述 376
5.2 Hibernate入門 376
5.2.1 Hibernate下載和安裝 376
5.2.2 Hibernate的資料庫操作 377
5.2.3 在Eclipse中使用Hibernate 381
5.3 Hibernate的體系結構 386
5.4 深入Hibernate配置檔案 388
5.4.1 建立Configuration物件 388
5.4.2 hibernate.properties檔案與hibernate.cfg.xml檔案 390
5.4.3 JDBC連線屬性 390
5.4.4 資料庫方言 391
5.4.5 JNDI資料來源的連線屬性 393
5.4.6 Hibernate事務屬性 393
5.4.7 二級快取相關屬性 393
5.4.8 外連線抓取屬性 394
5.4.9 其他常用的配置屬性 394
5.5 深入理解持久化物件 394
5.5.1 持久化類的要求 395
5.5.2 持久化物件的狀態 396
5.5.3 改變持久化物件狀態的方法 397
5.6 深入Hibernate對映 399
5.6.1 對映屬性 402
5.6.2 對映主鍵 409
5.6.3 使用Hibernate的主鍵生成策略 411
5.6.4 對映集合屬性 412
5.6.5 集合屬性的效能分析 419
5.6.6 有序集合對映 420
5.6.7 對映資料庫物件 422
5.7 對映元件屬性 424
5.7.1 元件屬性為集合 426
5.7.2 集合屬性的元素為元件 427
5.7.3 元件作為Map的索引 429
5.7.4 元件作為複合主鍵 430
5.7.5 多列作為聯合主鍵 432
5.8 使用傳統的對映檔案 433
5.8.1 增加XML對映檔案 433
5.8.2 註解,還是XML對映檔案 436
5.9 本章小結 436
第6章 深入使用Hibernate 437
6.1 Hibernate的關聯對映 438
6.1.1 單向N-1關聯 438
6.1.2 單向1-1關聯 443
6.1.3 單向1-N關聯 444
6.1.4 單向N-N關聯 448
6.1.5 雙向1-N關聯 449
6.1.6 雙向N-N關聯 452
6.1.7 雙向1-1關聯 454
6.1.8 元件屬性包含的關聯實體 456
6.1.9 基於複合主鍵的關聯關係 458
6.1.10 複合主鍵的成員屬性為關聯實體 460
6.1.11 持久化的傳播性 463
6.2 繼承對映 464
6.2.1 整個類層次對應一個表的對映策略 466
6.2.2 連線子類的對映策略 468
6.2.3 每個具體類對應一個表的對映策略 471
6.3 Hibernate的批量處理 473
6.3.1 批量插入 473
6.3.2 批量更新 474
6.3.3 DML風格的批量更新/刪除 475
6.4 使用HQL查詢 476
6.4.1 HQL查詢 476
6.4.2 HQL查詢的from子句 478
6.4.3 關聯和連線 479
6.4.4 HQL查詢的select子句 482
6.4.5 HQL查詢的聚集函式 482
6.4.6 多型查詢 483
6.4.7 HQL查詢的where子句 483
6.4.8 表示式 484
6.4.9 order by子句 486
6.4.10 group by子句 486
6.4.11 子查詢 487
6.4.12 命名查詢 487
6.5 條件查詢 489
6.5.1 關聯和動態關聯 491
6.5.2 投影、聚合和分組 493
6.5.3 離線查詢和子查詢 496
6.6 SQL查詢 497
6.6.1 標量查詢 497
6.6.2 實體查詢 499
6.6.3 處理關聯和繼承 501
6.6.4 命名SQL查詢 502
6.6.5 呼叫儲存過程 504
6.6.6 使用定製SQL 505
6.7 資料過濾 507
6.8 事務控制 510
6.8.1 事務的概念 510
6.8.2 Session與事務 511
6.8.3 上下文相關的Session 513
6.9 二級快取和查詢快取 514
6.9.1 開啟二級快取 514
6.9.2 管理快取和統計快取 517
6.9.3 使用查詢快取 518
6.10 事件機制 520
6.10.1 攔截器 521
6.10.2 事件系統 523
6.11 本章小結 525
第7章 Spring的基本用法 526
7.1 Spring簡介和Spring 4.0的變化 527
7.1.1 Spring簡介 527
7.1.2 Spring 4.0的變化 528
7.2 Spring入門 528
7.2.1 Spring下載和安裝 528
7.2.2 使用Spring管理Bean 529
7.2.3 在Eclipse中使用Spring 532
7.3 Spring的核心機制:依賴注入 535
7.3.1 理解依賴注入 536
7.3.2 設值注入 538
7.3.3 構造注入 541
7.3.4 兩種注入方式的對比 543
7.4 使用Spring容器 543
7.4.1 Spring容器 544
7.4.2 使用ApplicationContext 545
7.4.3 ApplicationContext的國際化支援 546
7.4.4 ApplicationContext的事件機制 548
7.4.5 讓Bean獲取Spring容器 551
7.5 Spring容器中的Bean 552
7.5.1 Bean的基本定義和Bean別名 553
7.5.2 容器中Bean的作用域 554
7.5.3 配置依賴 557
7.5.4 設定普通屬性值 559
7.5.5 配置合作者Bean 560
7.5.6 使用自動裝配注入合作者Bean 561
7.5.7 注入巢狀Bean 563
7.5.8 注入集合值 564
7.5.9 組合屬性 568
7.5.10 Spring的Bean和JavaBean 569
7.6 Spring 3.0提供的Java配置管理 571
7.7 建立Bean的3種方式 573
7.7.1 使用構造器建立Bean例項 574
7.7.2 使用靜態工廠方法建立Bean 574
7.7.3 呼叫例項工廠方法建立Bean 576
7.8 深入理解容器中的Bean 578
7.8.1 抽象Bean與子Bean 578
7.8.2 Bean繼承與Java繼承的區別 580
7.8.3 容器中的工廠Bean 580
7.8.4 獲得Bean本身的id 582
7.8.5 強制初始化Bean 583
7.9 容器中Bean的生命週期 584
7.9.1 依賴關係注入之後的行為 584
7.9.2 Bean銷燬之前的行為 586
7.9.3 協調作用域不同步的Bean 589
7.10 高階依賴關係配置 592
7.10.1 獲取其他Bean的屬性值 592
7.10.2 獲取Field值 595
7.10.3 獲取方法返回值 596
7.11 基於XML Schema的簡化配置方式 599
7.11.1 使用p:名稱空間簡化配置 599
7.11.2 使用c:名稱空間簡化配置 601
7.11.3 使用util:名稱空間簡化配置 602
7.12 Spring 3.0提供的表示式語言(SpEL) 604
7.12.1 使用Expression介面進行表示式求值 604
7.12.2 Bean定義中的表示式語言支援 606
7.12.3 SpEL語法詳述 607
7.13 本章小結 612
第8章 深入使用Spring 613
8.1 兩種後處理器 614
8.1.1 Bean後處理器 614
8.1.2 Bean後處理器的用處 617
8.1.3 容器後處理器 618
8.1.4 屬性佔位符配置器 619
8.1.5 重寫佔位符配置器 620
8.2 Spring的“零配置”支援 622
8.2.1 搜尋Bean類 622
8.2.2 指定Bean的作用域 625
8.2.3 使用@Resource配置依賴 625
8.2.4 使用@PostConstruct和@PreDestroy定製生命週期行為 626
8.2.5 Spring 3.0新增的註解 627
8.2.6 Spring 4.0增強的自動裝配和精確裝配 627
8.3 資源訪問 631
8.3.1 Resource實現類 632
8.3.2 ResourceLoader介面和ResourceLoaderAware介面 636
8.3.3 使用Resource作為屬性 639
8.3.4 在ApplicationContext中使用資源 640
8.4 Spring的AOP 643
8.4.1 為什麼需要AOP 643
8.4.2 使用AspectJ實現AOP 644
8.4.3 AOP的基本概念 651
8.4.4 Spring的AOP支援 652
8.4.5 基於註解的“零配置”方式 653
8.4.6 基於XML配置檔案的管理方式 667
8.5 Spring 3.1新增的快取機制 673
8.5.1 啟用Spring快取 674
8.5.2 使用@Cacheable執行快取 676
8.5.3 使用@CacheEvict清除快取 680
8.6 Spring的事務 681
8.6.1 Spring支援的事務策略 681
8.6.2 使用XML Schema配置事務策略 686
8.6.3 使用@Transactional 692
8.7 Spring整合Struts 2 693
8.7.1 啟動Spring容器 693
8.7.2 MVC框架與Spring整合的思考 694
8.7.3 讓Spring管理控制器 695
8.7.4 使用自動裝配 699
8.8 Spring整合Hibernate 701
8.8.1 Spring提供的DAO支援 701
8.8.2 管理Hibernate的SessionFactory 702
8.8.3 實現DAO元件的基類 703
8.8.4 傳統的HibernateTemplate和HibernateDaoSupport 706
8.8.5 實現DAO元件 709
8.8.6 使用IoC容器組裝各種元件 709
8.8.7 使用宣告式事務 712
8.9 Spring整合JPA 713
8.9.1 管理EntityManagerFactory 713
8.9.2 實現DAO元件基類 715
8.9.3 使用宣告式事務 718
8.10 本章小結 719
第9章 企業應用開發的思考和策略 720
9.1 企業應用開發面臨的挑戰 721
9.1.1 可擴充套件性、可伸縮性 721
9.1.2 快捷、可控的開發 722
9.1.3 穩定性、高效性 722
9.1.4 花費最小化,利益最大化 723
9.2 如何面對挑戰 723
9.2.1 使用建模工具 723
9.2.2 利用優秀的框架 723
9.2.3 選擇性地擴充套件 725
9.2.4 使用程式碼生成器 726
9.3 常見設計模式精講 726
9.3.1 單例模式 727
9.3.2 簡單工廠 728
9.3.3 工廠方法和抽象工廠 734
9.3.4 代理模式 737
9.3.5 命令模式 742
9.3.6 策略模式 745
9.3.7 門面模式 748
9.3.8 橋接模式 750
9.3.9 觀察者模式 754
9.4 常見的架構設計策略 757
9.4.1 貧血模型 757
9.4.2 領域物件模型 760
9.4.3 合併業務邏輯物件與DAO物件 762
9.4.4 合併業務邏輯物件和Domain Object 763
9.4.5 拋棄業務邏輯層 764
9.5 本章小結 765
第10章 簡單工作流系統 766
10.1 專案背景及系統結構 767
10.1.1 應用背景 767
10.1.2 系統功能介紹 767
10.1.3 相關技術介紹 768
10.1.4 系統結構 768
10.1.5 系統的功能模組 769
10.2 Hibernate持久層 770
10.2.1 設計持久化實體 770
10.2.2 建立持久化實體類 771
10.3 實現DAO層 777
10.3.1 DAO元件的定義 778
10.3.2 實現DAO元件 780
10.3.3 部署DAO層 783
10.4 實現Service層 784
10.4.1 業務邏輯元件的設計 785
10.4.2 實現業務邏輯元件 785
10.4.3 事務管理 790
10.4.4 部署業務邏輯元件 791
10.5 實現任務的自動排程 791
10.5.1 使用Quartz 791
10.5.2 在Spring中使用Quartz 795
10.6 實現系統Web層 798
10.6.1 Struts 2和Spring的整合 798
10.6.2 控制器的處理順序圖 799
10.6.3 員工登入 799
10.6.4 進入打卡 802
10.6.5 處理打卡 803
10.6.6 進入申請 805
10.6.7 提交申請 806
10.6.8 使用攔截器完成許可權管理 808
10.7 本章小結 809
作者簡介
李剛,十多年軟體行業開發從業經驗,瘋狂軟體教育中心教學總監。
瘋狂Java實訓營創始人,瘋狂Java體系原創圖書作者。
廣東技術師範學院電腦科學系兼職副教授,51CTO專家門診特邀嘉賓。
培訓的學生已在華為、IBM、阿里軟體、網易、電信盈科等名企就職。
國內著名高階IT技術作家,已出版《瘋狂Java講義》《瘋狂Android講義》《輕量級Java EE企業應用實戰》《瘋狂iOS講義》《瘋狂Ajax講義》《瘋狂XML講義》《經典Java EE企業應用實戰》《瘋狂HTML 5/CSS 3/JavaScript講義》《Struts 2.x權威指南》等著作。其中瘋狂Java體系圖書經多年沉澱,贏得極高的市場認同,多次重印成為超級暢銷書,並被多所“985”“211”院校選作教材。部分圖書已被翻譯成繁體中文版,授權到臺灣地區。
前言
經過多年沉澱,Java EE平臺已經成為電信、金融、電子商務、保險、證券等各行業的大型應用系統的首選開發平臺。目前Java行業的軟體開發已經基本穩定,這兩三年內基本沒有出現什麼具有廣泛影響力的新技術。Java EE開發大致可分為兩種方式:以Spring為核心的輕量級Java EE企業開發平臺;以EJB3+JPA為核心的經典Java EE開發平臺。無論使用哪種平臺進行開發,應用的效能、穩定性都有很好的保證,開發人群也有很穩定的保證。
本書介紹的開發平臺,就是以Struts 2.3+Spring 4.0+Hibernate 4.3(實際專案中可能以JPA來代替Hibernate)為核心的輕量級Java EE,這種組合在保留經典JavaEE應用架構、高度可擴充套件性、高度可維護性的基礎上,降低了Java EE應用的開發、部署成本,對於大部分中小型企業應用是第一首選。在一些需要具有高度伸縮性、高度穩定性的企業應用(比如銀行系統、保險系統)裡,以EJB 3+JPA為核心的經典Java EE應用則具有一定的佔有率。本書姊妹篇《經典Java EE企業應用實戰》主要介紹了後一種JavaEE開發平臺。
本書主要升級了《輕量級Java EE企業應用實戰》的知識,本書採用最新的Tomcat 8作為Web伺服器,全面而細緻地介紹了Servlet 3.1的新特性,並將Struts 2升級到Struts 2.3.16.3,Spring升級到4.0.4,Hibernate升級到4.3.5。詳細介紹了Spring和Hibernate的“零配置”特性,並充分介紹了Struts2的Convention(約定)支援。為了順應技術的改變,本書介紹Hibernate持久化對映已經全部升級為註解方式,不再採用傳統的XML對映方式;本書還詳細介紹了Spring 3.1新增的快取機制,包括使用@Cacheable執行快取、使用@CacheEvict清除快取等、也詳細介紹了Spring 4.0的改變,包括增強的自動裝配和精確裝配等。
本書創作感言
筆者首先要感謝廣大讀者對本書前幾版的認同,本書前幾版累計發行近十萬冊,並獲得中國書刊發行業協會頒發的“2011年度全行業優秀暢銷品種”大獎,且多次獲得電子工業出版社頒發的“最暢銷圖書獎”。是廣大讀者的選擇讓“瘋狂Java體系”圖書大放異彩;是廣大讀者的支援讓我在孤獨的技術創作道路上堅持求索;是廣大讀者的反饋讓“瘋狂Java體系”圖書日臻完美。
廣大讀者的熱情對我來說既是支援,又是責任——“瘋狂Java體系”圖書有責任必須完美!因此筆者在改進、升級“瘋狂Java體系”圖書時,有一種如履薄冰的感覺,希望以最大的努力來貢獻最好的作品。
另外,本書還有一本配套的姊妹篇:《經典Java EE企業應用實戰》。學習本書時可以採用“輕經合參”的方式來學習:“輕”指的是以“SSH”整合的輕量級Java EE開發平臺,“經”指的是以“EJB3+JPA”整合的經典Java EE開發平臺;這兩種平臺本身具有很大的相似性,將兩種Java EE開發平臺結構放在一起參考、對照著學習,能更好地理解Spring、Hibernate框架的設計思想,從而更深入地掌握它們。與此同時,也可以深入理解EJB 3與Spring容器中的Bean、EJB容器與Spring容器之間的聯絡和區別,從而融會貫通地掌握EJB3+JPA整合的開發方式。
在介紹非常專業的程式設計知識之時,筆者總會通過一些淺顯的類比來幫助讀者更好地理解。“簡單、易讀”成為筆者一貫堅持的創作風格,也是“瘋狂Java體系”圖書的特色。另一方面,“瘋狂Java體系”圖書的知識也很全面、實用。筆者希望讀者在看完“瘋狂Java體系”的圖書之後,可以較為輕鬆地理解書中所介紹的知識,並切實學會一種實用的開發技術,進而將之應用到實際開發中。萬一讀者在學習過程中遇到無法理解的問題,可以登入瘋狂Java聯盟(http://www.crazyit.org)與廣大Java學習者交流,筆者也會通過該平臺與大家一起交流、學習。
本書有什麼特點
本書保持了《輕量級Java EE企業應用實戰》前幾版簡單、實用的優勢,同樣堅持讓案例說話、以案例來介紹知識點的風格。本書最後同樣示範開發了企業工作流案例,希望讀者通過該案例真正步入實際企業開發的殿堂。
本書依然保留了《輕量級Java EE企業應用實戰》前幾版的三個特色。
1.經驗豐富,針對性強
筆者既擔任過軟體開發的技術經理,也擔任過軟體公司的培訓導師,還從事過職業培訓的專職講師。這些經驗影響了筆者寫書的目的,不是一本學院派的理論讀物,而是一本實際的開發指南。
2.內容實際,實用性強
本書所介紹的Java EE應用範例,採用了目前企業流行的開發架構,絕對嚴格遵守Java EE開發規範,而不是將各種技術雜亂地糅合在一起號稱Java EE。讀者參考本書的架構,完全可以身臨其境地感受企業實際開發。
3.高屋建瓴,啟發性強
本書介紹的幾種架構模式,幾乎是時下最全面的Java EE架構模式。這些架構模式可以直接提升讀者對系統架構設計的把握。
本書寫給誰看
如果你已經掌握Java SE內容,或已經學完了《瘋狂Java講義》一書,那你非常適合閱讀此書。除此之外,如果你已有初步的JSP、Servlet基礎,甚至對Struts 2、Spring 4.0、Hibernate 4.3有所瞭解,但希望掌握它們在實際開發中應用,本書也將非常適合你。如果你對Java的掌握還不熟練,則建議遵從學習規律,循序漸進,暫時不要購買、閱讀此書,而是按照《瘋狂Java學習路線圖》中的建議順序學習。
李剛
2014-8-19
相關文章
- 《輕量級Java EE企業應用實戰:Struts 2+Spring 3+Hibernate整合開發 第3版》pdf 附下載連結JavaSpring
- 《企業級ios應用開發實戰》一第1章企業應用的話題iOS
- Java EE 6之企業應用開發Java
- 使用MyEclipse開發Java EE應用:企業級應用程式專案(下)EclipseJava
- 使用MyEclipse開發Java EE應用:企業級應用程式專案(上)EclipseJava
- 《Java EE網際網路輕量級框架整合開發》讀書筆記Java框架筆記
- 如何快速開發Java RCP企業級應用?Java
- 《Storm企業級應用:實戰、運維和調優》——第2章開始使用StormORM運維
- Solon 1.6.25 釋出,輕量級應用開發框架框架
- Java開發實戰1200例(第1卷+第2卷)pdf教程+隨書光碟原始碼Java原始碼
- Spring 3.x 企業應用開發實戰Spring
- Solon 1.6.18 釋出,輕量級應用開發框架框架
- 《SpringBoot實戰開發》——基於Gradle+Kotlin的企業級應用開發最佳實踐Spring BootGradleKotlin
- Python 如何開發高效漂亮的輕量級 Web 應用?PythonWeb
- Java的企業應用開發死期已到Java
- SpringCloud微服務實戰——搭建企業級開發框架(十一):整合OpenFeign用於微服務間呼叫SpringGCCloud微服務框架
- 企業級 Web 開發的挑戰Web
- Linux企業級開發技術(1)——epoll企業級開發之簡介Linux
- 用Servlet開發企業級三層Web應用(一) (轉)ServletWeb
- ASP.NET Core 6 從入門到企業級實戰開發應用技術彙總ASP.NET
- 快速構建企業級應用的開發平臺
- 企業應用整合之BizTalk
- 30.2. 企業級開發進階2.2:TCP實戰TCP
- 支援國產ETL etl-engine 用go寫的輕量級etl引擎 方便整合到各企業中Go
- Cordova - 使用Cordova開發iOS應用實戰1(配置、開發第一個應用)iOS
- 企業級大資料中臺架構實戰【1】大資料架構
- hibernate《輕量級框架應用與開發--S2SH》筆記框架筆記
- 阿里專家分享:企業級大資料輕量雲實踐阿里大資料
- 《HiWind企業快速開發框架實戰》(1)框架的工作原理框架
- SpringCloud微服務實戰——搭建企業級開發框架(十四):整合Sentinel高可用流量管理框架【限流】SpringGCCloud微服務框架
- 關於企業級應用和web開發的區別Web
- SpringCloud微服務實戰——搭建企業級開發框架(十五):整合Sentinel高可用流量管理框架【熔斷降級】SpringGCCloud微服務框架
- 《精通Spring4.x企業應用開發實戰》第二章Spring
- Java從零到企業級電商專案實戰Java
- 使用MyEclipse開發Java EE應用:EJB專案開發初探(上)EclipseJava
- 使用MyEclipse開發Java EE應用:EJB專案開發初探(下)EclipseJava
- Go 實戰|使用 Wails 構建輕量級的桌面應用:仿微信登入介面 DemoGoAI
- 使用Memcached改進Java企業級應用效能(1):架構和設定Java架構