本文為原創,如需轉載,請注明作者和出處,謝謝!
源代碼下載
作者:李寧
圖書詳細信息:
ISBN:9787302195757
定價:79.8元
印次:1-1
裝幀:平裝
印刷日期:2009-4-23
圖書簡介:
SSH是目前最流行的Java Web開發技術。本書通過對SSH中的各種技術循序漸進地講解,使讀者盡快掌握開發基于SSH的Web程序的方法。本書內
容包括Web客戶端技術、JSP/Servlet技術、Struts 2(攔截器、類型轉換、輸入校驗、上傳和下載文件、Struts 2的各種標簽、對
AJAX的支持等)、Spring(Ioc容器、裝配Java Bean、Jdbc和Hibernate模板、事務管理、Spring AOP等)以及
Hibernate(會話、映射、標準查詢API、HQL、事務管理、鎖等)。除此之外,本書還提供了兩個完整的實例來講解開發SSH的詳細步驟和方法。
通過對這兩個實例的學習,讀者可以對SSH開發模式有更透徹地理解和認識。
本書適合廣大從事Java Web開發工作的技術人員、對SSH開發感興趣的人員以及大專院校學生閱讀,尤其是具有一定的Web開發經驗的技術人員。
前 言
現在MVC模式已經成為Web應用的主流開發模式。而Struts框架幾乎可以和MVC模式劃等號,因為Struts框架已經成為了MVC模式的事實標準。隨著Struts 1.x的應用浪潮席卷全球數年后,Struts 2又以嶄新的姿態與世人見面了。
Struts 2仍然可以繼承Struts 1.x的應用模式(Struts + Spring + Hibernate),但關于 Struts 2+Spring+Hibernate整合的書卻并不多。為了使讀者盡快了解和掌握如何使用 Struts 2、Spring和Hibernate 3個框架整合的方式來開發Web應用系統,筆者花費了大量的時間來完成這本關于Struts 2 + Spring +Hibernate 整合的書。為了盡可能保證內容的準確和權威性,筆者查閱了大量的官方文檔,并針對關鍵部分閱讀了相應的源代碼。
本書的寫作目標就是力爭讓讀者盡可能地掌握Struts 2、Spring和Hibernate,以及這3個框架整合的相關知識。并通過兩個完整實例的講解使讀者盡快融入SSH(Struts+Spring+ Hibernate)大家庭。
本書有何特色
1.從基礎開始,由淺入深
JSP/Servlet技術是Java Web技術的基礎,很多初學者在學習SSH之前并沒有很好地掌握該技術,因此,本書考慮到這個原因,在第一篇講解了JSP/Servlet以及Web客戶端技術的基礎知識。除此之外,在第二~四篇的頭一章都以一個簡單的例子開始,以使讀者在學習每一篇所講的技術之前,對這種技術有一個初步的了解。并且每一篇的章節是按照由淺入深、循序漸進的順序編排的,從而可以使讀者漸進式地學習本書的知識。
2.各篇獨立,內容完整
本書的每一篇都是相對獨立的。如第二篇講解了Struts 2的各種技術;第三篇講解了Hibernate的主要技術,而且每一篇講解的技術比較完整。這樣就會給想學習SSH整合技術,但卻未掌握SSH中的一項或幾項技術的讀者帶來方便,至少不需要同時準備幾本書,從而給讀者節省了大量的時間和金錢。
3.各章實例豐富,使讀者更容易理解書中的知識
本書幾乎在每一章都提供了大量的實例。這些實例充分展現了相關知識點的實現細節。讀者可以在學習相關知識點后,通過上機實踐這些例子來更深入地了解并掌握這些知識點。
4.提供了完整的實例,使讀者更進一步體會SSH開發模式的精髓
在本章的最后還提供了兩個完整的實例(網絡硬盤和論壇系統)。這兩個實例都采用了SSH模式進行開發。通過對這兩個實例的深入研究,讀者可以比較全面地掌握基于SSH模式的Web應用程序的開發步驟和開發方法,并可將實例中所采用的技術應用到自己的項目中。
5.使用最新版本的開發工具和框架
本書所使用的開發工具和相關的框架在筆者寫作本書時都是最新版本,如MyEclipse 6.5、Struts 2.0.11.2等。讀者可以在學習SSH開發技術的同時,接觸到目前最新版本的開發工具和框架。就算讀者目前所使用的軟件版本低于本書所使用的軟件版本,也可以為未來的工作奠定基礎。
6.配有源代碼與視頻光盤,方便讀者使用
為了方便讀者實驗本書提供的實例程序,特將所有的源代碼都收錄到了配書光盤中,以方便讀者使用。另外,作者特別為本書錄制了一些多媒體視頻演示,將本書中的一些相關操作直觀地展示給讀者,以達到更好的學習效果。
本書內容
第1章:為了使讀者盡快搭建本書所使用的開發環境。在這一章將詳細介紹本書所使用的開發工具、框架的版本號以及下載、安裝和配置的過程。
第2章:本章介紹了Web技術的發展歷史,以及Java Web技術的基本組成。最后詳細描述了Java Web技術中常用的兩種開發模式:JSP模型1和JSP模型2(MVC模式),以及目前常用的MVC框架。
第3章:本章介紹了在Web系統中常用的客戶端技術,這些技術包括JavaScript、CSS和AJAX。在本章的開始部分還介紹了一些開發JavaScript的常用IDE。
第4章:本章介紹了Servlet的基礎知識,如處理請求消息、響應消息、Cookie和Session等,最后還詳細講解了Web開發中所遇到的中文亂碼問題的解決方案。
第5章:本章介紹了JSP的運行原理、基本語法、JSP指令、JSP的內置對象、JSP標簽和JSTL。
第6章:本章以一個用戶注冊登錄系統為例,演示了如何綜合運用JSP/Servlet技術開發一個完整的Web應用程序。
第7章:本章介紹了Struts 2中的MVC模式,以及Struts 2的體系結構。最后給出了一個簡單的例子來演示開發基于Struts 2的Web應用程序的步驟和方法。
第8章:本章介紹了如何配置Struts 2框架、Struts 2 Action、處理結果、模型驅動和異常處理。
第9章:本章介紹了Struts 2的攔截器技術,其中包括攔截器的實現原理、攔截器的配置、實現自定義攔截器以及內建攔截器等內容。
第10章:本章介紹了Struts 2中的各種類型轉換技術。如OGNL表達式、數組和集合類型轉換器、類型轉換的錯誤處理等。
第11章:本章介紹了傳統的輸入校驗和Struts 2中的輸入校驗。
第12章:本章首先介紹了文件上傳的原理,以及如何使用Commons-FileUpload組件上傳文件。本章的重頭戲是講解Struts 2的上傳功能,其中包括上傳單個文件和上傳任意多個文件的方法。在最后介紹了如何使用Struts 2框架下載文件,主要包括使用stream結果下載文件以及下載文件的權限控制。
第13章:本章介紹了Struts 2在國際化方面的技術。為了更深入地理解Struts 2的國際化功能,在本章的開始部分首先介紹了Java對國際化的支持。然后逐步深入介紹Struts 2的國際化技術,主要包括訪問資源文件、資源文件的加載順序等,最后給出了一個例子來演示如何將國際化功能加載到Web應用程序中。
第14章:本章詳細講解了Struts 2框架中的標簽。這些標簽包括控制標簽、數據標簽、表單標簽、非表單標簽。
第15章:本章著重介紹了Struts 2框架對AJAX的支持,主要內容包括支持AJAX的標簽、基于AJAX的校驗、發布-訂閱事件模型、JSON插件等。
第16章:本章使用了Struts 2技術重新實現了第6章的用戶注冊登錄系統。在本章實現的用戶注冊登錄系統的功能和第6章實現的該系統的功能相同,只是使用了Struts 2框架來實現相關的部分。讀者可以從中體會到使用JSP/Servlet和Struts 2在開發Web應用程序中的不同。
第17章:本章介紹了ORM的概念以及Hibernate和EJB的關系。最后給出一個例子來演示在MyEclipse中開發基于Hibernate的系統的步驟和方法。
第18章:本章介紹了Hibernate的兩種配置方式:配置文件和注釋。在最后給出了一個例子重新實現了第17章的例子,只不過這個例子使用了注釋來配置Hibernate。
第19章:本章介紹了Hibernate會話的基本操作和O/R映射。其中O/R映射主要介紹了映射主鍵、映射復合主鍵、映射普通屬性、組件映射、基于注釋的組件映射、多對一、一對多、一對一的關系。
第20章:本章的第1節介紹了Hibernate的標準(Criteria)查詢API技術,主要內容包括約束條件、分頁、排序、聚合和分組以及QBE。在第2節介紹了Hibernate中的另外兩種查詢技術:HQL和SQL。其中HQL主要介紹了From、Select、Where、Update、Insert以及Delete語句,還介紹了命名參數、排序和分組、關聯查詢、命名查詢等。
第21章:本章介紹了Hibernate的一些高級技術,主要包括事務管理、鎖機制、查詢緩存、攔截器和事件與過濾器。
第22章:本章介紹了Spring的主要特性和核心技術,在最后還給出了一個例子來演示使用Spring框架開發程序的過程。
第23章:本章介紹了Spring框架的核心思想,反向控制(Ioc),同時還詳細講解了Spring框架中最常用的裝配Java Bean技術以及分散配置和定制屬性編輯器。
第24章:本章介紹了Spring中的數據庫技術,主要包括在Spring中使用數據源連接數據庫、操作JDBC的JdbcTemplate;操作Hibernate的HibernateTemplate以及自增鍵和異常的處理。
第25章:本章主要介紹了Spring AOP技術的基礎知識以及事務管理。除此之外,還介紹了Spring的其他一些高級屬性,如建立和訪問RMI服務、發送Email、調度任務等。
第26章:從本章開始逐漸涉及到了SSH開發的全過程。在本章主要介紹了Struts 2、Spring和Hibernate 3個框架整合的思路,以及基于SSH的系統的層次結構。
第27、28章:在這兩章給出了兩個完整的使用SSH開發的例子(網絡硬盤和論壇系統)。在這兩個例子中詳細描述了開發基于SSH的系統的步驟和其中所涉及到的技術。開發這兩個例子的基本步驟類似,不過它們所涉及到的技術有一定的區別,如在論壇系統中涉及到了一個Web編輯器(FCKEditor)的安裝和使用。
適合閱讀本書的讀者
* 初步掌握Java技術,想進一步學習SSH整合開發的讀者
* 對SSH整合技術有了一定的了解,想進一步提高的讀者
* 正在使用SSH整合技術開發項目,想查閱相關技術的讀者
* 大中專院校的學生
* 社會培訓學生
目 錄
第1篇 Web開發基礎篇
第1章 搭建開發環境 2
1.1 本書使用的軟件和框架的版本 2
1.2 JDK6的下載與安裝 2
1.3 Eclipse 3.4的下載與安裝 3
1.4 MyEclipse 6.5的下載與安裝 3
1.5 Eclipse IDE for Java EE Developers的下載與安裝 4
1.6 Tomcat 6的下載與安裝 5
1.7 在MyEclipse中配置Tomcat 6
1.8 在Eclipse IDE for Java EE Developers中配置Tomcat 6
1.9 小結 7
第2章 Java Web應用開發基礎 8
2.1 Web技術的發展 8
2.2 Java Web技術 10
2.2.1 Java Web程序的基本組成 11
2.2.2 Java Web程序的目錄結構 11
2.2.3 Java Web程序的配置文件 11
2.3 MVC模式與MVC框架 12
2.3.1 JSP模型1和JSP模型2 12
2.3.2 Web應用程序需要的基礎服務 13
2.3.3 MVC模式概述 14
2.3.4 常用的MVC框架 15
2.4 小結 16
第3章 Web開發中的客戶端技術 17
3.1 常用的JavaScript IDE簡介 17
3.1.1 在MyEclipse中使用JavaScript 17
3.1.2 在Eclipse IDE for Java EE中使用JavaScript 18
3.1.3 在NetBeans中使用JavaScript 19
3.1.4 其他的JavaScript IDE 20
3.2 JavaScript語法基礎 20
3.2.1 實例:編寫第一個JavaScript程序:Greet 21
3.2.2 變量 22
3.2.3 原始類型 22
3.2.4 類型轉換 26
3.2.5 函數與函數調用 28
3.2.6 類和對象 30
3.3 JavaScript高級技術 32
3.3.1 DOM技術概述 32
3.3.2 獲得HTML元素的3種方法 34
3.3.3 實例:圖像自動切換 36
3.3.4 正則表達式 37
3.3.5 實例:表格排序 38
3.4 CSS基礎 41
3.4.1 CSS的基本語法 41
3.4.2 在Style屬性中定義樣式 42
3.4.3 在HTML中定義樣式 42
3.4.4 在外部文件中定義樣式 43
3.4.5 樣式的繼承 43
3.5 AJAX基礎 44
3.5.1 AJAX概述 44
3.5.2 實例:使用XMLHttpRequest獲得Web資源 45
3.5.3 實例:使用XMLHttpRequest跨域訪問Web資源 46
3.5.4 實例:AJAX的3種交換數據方法 47
3.6 小結 49
第4章 Servlet技術 50
4.1 Servlet的Helloworld程序 50
4.1.1 實例:在MyEclipse中編寫Helloworld程序 50
4.1.2 實例:手工編寫Helloworld程序 53
4.2 Servlet基礎 54
4.2.1 配置數據庫連接池 55
4.2.2 數據庫連接池的應用 56
4.2.3 實例:用doGet方法處理客戶端請求 58
4.2.4 實例:用doPost方法處理客戶端請求 60
4.2.5 實例:用service方法處理客戶端請求 60
4.2.6 實例:初始化(init)和銷毀(destroy)Servlet 62
4.2.7 實例:使用PrintWriter輸出響應消息 64
4.2.8 實例:用ServletOutputStream顯示圖像 65
4.2.9 實例:使用RequestDispatcher包含Web資源 66
4.2.10 實例:使用RequestDispatcher轉發Web資源 68
4.3 HttpServletResponse類的其他功能 69
4.3.1 產生狀態響應碼 70
4.3.2 設置響應消息頭 71
4.3.3 實例:驗證響應頭設置情況 73
4..4 使用HttpServletRequest獲得請求消息 73
4.4.1 獲取請求行消息 74
4.4.2 獲取網絡連接消息 74
4.4.3 獲取請求頭消息 75
4.5 處理Cookie 76
4.5.1 什么是Cookie 76
4.5.2 Cookie類中的方法 76
4.5.3 實例:用Cookie讀寫客戶端信息 77
4.5.4 實例:用Cookie讀寫復雜數據 79
4.6 處理Session 81
4.6.1 什么是Session 81
4.6.2 HttpSession接口中的方法 81
4.6.3 HttpServletRequest接口中的Session方法 83
4.6.4 實例:通過Cookie跟蹤Session 83
4.6.5 實例:通過重寫URL跟蹤Session 85
4.7 Web開發的中文問題 87
4.7.1 Java的編碼原理 87
4.7.2 實例:解決輸出中文亂碼問題 89
4.7.3 實例:解決服務端程序讀取中文請求消息的亂碼問題 90
4.7.4 實例:用AJAX技術發送和接收中文信息 92
4.7.5 實例:在請求消息頭和響應消息頭中轉輸中文 95
4.8 小結 97
第5章 JSP技術 98
5.1 用MyEclipse編寫第一個JSP程序 98
5.1.1 實例:編寫顯示服務器當前時間的JSP程序 98
5.1.2 調試JSP程序 100
5.1.3 改變JSP的訪問路徑和擴展名 101
5.1.4 手動發布JSP程序 102
5.2 JSP的運行原理 102
5.2.1 Tomcat如何處理JSP頁 103
5.2.2 分析由JSP生成的Servlet代碼 104
5.3 JSP基本語法 108
5.3.1 JSP表達式 109
5.3.2 在JSP中嵌入Java代碼 109
5.3.3 JSP聲明 111
5.3.4 JSP表達式語言(EL) 113
5.3.5 實例:用EL函數替換HTML中的特殊字符 115
5.3.6 JSP頁面中的注釋 117
5.4 JSP指令 118
5.4.1 JSP指令簡介 118
5.4.2 page頁面指令 119
5.4.3 include加入指令 125
5.5 JSP的9個內置對象 126
5.5.1 out輸出對象 126
5.5.2 pageContext封裝對象 128
5.5.3 其他的JSP內置對象 129
5.6 JSP標簽 132
5.6.1 <jsp:include>插入標簽 132
5.6.2 <jsp:forward>轉發標簽 134
5.6.3 <jsp:param>傳參標簽 135
5.6.4 <jsp:useBean>創建Bean標簽 136
5.6.5 <jsp:setProperty>設置屬性值標簽 138
5.6.6 <jsp:getProperty>獲取屬性值標簽 140
5.7 JSP的標準標簽庫(JSTL) 140
5.7.1 如何使用JSTL 141
5.7.2 條件標簽 142
5.7.3 循環標簽 144
5.8 小結 147
第6章 用Servlet和JSP實現注冊登錄系統 148
6.1 系統概述 148
6.1.1 系統功能簡介 148
6.1.2 系統總體結構 149
6.2 設計數據庫 149
6.3 實現系統的基礎類 150
6.3.1 實現訪問數據庫的DBServlet類 150
6.3.2 實現MD5加密 152
6.3.3 實現圖形驗證碼 152
6.4 實現注冊系統 155
6.4.1 實現注冊Servlet類 155
6.4.2 實現注冊系統的主頁面 157
6.4.3 實現結果JSP頁面 159
6.5 實現登錄系統 160
6.5.1 實現登錄Servlet 160
6.5.2 實現登錄系統主頁面 162
6.6 小結 163
第2篇 Struts 2篇
第7章 編寫Struts 2的第一個程序 166
7.1 Struts 2中的MVC模式 166
7.2 Struts 2的體系結構 167
7.2.1 Struts 2的工作流程 167
7.2.2 Struts 2的配置文件 167
7.2.3 Struts 2的控制器 169
7.3 實例:圖書查詢系統 170
7.3.1 下載和安裝Struts 2 170
7.3.2 編寫數據處理類 171
7.3.3 編寫和配置Action類 172
7.3.4 編寫顯示查詢結果的JSP頁面 174
7.3.5 編寫輸入查詢信息的JSP頁面 176
7.4 小結 177
第8章 Struts 2進階 178
8.1 Struts 2的基本配置 178
8.1.1 配置web.xml 178
8.1.2 配置struts.xml 179
8.1.3 配置struts.properties 183
8.1.4 Struts 2的DTD 186
8.2 深入理解Struts 2的配置元素 188
8.2.1 配置Bean 188
8.2.2 配置常量(constant) 190
8.2.3 配置包含(include) 191
8.2.4 配置包(package) 192
8.2.5 配置命名空間 193
8.2.6 配置攔截器 194
8.3 Struts 2注釋(Annotation) 195
8.3.1 ParentPackage注釋:設置當前包的父包 195
8.3.2 Namespace注釋:指定當前包的命名空間 196
8.3.3 Results與Result注釋:指定當前Action結果 197
8.3.4 實例:用注釋配置Action 197
8.4 Struts 2的Action 200
8.4.1 Action類的getter和setter方法 200
8.4.2 實現Action接口 202
8.4.3 繼承ActionSupport類 203
8.4.4 實例:用ActionContext訪問Servlet API 205
8.4.5 實例:通過aware攔截器訪問Servlet API 209
8.4.6 實例:利用動態方法處理多個提交請求 211
8.4.7 實例:利用method屬性處理多個提交請求 213
8.4.8 使用通配符 214
8.4.9 默認Action 218
8.5 處理結果 218
8.5.1 配置結果 218
8.5.2 Struts 2支持的處理結果類型 219
8.5.3 用通配符指定結果 222
8.5.4 用請求參數指定結果 223
8.6 模型驅動 224
8.6.1 ModelDriven概述 224
8.6.2 實例:使用模型驅動改進登錄程序 226
8.7 處理異常 228
8.7.1 Struts 2處理異常的原理 229
8.7.2 實例:登錄系統的異常處理 230
8.8 小結 233
第9章 Struts 2的攔截器 234
9.1 理解攔截器 234
9.1.1 攔截器的實現原理 234
9.1.2 實例:模擬Struts 2實現一個攔截器系統 237
9.2 配置Struts 2攔截器 242
9.2.1 配置攔截器 242
9.2.2 使用攔截器 244
9.2.3 默認攔截器 245
9.3 實例:自定義攔截器 247
9.3.1 編寫攔截器類 247
9.3.2 配置自定義攔截器 249
9.4 攔截器的高級技術 251
9.4.1 過濾指定的方法 251
9.4.2 攔截器執行順序 254
9.4.3 攔截器結果監聽器 255
9.5 Struts 2內建的攔截器 258
9.5.1 內建攔截器 258
9.5.2 內建攔截器的配置 260
9.6 實例:編寫權限驗證攔截器 262
9.6.1 編寫權限驗證攔截器類 263
9.6.2 配置權限控制攔截器 263
9.7 小結 265
第10章 Struts 2的類型轉換 266
10.1 為什么要進行類型轉換 266
10.1.1 客戶端和服務端之間的數據處理過程 266
10.1.2 傳統的類型轉換 267
10.2 使用Struts 2類型轉換器 270
10.2.1 Struts 2內建的類型轉換器 271
10.2.2 實例:實現基于OGNL的類型轉換器 274
10.2.3 配置全局類型轉換器 278
10.2.4 實例:實現基于Struts 2的類型轉換器 280
10.2.5 實例:實現數組類型轉換器 282
10.2.6 實例:實現集合類型轉換器 284
10.3 實例:使用OGNL表達式進行類型轉換 287
10.4 Struts 2對Collection和Map的支持 289
10.4.1 指定集合元素的類型 289
10.4.2 Set和索引屬性 291
10.5 類型轉換的錯誤處理 292
10.6 小結 294
第11章 Struts 2的輸入校驗 295
11.1 傳統的數據校驗方法 295
11.1.1 用JavaScript進行客戶端校驗 295
11.1.2 手工進行服務端校驗 300
11.2 Struts 2的數據校驗 303
11.2.1 Struts 2使用validate方法校驗數據的原理 303
11.2.2 實例:使用validate方法進行輸入校驗 305
11.2.3 實例:使用validateXxx方法進行輸入校驗 308
11.2.4 Struts 2的輸入校驗流程 311
11.3 使用Validation框架進行輸入校驗 312
11.3.1 實例:服務端校驗 313
11.3.2 字段校驗器和非字段校驗器 315
11.3.3 國際化錯誤提示信息 317
11.3.4 實例:客戶端校驗 319
11.3.5 校驗文件的命名規則 323
11.3.6 短路校驗器 325
11.4 Validation框架的內建校驗器 327
11.4.1 注冊和引用校驗器 327
11.4.2 轉換(conversion)校驗器 328
11.4.3 日期(date)校驗器 329
11.4.4 雙精度浮點數(double)校驗器 330
11.4.5 郵件地址(email)校驗器 331
11.4.6 表達式(expression)校驗器 332
11.4.7 字段表達式(fieldexpression)校驗器 332
11.4.8 整數(int)校驗器 333
11.4.9 正則表達式(regex)校驗器 334
11.4.10 必填(required)校驗器 335
11.4.11 必填字符串(requiredstring)校驗器 335
11.4.12 字符串長度(stringlength)校驗器 336
11.4.13 網址(url)校驗器 337
11.4.14 visitor校驗器 337
11.5 小結 341
第12章 文件的上傳和下載 342
12.1 文件上傳原理 342
12.1.1 表單數據的編碼方式 342
12.1.2 applicaiton/x-www.form-urlencoded編碼方式 343
12.1.3 multipart/form-data編碼方式 345
12.2 使用Commons-FileUpload上傳文件 348
12.2.1 下載和安裝Commons-FileUpload組件 348
12.2.2 實例:上傳單個文件 349
12.2.3 實例:上傳任意多個文件 352
12.3 實例:Struts 2的文件上傳 355
12.3.1 Struts 2對上傳文件的支持 355
12.3.2 編寫上傳文件的JSP頁 355
12.3.3 編寫上傳文件的Action類 356
12.3.4 配置上傳文件的Action類 358
12.3.5 手工過濾上傳文件的類型 359
12.3.6 用fileUpload攔截器過濾上傳文件的類型 361
12.4 在Struts 2中上傳多個文件 363
12.4.1 實例:用數組上傳固定數目的文件 363
12.4.2 實例:用List上傳任意數目的文件 366
12.5 文件下載 368
12.5.1 下載文件的中文問題 368
12.5.2 用stream結果下載文件 369
12.5.3 下載文件的授權控制 371
12.6 小結 372
第13章 國際化 373
13.1 國際化基礎 373
13.1.1 程序為什么需要國際化 373
13.1.2 Java國際化中的資源文件 374
13.1.3 Java支持的語言和國家 375
13.1.4 資源文件的中文支持 376
13.1.5 編寫國際化程序 377
13.1.6 帶占位符的國際化信息 379
13.1.7 實例:使用資源文件編寫國際化程序 380
13.1.8 Java國際化中的資源類 383
13.1.9 實例:使用資源類編寫國際化程序 384
13.2 Struts 2的國際化基礎 385
13.2.1 Struts 2中的全局資源文件 386
13.2.2 在Struts 2中訪問國際化信息 386
13.2.3 在Struts 2中輸出帶占位符的國際化信息 389
13.3 資源文件的作用范圍和加載順序 391
13.3.1 包范圍資源文件 391
13.3.2 接口范圍資源文件 393
13.3.3 Action基類范圍資源文件 395
13.3.3 Action范圍資源文件 396
13.3.5 臨時資源文件 397
13.3.6 加載資源文件的順序 398
13.4 實例:編寫支持多國語言的Web應用程序 399
13.4.1 通過i18n攔截器實現國際化 400
13.4.2 為register.jsp頁面增加語言選擇列表 401
13.4.3 將register.jsp頁面映射成Action 402
13.5 小結 404
第14章 Struts 2的標簽庫 405
14.1 Struts 2標簽基礎 405
14.1.1 Struts 2標簽的分類 405
14.1.2 使用Struts 2標簽 406
14.1.3 Struts 2中的OGNL表達式 408
14.1.4 用OGNL表達式訪問內置對象 411
14.1.5 用OGNL表達式操作集合 412
14.1.6 Lamdba(λ)表達式 414
14.2 控制標簽 415
14.2.1 if/elseif/else標簽:條件邏輯控制 415
14.2.2 iterator標簽:數組、集合迭代 418
14.2.3 append標簽:將集合以追加方式合并為新集合 422
14.2.4 generator標簽:將字符串分割成多個子串 424
14.2.5 merge標簽:將集合以交替方式合并為新集合 427
14.2.6 subset標簽:獲得集合的子集 428
14.2.7 sort標簽:對集合進行排序 430
14.3 數據標簽 432
14.3.1 action標簽:在JSP頁面中直接訪問Action 432
14.3.2 bean標簽:創建JavaBean的對象實例 434
14.3.3 date標簽:格式化日期/時間 436
14.3.4 debug標簽:顯示調試信息 438
14.3.5 include標簽:包含Web資源 439
14.3.6 param標簽:為其他的標簽提供參數 440
14.3.7 property標簽:輸出指定的值 440
14.3.8 push標簽:將指定值放到ValueStack棧頂 441
14.3.9 set標簽:將某個值保存在指定的范圍 442
14.3.10 url標簽:生成URL地址 444
14.4 表單標簽 446
14.4.1 表單標簽的通用屬性 446
14.4.2 表單標簽的name和value屬性 447
14.4.3 form、submit和reset標簽:表單、提交和重置 449
14.4.4 checkboxlist標簽:生成多個復選框 449
14.4.5 combobox標簽:組合單行文本框和下拉列表框 452
14.4.6 datetimespicker標簽:組合文本框和日期、時間選擇框 454
14.4.7 doubleselect標簽:生成級聯列表框 457
14.4.8 head標簽:添加CSS和JavaScript 458
14.4.9 optiontransferselect 標簽:生成可交互的兩個列表框 459
14.4.10 select標簽:生成列表框 461
14.4.11 optgroup標簽:生成下拉列表框選項組 462
14.4.12 radio標簽:生成多個單選框 463
14.4.13 token標簽:防止多次提交表單 464
14.4.14 updownselect標簽:生成高級列表框 465
14.4.15 其他的表單標簽 467
14.5 非表單標簽 467
14.5.1 fielderror標簽:顯示字段錯誤信息 467
14.5.2 actionerror和actionmessage標簽:顯示動作錯誤和動作消息 468
14.5.3 component標簽:使用模板 469
14.6 小結 471
第15章 Struts 2對AJAX的支持 472
15.1 Struts 2的AJAX主題 472
15.2 基于AJAX的輸入校驗 474
15.2.1 下載和安裝DWR框架 474
15.2.2 編寫具有AJAX校驗功能的注冊頁面 475
15.2.3 編寫Action類 476
15.2.4 設置校驗規則 477
15.3 在表單中使用AJAX 479
15.3.1 實現可異步提交的表單 479
15.3.2 實現Action類 479
15.3.3 實現結果處理頁面 480
15.3.4 執行JavaScript代碼 481
15.4 發布-訂閱(pub-sub)事件模型 483
15.4.1 pub-sub事件模型的原理 483
15.4.2 pub-sub事件模型演示 484
15.4.3 阻止請求服務端資源 487
15.5 使用Struts 2中的AJAX標簽 488
15.5.1 div標簽的基本應用 488
15.5.2 使用div標簽執行JavaScript 491
15.5.3 手動控制div標簽的更新 493
15.5.4 submit標簽:發送異步請求 496
15.5.5 a標簽:可異步提交請求的鏈接 498
15.5.6 autocompleter標簽:帶自運完成功能的文本框 501
15.5.7 tabbedPanel標簽:生成Tab頁 507
15.5.8 treenode和tree標簽:樹節點和樹組件 511
15.6 使用JSON插件實現AJAX 513
15.6.1 下載和安裝JSON插件 513
15.6.2 下載和安裝prototype.js 513
15.6.3 實現Action類 514
15.6.4 在JSP頁面中通過Prototype請求Action 515
15.7 小結 517
第16章 用Struts 2實現注冊登錄系統 518
16.1 系統總體結構 518
16.2 實現DAO層 518
16.2.1 實現DAOSupport類 519
16.2.2 實現UserDAO接口 520
16.2.3 實現UserDAOImpl類 520
16.3 實現Action類 522
16.3.1 實現模型類(User) 522
16.3.2 實現LoginAction類 523
16.3.3 實現RegisterAction類 525
16.4 輸入校驗 526
16.4.1 校驗登錄頁面 526
16.4.2 校驗注冊頁面 527
16.5 實現表現層頁面 528
16.5.1 實現登錄頁面(login.jsp) 528
16.5.2 實現注冊頁面(register.jsp) 530
16.5.3 實現主頁面(main.jsp) 531
16.6 實現其他的功能 532
16.6.1 使用Action類生成驗證碼圖像 532
16.6.2 使用攔截器驗證頁面訪問權限 534
16.7 小結 536
第3篇 Hibernate篇
第17章 Hibernate的Helloworld程序 538
17.1 Hibernate概述 538
17.1.1 為什么要使用ORM 538
17.1.2 Hibernate和EJB的關系 539
17.2 在應用程序中使用Hibernate 3 539
17.2.1 MyEclipse對Hibernate 3的支持 540
17.2.2 下載和安裝新版本的Hibernate 3 542
17.3 第1個Hibernate程序 543
17.3.1 開發Hibernate程序的基本步驟 543
17.3.2 建立數據表 543
17.3.3 建立Hibernate配置文件 543
17.3.4 建立會話工廠(SessionFactory)類 544
17.3.5 建立實體Bean和Struts 2的模型類 547
17.3.6 建立映射文件 548
17.3.7 建立添加記錄的Action類 548
17.3.8 建立錄入信息的JSP頁面 550
17.4 小結 552
第18章 配置Hibernate 553
18.1 用傳統的方法配置Hibernate 553
18.1.1 用XML文件配置Hibernate 553
18.1.2 用屬性文件配置Hibernate 556
18.1.3 用編程的方式配置Hibernate 556
18.1.4 Hibernate框架的配置屬性 557
18.1.5 SQL方言(Dialect) 561
18.1.6 使用JNDI數據源 562
18.1.7 配置映射文件 563
18.2 使用注釋(Annotations)配置Hibernate 564
18.2.1 Hibernate注釋簡介 564
18.2.2 安裝Hibernate注釋 564
18.2.3 使用@Entity注釋實體Bean 565
18.2.4 使用@Table注釋實體Bean 565
18.2.5 使用@Id注釋主鍵 566
18.2.6 使用@GenericGenerator注釋產生主鍵值 567
18.2.7 使用@Basic和@Transient注釋 568
18.2.8 更高級的Hibernate注釋 568
18.3 使用注釋重新實現Helloworld程序 569
18.3.1 使用注釋配置實體Bean 569
18.3.2 在Hibernate配置文件中指定實體Bean的位置 570
18.3.3 使用AnnotationConfiguration類處理annotation.cfg.xml文件 570
18.3.4 通過AnnotationSessionFactory類獲得Session對象 571
18.4 小結 572
第19章 Hibernate的會話與O/R映射 573
19.1 會話(Session)的基本應用 573
19.1.1 保存持久化對象 573
19.1.2 判斷持久化對象之間的關系 574
19.1.3 裝載持久化對象 575
19.1.4 刷新持久化對象 577
19.1.5 更新持久化對象 578
19.1.6 刪除持久化對象 579
19.2 建立O/R映射 579
19.2.1 映射主鍵 579
19.2.2 映射復合主鍵 580
19.2.3 實例:主鍵和復合主鍵的查詢和更新 581
19.2.4 映射普通屬性 586
19.2.5 建立組件(Component)映射 587
19.2.6 實例:組件映射的應用 588
19.2.7 基于注釋的組件映射 592
19.2.8 建立多對一(many-to-one)單向關聯關系 593
19.2.9 實例:多對一關系的演示 593
19.2.10 基于注釋的多對一關系映射 597
19.2.11 建立一對多(one-to-many)的雙向關聯關系 598
19.2.12 實例:一對多雙向關聯的演示 598
19.2.13 基于注釋的一對多映射 601
19.2.14 建立基于外鍵的一對一(one-to-one)的關系映射 602
19.2.15 實例:基于外鍵的一對一關系演示 603
19.2.16 建立基于主鍵的一對一的關系映射 606
19.2.17 實例:基于主鍵的一對一關系映射 607
19.3 小結 610
第20章 Hibernate的查詢與更新技術 612
20.1 標準(Criteria)查詢API 612
20.1.1 實例:一個簡單的例子 612
20.1.2 查詢的約束條件 613
20.1.3 對查詢結果進行分頁 615
20.1.4 實例:實現Web分頁功能 617
20.1.5 只獲得一個持久化對象 620
20.1.6 對查詢結果進行排序 621
20.1.7 多個Criteria之間的關聯 621
20.1.8 聚合和分組 622
20.1.9 使用QBE(Query By Example) 624
20.2 HQL和SQL技術 625
20.2.1 實例:使用HQL的第一個例子 625
20.2.2 From子句:簡化實體Bean類名 626
20.2.3 Select子句:選擇返回屬性 628
20.2.4 Where子句:指定條件 629
20.2.5 使用命名參數 630
20.2.6 使用Query進行分頁 631
20.2.7 實例:使用HQL實現Web分頁功能 631
20.2.8 使用HQL進行排序和分組 632
20.2.9 關聯查詢 633
20.2.10 聚合函數 635
20.2.11 Update和Delete語句:更新持久化對象 636
20.2.12 Insert語句:插入記錄 637
20.2.13 命名查詢 638
20.2.14 使用SQL 639
20.3 小結 640
第21章 Hibernate的高級技術 641
21.1 事務管理 641
21.1.1 事務概述 641
21.1.2 事務的隔離等級 642
21.1.3 Hibernate的事務管理 643
21.1.4 基于JDBC的事務管理 643
21.1.5 基于JTA的事務管理 644
21.2 鎖(Locking) 644
21.2.1 悲觀鎖(Pessimistic Locking) 644
21.2.2 樂觀鎖(Optimistic Locking) 646
21.3 查詢緩存(Query Cache) 648
21.4 攔截器和事件 649
21.4.1 攔截器(Interceptors)概述 649
21.4.2 實例:編寫一個Hibernate攔截器 649
21.4.3 事件(Events)概述 653
21.4.4 實例:編寫和注冊事件類 654
21.5 過濾器 656
21.6 小結 657
第4篇 Spring篇
第22章 Spring的Helloworld程序 660
22.1 Spring簡介 660
22.1.1 Spring的主要特性 660
22.1.2 Spring的核心技術 661
22.2 在應用程序中使用Spring 662
22.2.1 MyEclipse 6.5對Spring的支持 662
22.2.2 下載和安裝Spring 663
22.3 實例:開發一個Helloworld程序 664
22.3.1 編寫HelloService接口 664
22.3.2 編寫HelloServiceImpl類 664
22.3.3 裝配HelloServiceImpl類 665
22.3.4 通過裝配Bean的方式獲得HelloService對象 665
22.4 小結 666
第23章 反向控制(Ioc)與裝配JavaBean 667
23.1 反向控制(Ioc) 667
23.1.1 什么是依賴注入 667
23.1.2 傳統解決方案的缺陷 668
23.1.3 用Ioc降低耦合度 669
23.2 手動裝配JavaBean 670
23.2.1 裝配Bean的方法 670
23.2.2 與Bean相關的接口 671
23.2.3 <bean>標簽的常用屬性 672
23.2.4 裝配普通屬性 673
23.2.5 裝配集合屬性 676
23.2.6 設置屬性值為null 680
23.2.7 裝配構造方法 680
23.3 自動裝配JavaBean 683
23.4 分散配置 685
23.5 定制屬性編輯器 687
23.6 小結 690
第24章 Spring中的數據庫技術 691
24.1 獲得DataSource 691
24.1.1 通過JNDI獲得DataSource 691
24.1.2 從第三方的連接池獲得DataSource 692
24.1.3 使用DriverManagerDataSource 693
24.2 在Spring中使用JDBC 693
24.2.1 裝配JdbcTemplate類 693
24.2.2 向數據庫中寫數據 694
24.2.3 從數據庫中讀數據 696
24.2.4 調用存儲過程 699
24.3 自增鍵 700
24.4 異常處理 701
24.5 在Spring中使用Hibernate 702
24.5.1 集成Spring和Hibernate 702
24.5.2 使用HibernateTemplate 703
24.6 小結 705
第25章 Spring的其他高級技術 706
25.1 Spring AOP 706
25.1.1 AOP概述 706
25.1.2 AOP術語簡介 707
25.1.3 4種通知(Advice)的作用 708
25.1.4 通過Advisor指定切入點 714
25.1.5 使用控制流切入點 716
25.2 Spring 的事務管理 718
25.2.1 實例:使用程序控制事務 718
25.2.2 聲明式事務 720
25.2.3 事務屬性的種類 722
25.2.4 設置事務屬性 724
25.2.5 設置特定方法的事務屬性 725
25.3 實例:建立和訪問RMI服務 727
25.4 實例:發送E-mail 729
25.5 調度任務 731
25.6 小結 732
第5篇 綜合實例篇
第26章 Struts 2與Hibernate、Spring的整合 734
26.1 整合Struts 2和Hibernate框架 734
26.1.1 整合的思路 734
26.1.2 整合后的系統層次 735
26.1.3 實現數據訪問層 735
26.1.4 實現業務邏輯層 737
26.1.5 Struts 2和Hibernate共享實體Bean 739
26.2 整合Spring框架 740
26.2.1 裝配數據訪問層 740
26.2.2 裝配業務邏輯層 742
26.2.3 使用Struts 2的Spring插件 742
26.3 小結 743
第27章 網絡硬盤 744
27.1 系統概述 744
27.1.1 系統功能簡介 744
27.1.2 系統架構設計 746
27.2 數據庫設計 746
27.3 實現持久對象層 748
27.3.1 實現用戶實體Bean 749
27.3.2 實現目錄實體Bean 750
27.3.3 實現文件實體Bean 751
27.3.4 映射MySQL存儲過程 752
27.3.5 配置hibernate.cfg.xml 753
27.4 實現數據訪問層 754
27.4.1 實現DAOSupport類 754
27.4.2 實現UserDAO接口和UserDAOImpl類 754
27.4.3 實現DirectoryDAO接口和DirectoryDAOImpl類 755
27.4.4 實現FileDAO接口和FileDAOImpl類 757
27.5 實現業務邏輯層 758
27.5.1 實現UserService接口和UserServiceImpl類 758
27.5.2 實現DirectoryService接口和DirectoryServiceImpl類 760
27.5.3 實現FileService接口和FileServiceImpl類 762
27.5.4 實現服務管理類 764
27.5.5 配置Spring 765
27.6 實現Web表現層 767
27.6.1 實現基礎動作類(BaseAction) 768
27.6.2 實現用戶登錄頁面和處理登錄的Action類 769
27.6.3 實現注冊登錄頁面和處理注冊的Action類 771
27.6.4 實現網絡硬盤主頁面 771
27.6.5 建立目錄 773
27.6.6 實現文件上傳 774
27.6.7 實現文件和目錄下載 775
27.6.8 使用攔截器控制頁面訪問權限 779
27.6.9 其他功能的實現 780
27.7 小結 780
第28章 論壇系統 782
28.1 系統功能簡介 782
28.2 數據庫設計 783
28.3 實現持久對象層 785
28.3.1 實現主題實體Bean 785
28.3.2 實現回復實體Bean 787
28.3.3 配置hibernate.cfg.xml 788
28.4 實現數據訪問層 788
28.4.1 實現TopicDAO接口和TopicDAOImpl類 789
28.4.2 實現ReviewDAO接口和ReviewDAOImpl類 790
28.5 實現業務邏輯層 791
28.5.1 實現TopicService接口和TopicServiceImpl類 791
28.5.2 實現ReviewService接口和ReviewServiceImpl類 793
28.5.3 實現服務管理類 795
28.5.4 配置Spring 795
28.6 整合FCKEditor組件 796
28.6.1 安裝FCKEditor 796
28.6.2 配置FCKEditor 797
28.6.3 修改FCKEditor自帶的Servlet 800
28.6.4 產生FCKEditor的客戶端腳本 800
28.7 實現Web表現層 801
28.7.1 瀏覽論壇的主題列表 801
28.7.2 發布新主題 804
28.7.3 瀏覽主題和回復內容 805
28.7.4 回復主題 806
28.8 小結 807
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining