輕量級Java EE企業應用實戰(第5版)——Struts 2+Spring 5+Hibernate 5/JPA 2整合開發(DVD光盤1) 轻量级Java EE企业应用实战(第5版)-Struts 2+Spring 5+Hibernate 5/JPA 2整合开发

李剛

立即出貨 (庫存 < 3)

買這商品的人也買了...

相關活動主題

20180802 %e6%9c%80%e6%96%b0%e5%88%b0%e8%b2%a8small

商品描述

本書是《輕量級Java EE企業應用實戰》的第5版,這一版保持了前幾版內容全面、深入的特點,主要完成全部知識的升級。本書介紹了Java EE領域的四個開源框架和技術:Struts 2、Spring、Hibernate和JPA。其中Struts 2升級到2.5.14,Spring升級到5.0.2,Hibernate升級到5.2.12。第5版新增介紹了JPA的內容,包括其API的基本用法、JPA查詢、JPA動態條件查詢等。本書還全面介紹了Servlet 3.1的新特性,以及Tomcat 8.5的配置和用法,本書的示例也應該在Tomcat 8.5上運行。本書重點介紹瞭如何整合Struts 2.5+Spring 5.0+Hibernate 5.2進行Java EE開發,主要包括三部分。第一部介紹了Java EE開發的基礎知識,以及如何搭建開發環境。第二部分詳細講解了Struts 2.5、Spring 5.0、Hibernate 5.2、JPA的用法,在介紹三個框架時,以Eclipse IDE的使用來上手,一步步帶領讀者深入這些技術的核心。這部分內容是筆者講授“瘋狂Java實訓”的培訓講義,因此是本書的重點部分。這部分內容既包含了筆者多年開發經歷的領悟,也融入了豐富的授課經驗。第三部分示範開發了一個包含7個表,表之間具有復雜的關聯映射、繼承映射等關系,且業務也相對復雜的工作流案例,希望讓讀者理論聯系實際,將三個框架真正運用到實際開發中。該案例採用目前非常流行、規範的Java EE架構,整個應用分為領域對象層、DAO層、業務邏輯層、MVC層和視圖層,各層之間分層清晰,層與層之間以松耦合的方式組織在一起。該案例既提供了與IDE無關的、基於Ant管理的項目源碼,也提供了基於Eclipse IDE的項目源碼,以最大限度地滿足讀者的需求。本書不再介紹Struts 1.x相關內容,如果讀者希望獲取《輕量級Java EE企業應用實戰》第1版中關於Struts 1.x的知識,請登錄http://www.crazyit.org下載。當讀者閱讀此書遇到技術難題時,也可登錄http://www.crazyit.org發帖,筆者將會及時予以解答。在閱讀本書之前,建議先認真閱讀筆者所著的《瘋狂Java講義》一書。本書適合於有較好的Java編程基礎,或者有初步JSP、Servlet基礎的讀者閱讀。本書尤其適合於對Struts 2、Spring、Hibernate瞭解不夠深入,或者對Struts 2+ Spring+Hibernate整合開發不太熟悉的開發人員閱讀。

作者簡介

李剛
十餘年軟件開發從業經驗,瘋狂軟件教育中心教學總監。瘋狂Java實訓營創始人,瘋狂Java體係原創圖書作者。廣東技術師範學院計算機科學系兼職副教授,CSDN特邀講師。培訓的學生已在騰訊、阿里、華為、IBM、網易、唯品會、電信盈科等名企就職。國內知名高端IT技術圖書作家,已出版《瘋狂Java講義》《瘋狂Android講義》《輕量級Java EE企業應用實戰》《瘋狂前端開發講義》《瘋狂HTML5/CSS3/JavaScript講義》《瘋狂iOS講義(基礎篇)(提高篇)》《瘋狂XML講義》《經典JavaEE企業應用實戰》《Struts 2.x quanwei指南》等著作。其中瘋狂Java體系圖書均已沉澱多年,贏得極高的市場認同,多次重印,多部著作印刷數量超過10萬冊,並被多所“985”“211”院校選作教材,部分圖書已被翻譯成繁體中文版,授權到中國台灣地區。

目錄大綱

