內 容 簡 介本書的重點是介紹當前流行的三個輕量級開源框架Struts 2、Spring 3和Hibernate的基礎知識,以及三個框架的整合案例開發。在知識點講解中,均結合了小案例的精講,以幫助讀者更好地理解和掌握。綜合示例均采用三層架構,按功能分類進行精講,各層之間分層清晰,層與層之間以松耦合的方法組織在一起,便于讀者理解每個功能的實現過程。本書內容全面、易于理解、示例眾多,為讀者更好地使用Java EE這項技術和標準進行工作提供了很好的指導。書中既包含了簡單易懂的代碼片段,也有大量實際可用的應用系統示例,有利于讀者迅速掌握Java EE Web開發的核心技術。全書共分為6篇28章。本書主要面向有Java語言基礎、從事Java EE Web開發的工程技術人員、高校學生和相關技術的愛好者,可作為大專院校Java EE Web程序開發課程的教材,也可作為Java EE Web程序開發人員的入門書籍和參考書,尤其適合于對Struts 2、Spring 3、Hibernate了解不夠深入,或對Struts 2 + Spring 3 + Hibernate整合開發不太熟悉的開發人員閱讀。前 言
Java Web技術是最為流行的開發技術之一。以JSP技術為基礎,整合Struts 2、Spring 3、Hibernate 4和Ajax技術開發Java Web應用已經成為當今主流的技術體系。
本書基于SSH2(Struts 2、Spring 3和Hibernate 4)框架技術,詳細講解SSH2框架技術的基本知識和使用方法,并通過大量的示例,幫助讀者理解掌握SSH2的核心技術,提高讀者的實踐操作能力。
1.本書的內容結構
本書詳細介紹以JSP、Ajax、Struts 2、Spring 3、Hibernate 4相結合的Java Web開發技術。全書分為環境搭建、Java Web基礎、Struts 2框架、Hibernate框架、Spring框架和SSH2項目示例6篇,共28章。各章主要內容說明如下。
第一篇 環境搭建篇(含第1章)
第1章:建立開發環境。介紹搭建Java Web環境所需的軟件獲取及安裝方法,包括JDK、Tomcat、MySQL數據庫以及MyEclipse集成開發工具。
第二篇 Java Web基礎篇(含第2~3章)
第2章:JSP技術。介紹JSP頁面組成、JSP內置對象、四種屬性范圍、Servlet技術、JSTL和EL。
第3章:用MVC架構實現Web項目開發。講述MVC的基本概念、JDBC技術、JavaBean,并使用MVC設計模式實現用戶登錄功能。
第三篇 Struts 2框架篇(含第4~14章)
第4章:Struts 2概述。介紹Struts 2框架的基礎知識、Struts 2的MVC設計模式、Struts 2的工作原理,以及如何配置運行環境。
第5章:Struts 2的架構和運行流程。介紹Struts 2的系統架構、基本流程、相關組件以及基本配置,重點介紹struts.xml配置文件的各個元素。
第6章:Action和Result的配置。介紹Struts 2的Action和Result的配置,重點講解Action的動態調用,以及指定method屬性、使用通配符等配置方法;介紹如何使用注解方式實現零配置;介紹常用的ResultType類型分類以及Result的配置方式。
第7章:Struts 2的攔截器。介紹攔截器的基礎知識,重點講解攔截器的配置和使用;介紹Struts 2內建攔截器、自定義攔截器以及如何通過使用攔截器實現權限控制。
第8章:Struts 2的標簽庫。介紹Struts 2標簽庫中的常用標簽用法,重點講解Struts 2的表單標簽、非表單標簽、控制標簽、數據標簽的使用。
第9章:OGNL和類型轉換。介紹OGNL和類型轉換在Struts 2中的實現。重點講解OGNL的知識、類型轉換機制、實現類型轉換的自定義類型轉換器。
第10章:Struts 2的驗證框架。介紹Struts 2的輸入校驗方式,講解如何手動編寫校驗規則、使用系統的校驗器,介紹Action中如何定義validate()方法及validateXxx()方法以實現校驗,重點介紹使用Struts 2的驗證框架進行驗證的方法。
第11章:Struts 2的國際化。介紹Java的國際化方法,Struts 2國際化中配置文件編寫及訪問配置文件的方法;資源文件的加載順序等。重點講解Struts 2中資源文件及配置文件的編寫及不同對象中消息資源的調用。
第12章:Struts 2文件的上傳和下載。介紹文件的上傳和下載,重點講解文件上傳的原理,如何使用Struts 2實現文件上傳、設置上傳目錄、限制文件的大小和類型。簡單介紹如何使用Struts 2實現文件下載。
第13章:Struts 2的Ajax支持。介紹Ajax技術,重點介紹Struts 2中的Ajax標簽,最后介紹相關的Ajax插件,并通過示例來實現聯合開發。
第14章:使用Struts 2實現用戶信息的CRUD。重點通過添加、刪除、修改及查詢等操作對本篇的Struts 2知識進行綜合應用。
第四篇 Hibernate框架篇(含第15~19章)
第15章:Hibernate初步。講述Hibernate框架的基本概念、Hibernate的下載安裝、使用Hibernate實現用戶添加及Hibernate的數據庫操作、使用MyEclipse工具簡化數據庫開發、使用Annotation注解實現Hibernate零配置。
第16章:Hibernate的關聯映射。講解Hibernate的關聯映射,包括單向多對一、單向一對多、雙向多對一、雙向一對一和多對多關聯以及基于Annotation注解的關聯映射。
第17章:Hibernate檢索方式。介紹Hibernate框架中的常用查詢方式,包括HQL查詢和QBC查詢。
第18章:Hibernate進階。講述Hibernate的批量處理、Hibernate事務和Hibernate緩存等知識以及在Hibernate中如何使用數據庫連接池和調用存儲過程。
第19章:Struts 2與Hibernate的整合。講述如何通過Struts 2和Hibernate框架整合進行登錄驗證。
第五篇 Spring框架篇(含第20~25章)
第20章:Spring基本應用。對Spring框架進行簡單的介紹,給出一個簡單的Spring示例,講述Spring的核心機制——依賴注入。
第21章:深入Spring中的Bean。介紹Bean工廠ApplicationContext、Bean的作用域和Bean的裝配方式。
第22章:面向方面編程(Spring AOP)。介紹Spring AOP的基本概念,重點講述基于代理類ProxyFactoryBean的AOP實現,介紹Spring AOP通知(Advice)、基于Schema和基于@AspectJ注解的AOP實現。
第23章:Spring整合Hibernate與Struts 2。講述Spring整合Hibernate、Struts 2的方法,同時介紹基于Annotation注解的SSH2整合。
第24章:Spring事務管理。介紹Spring事務管理的方式,重點講述基于AOP和基于@Transactional注解的兩種Spring 3聲明式事務管理,并以銀行轉賬為例實現這兩種聲明式的事務管理。
第25章:Spring Web。介紹Spring MVC的基本概念,講述DispatcherServlet、控制器、處理器映射、視圖解析器等Spring MVC相關知識,介紹基于注解的Spring MVC、Spring MVC(注解)文件上傳、Spring MVC國際化。
第六篇 SSH2項目示例篇(含第26~28章)
第26章:新聞發布系統。使用Struts 2、Spring和Hibernate框架來構建一個簡易的新聞發布系統。用戶可以瀏覽新聞,管理員登錄后可以發布新聞、管理新聞。
第27章:網上訂餐系統。使用Struts 2、Spring和Hibernate框架來構建一個典型的網上訂餐系統。客戶可以瀏覽餐品、查詢餐品,客戶登錄后可以使用購物車功能、提交訂單、管理自己的訂單。管理員登錄后可以添加餐品、管理餐品和處理訂單。
第28章:網上銀行系統。使用Struts 2、Spring和Hibernate框架來構建一個模擬的網上銀行系統。客戶登錄后可以修改密碼和個人信息、存款、取款、轉賬和查詢交易記錄。管理員登錄后可以查看用戶信息、查詢用戶、凍結和啟用用戶、刪除用戶和開戶。
2.本書的特點和優勢
本書由具有多年開發和教學經驗的資深教師執筆寫作,作者在Java EE Web領域具有多年的開發和教學講解經驗,熟悉Java開發理論知識體系,憑著嫻熟的筆法和淵博的理論知識,采取精雕細琢的寫作方式,將SSH2開發技術展現得淋漓盡致,能使讀者很快地進入實際開發角色。本書與市場上其他類似書籍相比,具有以下與眾不同的特色。
(1) 細致全面:本書內容的編排從Java Web核心基礎開始,從基本的語法入手,由淺入深地逐漸轉入到高級部分,所講解的內容囊括了Java Web技術的重要知識點。注重如何在實際工作中活用基礎知識,做到高質量的程序開發。
(2) 結合示例:本書在各章的知識點講解中,都結合了小示例的精講,加以驗證。對特別難懂的知識點,通過恰當的示例幫助讀者進行分析、加以理解。
(3) 講解透徹:本書在項目案例講解的過程中,均按功能分類,采用三層架構(數據訪問層、業務邏輯層和視圖層)進行相關組件的講解,各層之間分層清晰,層與層之間以松耦合的方法組織在一起,便于讀者理解每個功能的實現過程。
(4) 實用性強:本書的實用性較強,以經驗為后盾、以實踐為導向、以實用為目標,深入淺出地講解Java Web開發中的各種問題。
3.本書的讀者對象
本書在內容安排上由淺入深,寫作上采取層層剝洋蔥式的分解方法,充分示例舉證,非常適合于初學SSH2框架技術的入門者閱讀,同時也適合具有一定SSH2基礎,欲對Java Web項目開發技術進一步了解和掌握的中級讀者閱讀。如果您是以下類型的讀者,此書會帶領您迅速進入SSH2開發領域:
有一定Java基礎,但是沒有Java Web系統開發經驗的初學者。
有其他Web編程語言(如ASP、ASP.NET)開發經驗,欲快速轉向Java Web開發的程序員。
對JSP有一定了解,但是缺乏Java Web框架開發經驗,并希望了解流行開源框架Struts 2、Hibernate和Spring以及欲對這些框架進行整合的程序員。
有一定Java Web框架開發基礎,需要對Java Web主流框架技術核心進一步了解和掌握的程序員。
公司管理人員或人力資源管理人員。
4.作者及致謝
本書由繆勇、施俊和李新鋒編寫,其中,揚州職業大學的繆勇編寫了第四、五、六篇,施俊編寫了第一、三篇,鎮江市機關信息技術員李新鋒編寫了第二篇。其他參與編寫的人員還有王梅、陳亞輝、李艷會、劉嬌、湯劼、游名揚、李云霞、王永慶、江梅芳等,在此一一向他們致謝。
由于作者水平有限,書中難免存在一些不足和錯誤之處,敬請讀者批評指正。
目 錄
第一篇 環境搭建篇
第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 <s:checkboxlist>標簽 180
8.2.4 <s:combobox>標簽 182
8.2.5 <s:optgroup>標簽 184
8.2.6 <s:doubleselect>標簽 185
8.2.7 <s:file>標簽 185
8.2.8 <s:token>標簽 186
8.2.9 <s:updownselect>標簽 187
8.2.10 <s:optiontransferselect>標簽 188
8.3 Struts 2的非表單標簽 189
8.3.1 <s:actionerror>、<s:actionmessage>和<s:fielderror>標簽 189
8.3.2 <s:component>標簽 190
8.4 控制標簽 191
8.4.1 <s:if>、<s:elseif>、<s:else>標簽 191
8.4.2 <s:iterator>標簽 192
8.4.3 <s:append>標簽 193
8.4.4 <s:merge>標簽 194
8.4.5 <s:sort>標簽 195
8.4.6 <s:generator>標簽 196
8.4.7 <s:subset>標簽 197
8.5 數據標簽 197
8.5.1 <s:action>標簽 197
8.5.2 <s:property>標簽 199
8.5.3 <s:param>標簽 200
8.5.4 <s:bean>標簽 200
8.5.5 <s:date>標簽 201
8.5.6 <s:set>標簽 202
8.5.7 <s:url>標簽 203
8.5.8 <s:include>標簽 204
8.5.9 <s:debug>標簽 204
8.5.10 <s:push>標簽 205
8.5.11 <s:i18n>和<s:text>標簽 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 <sx:div>標簽 278
13.2.3 <sx:a>和<sx:submit>標簽 281
13.2.4 <sx:head>標簽 282
13.2.5 <sx:tabbedpanel>標簽 283
13.2.6 <sx:autocompleter>標簽 284
13.2.7 <sx:tree>和<sx:treenode>標簽 285
13.2.8 <sx:datetimepicker>標簽 286
13.2.9 <sx:textarea>標簽 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