第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.5及替代技術5 
1.2.3 Hibernate 5.2及替代技術6 
1.2 .4 Spring 5.0及替代技術6 
1.3 Tomcat的下載和安裝7 
1.3.1安裝Tomcat服務器8 
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插件15 
1.4.3從本地壓縮包安裝插件17 
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的下載和安裝23 
1.5.2使用Ant工具23 
1.5.3定義生成文件25 
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文件的元素43 
1.7使用SVN進行協作開發44 
1.7.1下載和安裝SVN服務器45 
1.7.2配置SVN資源庫45 
1.7.3下載和安裝SVN客戶端47 
1.7.4將項目發佈到服務器47 
1.7.5從服務器下載項目48 
1.7.6提交(Commit)修改48 
1.7.7同步(Update)本地文件48 
1.7.8添加文件和目錄49 
1.7.9刪除文件和目錄50 
1.7.10查看文件或目錄的版本變革50 
1.7. 11從以前版本重新開始50 
1.7.12創建分支51 
1.7.13沿著分支開發51
1.7.14合併分支52 
1.7.15使用Eclipse作為SVN客戶端52 
1.8使用Git進行軟件配置管理(SCM) 55 
1.8.1下載和安裝Git、TortoiseGit 56 
1.8.2創建本地資源庫58 
1.8.3添加( Add)文件和目錄59 
1.8.4提交(Commit)修改60 
1.8.5查看文件或目錄的版本變更61 
1.8.6刪除文件和目錄62 
1.8.7從以前版本重新開始62 
1.8.8克隆(Clone)項目63 
1.8.9創建分支64 
1.8.10沿著分支開發64 
1.8.11合併分支65 
1.8.12使用Eclipse作為Git客戶端65 
1.8.13配置遠程中央資源庫67 
1.8.14推送(Push)項目69 
1.8.15獲取(Fetch)項目和拉取(Pull)項目70 
1.9本章小結72 

第2章JSP/Servlet及相關技術詳解73 
2.1 Web應用和web.xml文件74 
2.1.1構建Web應用74 
2.1.2配置描述符web.xml 75 
2.2 JSP的基本原理76 
2.3 JSP的4種基本語法80 
2.3.1 JSP註釋80
2.3.2 JSP聲明81 
2.3.3 JSP輸出表達式82 
2.3.4 JSP小腳本83 
2.4 JSP的3個編譯指令85 
2.4.1 page指令85 
2.4.2 include指令89 
2.5 JSP的7個動作指令90 
2.5 .1 forward指令90 
2.5.2 include指令92 
2.5.3 useBean、setProperty、getProperty指令93 
2.5.4 plugin指令96 
2.5.5 param指令96 
2.6 JSP腳本中的9個內置對象96 
2.6.1 application對象98 
2.6 .2 config對象103 
2.6.3 exception對象105 
2.6.4 out對象107 
2.6.5 pageContext對象108 
2.6.6 request對象109 
2.6.7 response對象116 
2.6.8 session對象120 
2.7 Servlet介紹122 
2.7.1 Servlet的開發122 
2.7.2 Servlet的配置124 
2.7.3 JSP/Servlet的生命週期125 
2.7.4 load-on-startup Servlet 126
2.7.5訪問Servlet的配置參數127 
2.7.6使用Servlet作為控制器129 
2.8 JSP 2的自定義標籤133 
2.8.1開發自定義標籤類133 
2.8.2建立TLD文件134 
2.8.3使用標籤庫135 
2.8 .4帶屬性的標籤136 
2.8.5帶標籤體的標籤139 
2.8.6以頁面片段作為屬性的標籤141 
2.8.7動態屬性的標籤143 
2.9 Filter介紹144 
2.9.1創建Filter類145 
2.9.2配置Filter 146 
2.9.3使用URL Rewrite實現網站偽靜態149 
2.10 Listener介紹150 
2.10.1實現Listener類151 
2.10.2配置Listener 152 
2.10.3使用ServletContextAttributeListener 153 
2.10.4使用ServletRequestListener和ServletRequestAttributeListener 154 
2.10.5使用HttpSessionListener和HttpSessionAttributeListener 155 
2.11 JSP 2特性160 
2.11.1配置JSP屬性160 
2.11.2表達式語言162
2.11.3 Tag File支持170 
2.12 Servlet 3新特性172 
2.12.1 Servlet 3的註解172 
2.12.2 Servlet 3的Web模塊支持172 
2.12.3 Servlet 3提供的異步處理174 
2.12.4改進的Servlet API 177 
2.13 Servlet 3.1新增的非阻塞式IO 180 
2.14 Tomcat 8.5的WebSocket支持182 
2.15本章小結187 

第3章Struts 2的基本用法188 
3.1 MVC思想概述189 
3.1.1傳統Model 1和Model 2 189 
3.1.2 MVC思想及其優勢190 
3.2 Struts 2的下載和安裝191 
3.2.1為Web應用增加Struts 2支持191 
3.2.2在Eclipse中使用Struts 2 192 
3.2.3增加登錄處理193 
3.3 Struts 2的流程196 
3.3.1 Struts 2應用的開發步驟196 
3.3.2 Struts 2的運行流程197 
3.4 Struts 2的常規配置198 
3.4.1常量配置198 
3.4.2包含其他配置文件204 
3.5實現Action 204
3.5.1 Action接口和ActionSupport基類206 
3.5.2 Action訪問Servlet API 208 
3.5.3 Action直接訪問Servlet API 210 
3.5.4使用ServletActionContext訪問Servlet API 212 
3.6配置Action 212 
3.6.1包和命名空間213 
3.6. 2 Action的基本配置216 
3.6.3使用Action的動態方法調用217 
3.6.4指定method屬性及使用通配符219 
3.6.5配置默認Action 224 
3.6.6配置Action的默認處理類225 
3.7配置處理結果225 
3.7. 1理解處理結果225 
3.7.2配置結果226 
3.7.3 Struts 2支持的結果類型227 
3.7.4 plainText結果類型229 
3.7.5 redirect結果類型230 
3.7.6 redirectAction結果類型231 
3.7.7動態結果232 
3.7. 8 Action屬性值決定物理視圖資源232 
3.7.9全局結果234 
3.7.10使用PreResultListener 235 
3.8配置Struts 2的異常處理236
3.8.1 Struts 2的異常處理機制236 
3.8.2聲明式異常捕捉238 
3.8.3輸出異常信息239 
3.9 Convention插件與“約定”支持240 
3.9.1 Action的搜索和映射約定241 
3.9.2按約定映射Result 243 
3.9.3 Action鏈的約定246 
3.9.4自動重加載映射247 
3.9.5 Convention插件的相關常量247 
3.9.6 Convention插件相關註解248 
3.10使用Struts 2的國際化248 
3.10.1視圖頁面的國際化249 
3.10.2 Action的國際化250 
3.10.3使用包範圍的國際化資源251 
3.10.4使用全局國際化資源252 
3.10.5輸出帶佔位符的國際化消息254 
3.10.6加載資源文件的順序256 
3.11使用Struts 2的標籤庫256 
3.11.1 Struts 2標籤庫概述256 
3.11.2使用Struts 2標籤257 
3.11.3 Struts 2的OGNL表達式語言258 
3.11.4 OGNL中的集合操作260 
3.11.5訪問靜態成員261 
3.11.6 Lambda(?)表達式261
3.11.7控制標籤262 
3.11.8數據標籤271 
3.11.9主題和模板279 
3.11.10自定義主題281 
3.11.11表單標籤282 
3.11.12非表單標籤294 
3.12本章小結297 

第4章深入使用Struts 2 298 
4.1詳解Struts 2的類型轉換299 
4.1.1 Struts 2內建的類型轉換器299 
4.1.2基於OGNL的類型轉換300 
4.1.3指定集合元素的類型302 
4.1.4自定義類型轉換器304 
4.1. 5註冊類型轉換器306 
4.1.6基於Struts 2的自定義類型轉換器308 
4.1.7處理Set集合308 
4.1.8類型轉換中的錯誤處理311 
4.2使用Struts 2的輸入校驗316 
4.2.1編寫校驗規則文件316 
4.2.2國際化提示信息319 
4.2.3使用客戶端校驗320 
4.2.4字段校驗器配置風格321 
4.2.5非字段校驗器配置風格322 
4.2.6短路校驗器324 
4.2.7校驗文件的搜索規則325 
4.2.8校驗順序和短路327 
4.2.9內建校驗器327
4.2.10基於註解的輸入校驗337 
4.2.11手動完成輸入校驗339 
4.3使用Struts 2控製文件上傳342 
4.3.1 Struts 2的文件上傳342 
4.3.2實現文件上傳的Action 343 
4.3.3配置文件上傳的Action 345 
4.3.4手動實現文件過濾347 
4.3.5攔截器實現文件過濾348 
4.3.6輸出錯誤提示349 
4.3.7文件上傳的常量配置350 
4.4使用Struts 2控製文件下載351 
4.4.1實現文件下載的Action 351 
4.4.2配置Action 352 
4.4.3下載前的授權控制352 
4.5詳解Struts 2的攔截器機制353 
4.5.1攔截器在Struts 2中的作用354 
4.5.2 Struts 2內建的攔截器354 
4.5.3配置攔截器356 
4.5.4使用攔截器的配置語法357 
4.5.5配置默認攔截器358 
4.5.6實現攔截器類360 
4.5.7使用攔截器361 
4.5.8攔截方法的攔截器362 
4.5.9攔截器的執行順序365 
4.5.10攔截結果的監聽器366
4.5.11覆蓋攔截器棧里特定攔截器的參數367 
4.5.12使用攔截器完成權限控制368 
4.6使用Struts 2的Ajax支持370 
4.6.1使用stream類型的Result實現Ajax 370 
4.6.2 JSON的基本知識372 
4.6.3實現Action邏輯375 
4.6.4 JSON插件與json類型的Result 376 
4.6.5實現JSP頁面377 
4.7本章小結378 

第5章Hibernate的基本用法380 
5.1 ORM和Hibernate 381 
5.1.1對象/關係數據庫映射(ORM) 381 
5.1.2基本映射方式382 
5.1.3流行的ORM框架簡介383 
5.1.4 Hibernate概述383 
5.2 Hibernate入門384 
5.2.1 Hibernate下載和安裝384 
5.2.2 Hibernate的數據庫操作385 
5.2.3在Eclipse中使用Hibernate 389 
5.3 Hibernate的體系結構392 
5.4深入Hibernate配置文件393 
5.4.1創建Configuration對象393 
5.4.2 hibernate.properties文件與hibernate.cfg.xml文件396
5.4.3 JDBC連接屬性396 
5.4.4數據庫方言397 
5.4.5 JNDI數據源的連接屬性398 
5.4.6 Hibernate事務屬性399 
5.4.7二級緩存相關屬性399 
5.4.8外連接抓取屬性399 
5.4. 9其他常用的配置屬性400 
5.5深入理解持久化對象400 
5.5.1持久化類的要求400 
5.5.2持久化對象的狀態401 
5.5.3改變持久化對象狀態的方法402 
5.6深入Hibernate映射405 
5.6. 1映射屬性407 
5.6.2映射主鍵415 
5.6.3使用Hibernate的主鍵生成器417 
5.6.4映射集合屬性418 
5.6.5集合屬性的性能分析424 
5.6.6有序集合映射426 
5.6.7映射數據庫對象427 
5.7映射組件屬性430 
5.7.1組件屬性為集合432 
5.7.2集合屬性的元素為組件433 
5.7.3組件作為Map的索引434 
5.7.4組件作為複合主鍵436 
5.7.5多列作為聯合主鍵438 
5.8使用傳統的映射文件439 
5.8.1增加XML映射文件439
5.8.2註解,還是XML映射文件441 
5.9本章小結442 

第6章深入使用Hibernate與JPA 443 
6.1 Hibernate的關聯映射444 
6.1.1單向N-1關聯444 
6.1.2單向1-1關聯449 
6.1 .3單向1-N關聯450 
6.1.4單向N-N關聯453 
6.1.5雙向1-N關聯455 
6.1.6雙向N-N關聯458 
6.1.7雙向1-1關聯459 
6.1.8組件屬性包含的關聯實體461 
6.1.9基於復合主鍵的關聯關係463 
6.1.10複合主鍵的成員屬性為關聯實體464 
6.1.11持久化的傳播性467 
6.2繼承映射468 
6.2.1整個類層次對應一個表的映射策略470 
6.2.2連接子類的映射策略472 
6.2.3每個具體類對應一個表的映射策略475 
6.3批量處理策略477 
6.3.1批量插入477 
6.3.2 JPA與Hibernate 478 
6.3.3 JPA的批量插入479 
6.3.4批量更新481 
6.3.5 DML風格的批量更新/刪除481 
6.3.6 JPA的DML支持482
6.4 HQL查詢和JPQL查詢483 
6.4.1 HQL查詢483 
6.4.2 JPQL查詢485 
6.4.3 from子句487 
6.4.4關聯和連接487 
6.4.5查詢的select子句490 
6.4.6 HQL查詢的聚集函數491 
6.4.7多態查詢491 
6.4.8 HQL查詢的where子句492 
6.4.9表達式493 
6.4.10 order by子句495 
6.4.11 group by子句495 
6.4.12子查詢495 
6.4.13命名查詢496 
6.5動態條件查詢497 
6.5.1執行DML語句501 
6.5.2 select的用法502 
6.5.3元組查詢503 
6.5.4多Root查詢504 
6.5.5關聯和動態關聯505 
6.5.6分組、聚集和排序508 
6.6原生SQL查詢510 
6.6.1標量查詢510 
6.6.2實體查詢511 
6.6.3處理關聯和繼承514 
6.6.4命名SQL查詢515 
6.6.5調用存儲過程517 
6.6.6使用定制SQL 518
6.6.7 JPA的原生SQL查詢520 
6.7數據過濾524 
6.8事務控制526 
6.8.1事務的概念527 
6.8.2 Session與事務527 
6.8.3上下文相關的Session 529 
6.9二級緩存和查詢緩存530 
6.9.1開啟二級緩存530 
6.9.2管理緩存和統計緩存533 
6.9.3使用查詢緩存534 
6.10事件機制537 
6.10.1攔截器537 
6.10.2事件系統539 
6.11本章小結541 

第7章Spring的基本用法542 
7.1 Spring簡介和Spring 5.0的變化543 
7.1.1 Spring簡介543 
7.1.2 Spring 5.0的變化544 
7.2 Spring入門544 
7.2.1 Spring下載和安裝544 
7.2.2使用Spring管理Bean 545 
7.2.3在Eclipse中使用Spring 548 
7.3 Spring的核心機制:依賴注入551 
7.3.1理解依賴注入552 
7.3.2設值注入553 
7.3.3構造注入557 
7.3.4兩種注入方式的對比558
7.4使用Spring容器559 
7.4.1 Spring容器559 
7.4.2使用ApplicationContext 560 
7.4.3 ApplicationContext的國際化支持562 
7.4.4 ApplicationContext的事件機制563 
7.4.5讓Bean獲取Spring容器566 
7.5 Spring容器中的Bean 568 
7.5.1 Bean的基本定義和Bean別名568 
7.5.2容器中Bean的作用域569 
7.5.3配置依賴572 
7.5.4設置普通屬性值574 
7.5.5配置合作者Bean 575 
7.5.6使用自動裝配注入合作者Bean 575 
7.5.7注入嵌套Bean 578 
7.5.8注入集合值579 
7.5.9組合屬性583 
7.5.10 Spring的Bean和JavaBean 584 
7.6 Spring提供的Java配置管理585 
7.7創建Bean的3種方式588 
7.7.1使用構造器創建Bean實例588 
7.7.2使用靜態工廠方法創建Bean 589 
7.7.3調用實例工廠方法創建Bean 591 
7.8深入理解容器中的Bean 593 
7.8.1抽象Bean與子Bean 593
7.8.2 Bean繼承與Java繼承的區別595 
7.8.3容器中的工廠Bean 595 
7.8.4獲得Bean本身的id 597 
7.8.5強制初始化Bean 598 
7.9容器中Bean的生命週期598 
7.9.1依賴關係注入之後的行為599 
7.9.2 Bean銷毀之前的行為601 
7.9.3協調作用域不同步的Bean 603 
7.10高級依賴關係配置606 
7.10.1獲取其他Bean的屬性值607 
7.10.2獲取Field值609 
7.10.3獲取方法返回值611 
7.11基於XML Schema的簡化配置方式614 
7.11.1使用p:命名空間簡化配置614 
7.11.2使用c:命名空間簡化配置615 
7.11.3使用util:命名空間簡化配置617 
7.12 Spring提供的表達式語言(SpEL) 619 
7.12.1使用Expression接口進行表達式求值619 
7.12.2 Bean定義中的表達式語言支持621 
7.12.3 SpEL語法詳述622 
7.13本章小結627 

第8章深入使用Spring 628 
8.1兩種後處理器629 
8.1.1 Bean後處理器629
8.1.2 Bean後處理器的用處633 
8.1.3容器後處理器633 
8.1.4屬性佔位符配置器634 
8.1.5重寫佔位符配置器636 
8.2 Spring的“零配置”支持637 
8.2. 1搜索Bean類637 
8.2.2指定Bean的作用域640 
8.2.3使用@Resource和@Value配置依賴640 
8.2.4使用@PostConstruct和@PreDestroy定制生命週期行為641 
8.2.5使用@DependsOn和@Lazy改變初始化行為642 
8.2.6自動裝配和精確裝配643 
8.2.7 Spring 5新增的註解647 
8.2.8使用@Required檢查注入648 
8.3資源訪問648 
8.3.1 Resource實現類649 
8.3.2 ResourceLoader接口和ResourceLoaderAware接口653 
8.3.3使用Resource作為屬性655 
8.3.4在ApplicationContext中使用資源656 
8.4 Spring的AOP 660 
8.4.1為什麼需要AOP 660 
8.4.2使用AspectJ實現AOP 661 
8.4.3 AOP的基本概念667 
8.4.4 Spring的AOP支持668
8.4.5基於註解的“零配置”方式669 
8.4.6基於XML配置文件的管理方式684 
8.5 Spring的緩存機制690 
8.5.1啟用Spring緩存690 
8.5.2使用@Cacheable執行緩存693 
8.5.3使用@ CacheEvict清除緩存696 
8.6 Spring的事務698 
8.6.1 Spring支持的事務策略698 
8.6.2使用XML Schema配置事務策略702 
8.6.3使用@Transactional 708 
8.7 Spring整合Struts 2 709 
8.7.1啟動Spring容器709 
8.7. 2 MVC框架與Spring整合的思考710 
8.7.3讓Spring管理控制器711 
8.7.4使用自動裝配715 
8.8 Spring整合Hibernate 717 
8.8.1 Spring提供的DAO支持717 
8.8.2管理Hibernate的SessionFactory 718 
8.8.3實現DAO組件的基類719 
8.8.4 HibernateTemplate和HibernateDaoSupport 722 
8.8.5實現DAO組件725 
8.8.6使用IoC容器組裝各種組件725 
8.8.7使用聲明式事務728
8.9 Spring整合JPA 729 
8.9.1管理EntityManagerFactory 729 
8.9.2實現DAO組件基類732 
8.9.3使用聲明式事務734 
8.10本章小結735 

第9章企業應用開發的思考和策略736 
9.1企業應用開發麵臨的挑戰737 
9.1.1可擴展性、可伸縮性737 
9.1.2快捷、可控的開發738 
9.1.3穩定性、高效性738 
9.1.4花費最小化,利益最大化739 
9.2如何面對挑戰739 
9.2. 1使用建模工具739 
9.2.2利用優秀的框架739 
9.2.3選擇性地擴展741 
9.2.4使用代碼生成器742 
9.3常見設計模式精講742 
9.3.1單例模式743 
9.3.2簡單工廠744 
9.3.3工廠方法和抽象工廠750 
9.3.4代理模式753 
9.3.5命令模式758 
9.3.6策略模式761 
9.3.7門面模式763 
9.3.8橋接模式766 
9.3.9觀察者模式769 
9.4常見的架構設計策略773 
9.4.1貧血模型773
9.4.2領域對像模型776 
9.4.3合併業務邏輯組件與DAO組件778 
9.4.4合併業務邏輯組件和Domain Object 779 
9.4.5拋棄業務邏輯層780 
9.5本章小結781 

第10章簡單工作流系統782 
10.1項目背景及系統結構783 
10.1.1應用背景783 
10.1.2系統功能介紹783 
10.1.3相關技術介紹784 
10.1.4系統結構785 
10.1.5系統的功能模塊785 
10.2 Hibernate持久層786 
10.2.1設計持久化實體786 
10.2.2創建持久化實體類787 
10.3實現DAO層792 
10.3.1 DAO組件的定義792 
10.3.2實現DAO組件795 
10.3.3部署DAO層797 
10.4實現Service層799 
10.4.1業務邏輯組件的設計799 
10.4.2實現業務邏輯組件800 
10.4.3事務管理805 
10.4.4部署業務邏輯組件806 
10.5實現任務的自動調度806 
10.5.1使用Quartz 806 
10.5.2在Spring中使用Quartz 810
10.6實現系統Web層813 
10.6.1 Struts 2和Spring的整合813 
10.6.2控制器的處理順序圖814 
10.6.3員工登錄814 
10.6.4進入打卡816 
10.6.5處理打卡818 
10.6.6進入申請819 
10.6.7提交申請821 
10.6.8使用攔截器完成權限管理823 
10.7本章小結824