本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!
源代碼下載
作者:李寧
圖書詳細(xì)信息:
ISBN:9787302195757
定價:79.8元
印次:1-1
裝幀:平裝
印刷日期:2009-4-23
圖書簡介:
SSH是目前最流行的JavaWeb開發(fā)技術(shù)。本書通過對SSH中的各種技術(shù)循序漸進(jìn)地講解,使讀者盡快掌握開發(fā)基于SSH的Web程序的方法。本書內(nèi) 容包括Web客戶端技術(shù)、JSP/Servlet技術(shù)、Struts2(攔截器、類型轉(zhuǎn)換、輸入校驗、上傳和下載文件、Struts2的各種標(biāo)簽、對 AJAX的支持等)、Spring(Ioc容器、裝配JavaBean、Jdbc和Hibernate模板、事務(wù)管理、SpringAOP等)以及 Hibernate(會話、映射、標(biāo)準(zhǔn)查詢API、HQL、事務(wù)管理、鎖等)。除此之外,本書還提供了兩個完整的實例來講解開發(fā)SSH的詳細(xì)步驟和方法。 通過對這兩個實例的學(xué)習(xí),讀者可以對SSH開發(fā)模式有更透徹地理解和認(rèn)識。
本書適合廣大從事JavaWeb開發(fā)工作的技術(shù)人員、對SSH開發(fā)感興趣的人員以及大專院校學(xué)生閱讀,尤其是具有一定的Web開發(fā)經(jīng)驗的技術(shù)人員。
前 言
現(xiàn)在MVC模式已經(jīng)成為Web應(yīng)用的主流開發(fā)模式。而Struts框架幾乎可以和MVC模式劃等號,因為Struts框架已經(jīng)成為了MVC模式的事實標(biāo)準(zhǔn)。隨著Struts 1.x的應(yīng)用浪潮席卷全球數(shù)年后,Struts 2又以嶄新的姿態(tài)與世人見面了。
Struts 2仍然可以繼承Struts 1.x的應(yīng)用模式(Struts + Spring + Hibernate),但關(guān)于 Struts 2+Spring+Hibernate整合的書卻并不多。為了使讀者盡快了解和掌握如何使用 Struts 2、Spring和Hibernate 3個框架整合的方式來開發(fā)Web應(yīng)用系統(tǒng),筆者花費(fèi)了大量的時間來完成這本關(guān)于Struts 2 + Spring +Hibernate 整合的書。為了盡可能保證內(nèi)容的準(zhǔn)確和權(quán)威性,筆者查閱了大量的官方文檔,并針對關(guān)鍵部分閱讀了相應(yīng)的源代碼。
本書的寫作目標(biāo)就是力爭讓讀者盡可能地掌握Struts 2、Spring和Hibernate,以及這3個框架整合的相關(guān)知識。并通過兩個完整實例的講解使讀者盡快融入SSH(Struts+Spring+ Hibernate)大家庭。
本書有何特色
1.從基礎(chǔ)開始,由淺入深
JSP/Servlet技術(shù)是Java Web技術(shù)的基礎(chǔ),很多初學(xué)者在學(xué)習(xí)SSH之前并沒有很好地掌握該技術(shù),因此,本書考慮到這個原因,在第一篇講解了JSP/Servlet以及Web客戶端技術(shù)的基礎(chǔ)知識。除此之外,在第二~四篇的頭一章都以一個簡單的例子開始,以使讀者在學(xué)習(xí)每一篇所講的技術(shù)之前,對這種技術(shù)有一個初步的了解。并且每一篇的章節(jié)是按照由淺入深、循序漸進(jìn)的順序編排的,從而可以使讀者漸進(jìn)式地學(xué)習(xí)本書的知識。
2.各篇獨立,內(nèi)容完整
本書的每一篇都是相對獨立的。如第二篇講解了Struts 2的各種技術(shù);第三篇講解了Hibernate的主要技術(shù),而且每一篇講解的技術(shù)比較完整。這樣就會給想學(xué)習(xí)SSH整合技術(shù),但卻未掌握SSH中的一項或幾項技術(shù)的讀者帶來方便,至少不需要同時準(zhǔn)備幾本書,從而給讀者節(jié)省了大量的時間和金錢。
3.各章實例豐富,使讀者更容易理解書中的知識
本書幾乎在每一章都提供了大量的實例。這些實例充分展現(xiàn)了相關(guān)知識點的實現(xiàn)細(xì)節(jié)。讀者可以在學(xué)習(xí)相關(guān)知識點后,通過上機(jī)實踐這些例子來更深入地了解并掌握這些知識點。
4.提供了完整的實例,使讀者更進(jìn)一步體會SSH開發(fā)模式的精髓
在本章的最后還提供了兩個完整的實例(網(wǎng)絡(luò)硬盤和論壇系統(tǒng))。這兩個實例都采用了SSH模式進(jìn)行開發(fā)。通過對這兩個實例的深入研究,讀者可以比較全面地掌握基于SSH模式的Web應(yīng)用程序的開發(fā)步驟和開發(fā)方法,并可將實例中所采用的技術(shù)應(yīng)用到自己的項目中。
5.使用最新版本的開發(fā)工具和框架
本書所使用的開發(fā)工具和相關(guān)的框架在筆者寫作本書時都是最新版本,如MyEclipse 6.5、Struts 2.0.11.2等。讀者可以在學(xué)習(xí)SSH開發(fā)技術(shù)的同時,接觸到目前最新版本的開發(fā)工具和框架。就算讀者目前所使用的軟件版本低于本書所使用的軟件版本,也可以為未來的工作奠定基礎(chǔ)。
6.配有源代碼與視頻光盤,方便讀者使用
為了方便讀者實驗本書提供的實例程序,特將所有的源代碼都收錄到了配書光盤中,以方便讀者使用。另外,作者特別為本書錄制了一些多媒體視頻演示,將本書中的一些相關(guān)操作直觀地展示給讀者,以達(dá)到更好的學(xué)習(xí)效果。
本書內(nèi)容
第1章:為了使讀者盡快搭建本書所使用的開發(fā)環(huán)境。在這一章將詳細(xì)介紹本書所使用的開發(fā)工具、框架的版本號以及下載、安裝和配置的過程。
第2章:本章介紹了Web技術(shù)的發(fā)展歷史,以及Java Web技術(shù)的基本組成。最后詳細(xì)描述了Java Web技術(shù)中常用的兩種開發(fā)模式:JSP模型1和JSP模型2(MVC模式),以及目前常用的MVC框架。
第3章:本章介紹了在Web系統(tǒng)中常用的客戶端技術(shù),這些技術(shù)包括JavaScript、CSS和AJAX。在本章的開始部分還介紹了一些開發(fā)JavaScript的常用IDE。
第4章:本章介紹了Servlet的基礎(chǔ)知識,如處理請求消息、響應(yīng)消息、Cookie和Session等,最后還詳細(xì)講解了Web開發(fā)中所遇到的中文亂碼問題的解決方案。
第5章:本章介紹了JSP的運(yùn)行原理、基本語法、JSP指令、JSP的內(nèi)置對象、JSP標(biāo)簽和JSTL。
第6章:本章以一個用戶注冊登錄系統(tǒng)為例,演示了如何綜合運(yùn)用JSP/Servlet技術(shù)開發(fā)一個完整的Web應(yīng)用程序。
第7章:本章介紹了Struts 2中的MVC模式,以及Struts 2的體系結(jié)構(gòu)。最后給出了一個簡單的例子來演示開發(fā)基于Struts 2的Web應(yīng)用程序的步驟和方法。
第8章:本章介紹了如何配置Struts 2框架、Struts 2 Action、處理結(jié)果、模型驅(qū)動和異常處理。
第9章:本章介紹了Struts 2的攔截器技術(shù),其中包括攔截器的實現(xiàn)原理、攔截器的配置、實現(xiàn)自定義攔截器以及內(nèi)建攔截器等內(nèi)容。
第10章:本章介紹了Struts 2中的各種類型轉(zhuǎn)換技術(shù)。如OGNL表達(dá)式、數(shù)組和集合類型轉(zhuǎn)換器、類型轉(zhuǎn)換的錯誤處理等。
第11章:本章介紹了傳統(tǒng)的輸入校驗和Struts 2中的輸入校驗。
第12章:本章首先介紹了 文件上傳 的原理,以及如何使用Commons-FileUpload組件上傳文件。本章的重頭戲是講解Struts 2的上傳功能,其中包括上傳單個文件和上傳任意多個文件的方法。在最后介紹了如何使用Struts 2框架下載文件,主要包括使用stream結(jié)果下載文件以及下載文件的權(quán)限控制。
第13章:本章介紹了Struts 2在國際化方面的技術(shù)。為了更深入地理解Struts 2的國際化功能,在本章的開始部分首先介紹了Java對國際化的支持。然后逐步深入介紹Struts 2的國際化技術(shù),主要包括訪問資源文件、資源文件的加載順序等,最后給出了一個例子來演示如何將國際化功能加載到Web應(yīng)用程序中。
第14章:本章詳細(xì)講解了Struts 2框架中的標(biāo)簽。這些標(biāo)簽包括控制標(biāo)簽、數(shù)據(jù)標(biāo)簽、表單標(biāo)簽、非表單標(biāo)簽。
第15章:本章著重介紹了Struts 2框架對AJAX的支持,主要內(nèi)容包括支持AJAX的標(biāo)簽、基于AJAX的校驗、發(fā)布-訂閱事件模型、JSON插件等。
第16章:本章使用了Struts 2技術(shù)重新實現(xiàn)了第6章的用戶注冊登錄系統(tǒng)。在本章實現(xiàn)的用戶注冊登錄系統(tǒng)的功能和第6章實現(xiàn)的該系統(tǒng)的功能相同,只是使用了Struts 2框架來實現(xiàn)相關(guān)的部分。讀者可以從中體會到使用JSP/Servlet和Struts 2在開發(fā)Web應(yīng)用程序中的不同。
第17章:本章介紹了ORM的概念以及Hibernate和EJB的關(guān)系。最后給出一個例子來演示在MyEclipse中開發(fā)基于Hibernate的系統(tǒng)的步驟和方法。
第18章:本章介紹了Hibernate的兩種配置方式:配置文件和注釋。在最后給出了一個例子重新實現(xiàn)了第17章的例子,只不過這個例子使用了注釋來配置Hibernate。
第19章:本章介紹了Hibernate會話的基本操作和O/R映射。其中O/R映射主要介紹了映射主鍵、映射復(fù)合主鍵、映射普通屬性、組件映射、基于注釋的組件映射、多對一、一對多、一對一的關(guān)系。
第20章:本章的第1節(jié)介紹了Hibernate的標(biāo)準(zhǔn)(Criteria)查詢API技術(shù),主要內(nèi)容包括約束條件、分頁、排序、聚合和分組以及QBE。在第2節(jié)介紹了Hibernate中的另外兩種查詢技術(shù):HQL和SQL。其中HQL主要介紹了From、Select、Where、Update、Insert以及Delete語句,還介紹了命名參數(shù)、排序和分組、關(guān)聯(lián)查詢、命名查詢等。
第21章:本章介紹了Hibernate的一些高級技術(shù),主要包括事務(wù)管理、鎖機(jī)制、查詢緩存、攔截器和事件與過濾器。
第22章:本章介紹了Spring的主要特性和核心技術(shù),在最后還給出了一個例子來演示使用Spring框架開發(fā)程序的過程。
第23章:本章介紹了Spring框架的核心思想,反向控制(Ioc),同時還詳細(xì)講解了Spring框架中最常用的裝配Java Bean技術(shù)以及分散配置和定制屬性編輯器。
第24章:本章介紹了Spring中的數(shù)據(jù)庫技術(shù),主要包括在Spring中使用數(shù)據(jù)源連接數(shù)據(jù)庫、操作JDBC的JdbcTemplate;操作Hibernate的HibernateTemplate以及自增鍵和異常的處理。
第25章:本章主要介紹了Spring AOP技術(shù)的基礎(chǔ)知識以及事務(wù)管理。除此之外,還介紹了Spring的其他一些高級屬性,如建立和訪問RMI服務(wù)、發(fā)送Email、調(diào)度任務(wù)等。
第26章:從本章開始逐漸涉及到了SSH開發(fā)的全過程。在本章主要介紹了Struts 2、Spring和Hibernate 3個框架整合的思路,以及基于SSH的系統(tǒng)的層次結(jié)構(gòu)。
第27、28章:在這兩章給出了兩個完整的使用SSH開發(fā)的例子(網(wǎng)絡(luò)硬盤和論壇系統(tǒng))。在這兩個例子中詳細(xì)描述了開發(fā)基于SSH的系統(tǒng)的步驟和其中所涉及到的技術(shù)。開發(fā)這兩個例子的基本步驟類似,不過它們所涉及到的技術(shù)有一定的區(qū)別,如在論壇系統(tǒng)中涉及到了一個Web編輯器(FCKEditor)的安裝和使用。
適合閱讀本書的讀者
* 初步掌握J(rèn)ava技術(shù),想進(jìn)一步學(xué)習(xí)SSH整合開發(fā)的讀者
* 對SSH整合技術(shù)有了一定的了解,想進(jìn)一步提高的讀者
* 正在使用SSH整合技術(shù)開發(fā)項目,想查閱相關(guān)技術(shù)的讀者
* 大中專院校的學(xué)生
* 社會培訓(xùn)學(xué)生
目 錄
第1篇 Web開發(fā)基礎(chǔ)篇
第1章 搭建開發(fā)環(huán)境 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 小結(jié) 7
第2章 Java Web應(yīng)用開發(fā)基礎(chǔ) 8
2.1 Web技術(shù)的發(fā)展 8
2.2 Java Web技術(shù) 10
2.2.1 Java Web程序的基本組成 11
2.2.2 Java Web程序的目錄結(jié)構(gòu) 11
2.2.3 Java Web程序的配置文件 11
2.3 MVC模式與MVC框架 12
2.3.1 JSP模型1和JSP模型2 12
2.3.2 Web應(yīng)用程序需要的基礎(chǔ)服務(wù) 13
2.3.3 MVC模式概述 14
2.3.4 常用的MVC框架 15
2.4 小結(jié) 16
第3章 Web開發(fā)中的客戶端技術(shù) 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語法基礎(chǔ) 20
3.2.1 實例:編寫第一個JavaScript程序:Greet 21
3.2.2 變量 22
3.2.3 原始類型 22
3.2.4 類型轉(zhuǎn)換 26
3.2.5 函數(shù)與函數(shù)調(diào)用 28
3.2.6 類和對象 30
3.3 JavaScript高級技術(shù) 32
3.3.1 DOM技術(shù)概述 32
3.3.2 獲得HTML元素的3種方法 34
3.3.3 實例:圖像自動切換 36
3.3.4 正則表達(dá)式 37
3.3.5 實例:表格排序 38
3.4 CSS基礎(chǔ) 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基礎(chǔ) 44
3.5.1 AJAX概述 44
3.5.2 實例:使用XMLHttpRequest獲得Web資源 45
3.5.3 實例:使用XMLHttpRequest跨域訪問Web資源 46
3.5.4 實例:AJAX的3種交換數(shù)據(jù)方法 47
3.6 小結(jié) 49
第4章 Servlet技術(shù) 50
4.1 Servlet的Helloworld程序 50
4.1.1 實例:在MyEclipse中編寫Helloworld程序 50
4.1.2 實例:手工編寫Helloworld程序 53
4.2 Servlet基礎(chǔ) 54
4.2.1 配置數(shù)據(jù)庫連接池 55
4.2.2 數(shù)據(jù)庫連接池的應(yīng)用 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輸出響應(yīng)消息 64
4.2.8 實例:用ServletOutputStream顯示圖像 65
4.2.9 實例:使用RequestDispatcher包含Web資源 66
4.2.10 實例:使用RequestDispatcher轉(zhuǎn)發(fā)Web資源 68
4.3 HttpServletResponse類的其他功能 69
4.3.1 產(chǎn)生狀態(tài)響應(yīng)碼 70
4.3.2 設(shè)置響應(yīng)消息頭 71
4.3.3 實例:驗證響應(yīng)頭設(shè)置情況 73
4..4 使用HttpServletRequest獲得請求消息 73
4.4.1 獲取請求行消息 74
4.4.2 獲取網(wǎng)絡(luò)連接消息 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讀寫復(fù)雜數(shù)據(jù) 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開發(fā)的中文問題 87
4.7.1 Java的編碼原理 87
4.7.2 實例:解決輸出中文亂碼問題 89
4.7.3 實例:解決服務(wù)端程序讀取中文請求消息的亂碼問題 90
4.7.4 實例:用AJAX技術(shù)發(fā)送和接收中文信息 92
4.7.5 實例:在請求消息頭和響應(yīng)消息頭中轉(zhuǎn)輸中文 95
4.8 小結(jié) 97
第5章 JSP技術(shù) 98
5.1 用MyEclipse編寫第一個JSP程序 98
5.1.1 實例:編寫顯示服務(wù)器當(dāng)前時間的JSP程序 98
5.1.2 調(diào)試JSP程序 100
5.1.3 改變JSP的訪問路徑和擴(kuò)展名 101
5.1.4 手動發(fā)布JSP程序 102
5.2 JSP的運(yùn)行原理 102
5.2.1 Tomcat如何處理JSP頁 103
5.2.2 分析由JSP生成的Servlet代碼 104
5.3 JSP基本語法 108
5.3.1 JSP表達(dá)式 109
5.3.2 在JSP中嵌入Java代碼 109
5.3.3 JSP聲明 111
5.3.4 JSP表達(dá)式語言(EL) 113
5.3.5 實例:用EL函數(shù)替換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個內(nèi)置對象 126
5.5.1 out輸出對象 126
5.5.2 pageContext封裝對象 128
5.5.3 其他的JSP內(nèi)置對象 129
5.6 JSP標(biāo)簽 132
5.6.1 <jsp:include>插入標(biāo)簽 132
5.6.2 <jsp:forward>轉(zhuǎn)發(fā)標(biāo)簽 134
5.6.3 <jsp:param>傳參標(biāo)簽 135
5.6.4 <jsp:useBean>創(chuàng)建Bean標(biāo)簽 136
5.6.5 <jsp:setProperty>設(shè)置屬性值標(biāo)簽 138
5.6.6 <jsp:getProperty>獲取屬性值標(biāo)簽 140
5.7 JSP的標(biāo)準(zhǔn)標(biāo)簽庫(JSTL) 140
5.7.1 如何使用JSTL 141
5.7.2 條件標(biāo)簽 142
5.7.3 循環(huán)標(biāo)簽 144
5.8 小結(jié) 147
第6章 用Servlet和JSP實現(xiàn)注冊登錄系統(tǒng) 148
6.1 系統(tǒng)概述 148
6.1.1 系統(tǒng)功能簡介 148
6.1.2 系統(tǒng)總體結(jié)構(gòu) 149
6.2 設(shè)計數(shù)據(jù)庫 149
6.3 實現(xiàn)系統(tǒng)的基礎(chǔ)類 150
6.3.1 實現(xiàn)訪問數(shù)據(jù)庫的DBServlet類 150
6.3.2 實現(xiàn)MD5加密 152
6.3.3 實現(xiàn)圖形驗證碼 152
6.4 實現(xiàn)注冊系統(tǒng) 155
6.4.1 實現(xiàn)注冊Servlet類 155
6.4.2 實現(xiàn)注冊系統(tǒng)的主頁面 157
6.4.3 實現(xiàn)結(jié)果JSP頁面 159
6.5 實現(xiàn)登錄系統(tǒng) 160
6.5.1 實現(xiàn)登錄Servlet 160
6.5.2 實現(xiàn)登錄系統(tǒng)主頁面 162
6.6 小結(jié) 163
第2篇 Struts 2篇
第7章 編寫Struts 2的第一個程序 166
7.1 Struts 2中的MVC模式 166
7.2 Struts 2的體系結(jié)構(gòu) 167
7.2.1 Struts 2的工作流程 167
7.2.2 Struts 2的配置文件 167
7.2.3 Struts 2的控制器 169
7.3 實例:圖書查詢系統(tǒng) 170
7.3.1 下載和安裝Struts 2 170
7.3.2 編寫數(shù)據(jù)處理類 171
7.3.3 編寫和配置Action類 172
7.3.4 編寫顯示查詢結(jié)果的JSP頁面 174
7.3.5 編寫輸入查詢信息的JSP頁面 176
7.4 小結(jié) 177
第8章 Struts 2進(jìn)階 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注釋:設(shè)置當(dāng)前包的父包 195
8.3.2 Namespace注釋:指定當(dāng)前包的命名空間 196
8.3.3 Results與Result注釋:指定當(dāng)前Action結(jié)果 197
8.3.4 實例:用注釋配置Action 197
8.4 Struts 2的Action 200
8.4.1 Action類的getter和setter方法 200
8.4.2 實現(xiàn)Action接口 202
8.4.3 繼承ActionSupport類 203
8.4.4 實例:用ActionContext訪問Servlet API 205
8.4.5 實例:通過aware攔截器訪問Servlet API 209
8.4.6 實例:利用動態(tài)方法處理多個提交請求 211
8.4.7 實例:利用method屬性處理多個提交請求 213
8.4.8 使用通配符 214
8.4.9 默認(rèn)Action 218
8.5 處理結(jié)果 218
8.5.1 配置結(jié)果 218
8.5.2 Struts 2支持的處理結(jié)果類型 219
8.5.3 用通配符指定結(jié)果 222
8.5.4 用請求參數(shù)指定結(jié)果 223
8.6 模型驅(qū)動 224
8.6.1 ModelDriven概述 224
8.6.2 實例:使用模型驅(qū)動改進(jìn)登錄程序 226
8.7 處理異常 228
8.7.1 Struts 2處理異常的原理 229
8.7.2 實例:登錄系統(tǒng)的異常處理 230
8.8 小結(jié) 233
第9章 Struts 2的攔截器 234
9.1 理解攔截器 234
9.1.1 攔截器的實現(xiàn)原理 234
9.1.2 實例:模擬Struts 2實現(xiàn)一個攔截器系統(tǒng) 237
9.2 配置Struts 2攔截器 242
9.2.1 配置攔截器 242
9.2.2 使用攔截器 244
9.2.3 默認(rèn)攔截器 245
9.3 實例:自定義攔截器 247
9.3.1 編寫攔截器類 247
9.3.2 配置自定義攔截器 249
9.4 攔截器的高級技術(shù) 251
9.4.1 過濾指定的方法 251
9.4.2 攔截器執(zhí)行順序 254
9.4.3 攔截器結(jié)果監(jiān)聽器 255
9.5 Struts 2內(nèi)建的攔截器 258
9.5.1 內(nèi)建攔截器 258
9.5.2 內(nèi)建攔截器的配置 260
9.6 實例:編寫權(quán)限驗證攔截器 262
9.6.1 編寫權(quán)限驗證攔截器類 263
9.6.2 配置權(quán)限控制攔截器 263
9.7 小結(jié) 265
第10章 Struts 2的類型轉(zhuǎn)換 266
10.1 為什么要進(jìn)行類型轉(zhuǎn)換 266
10.1.1 客戶端和服務(wù)端之間的數(shù)據(jù)處理過程 266
10.1.2 傳統(tǒng)的類型轉(zhuǎn)換 267
10.2 使用Struts 2類型轉(zhuǎn)換器 270
10.2.1 Struts 2內(nèi)建的類型轉(zhuǎn)換器 271
10.2.2 實例:實現(xiàn)基于OGNL的類型轉(zhuǎn)換器 274
10.2.3 配置全局類型轉(zhuǎn)換器 278
10.2.4 實例:實現(xiàn)基于Struts 2的類型轉(zhuǎn)換器 280
10.2.5 實例:實現(xiàn)數(shù)組類型轉(zhuǎn)換器 282
10.2.6 實例:實現(xiàn)集合類型轉(zhuǎn)換器 284
10.3 實例:使用OGNL表達(dá)式進(jìn)行類型轉(zhuǎn)換 287
10.4 Struts 2對Collection和Map的支持 289
10.4.1 指定集合元素的類型 289
10.4.2 Set和索引屬性 291
10.5 類型轉(zhuǎn)換的錯誤處理 292
10.6 小結(jié) 294
第11章 Struts 2的輸入校驗 295
11.1 傳統(tǒng)的數(shù)據(jù)校驗方法 295
11.1.1 用JavaScript進(jìn)行客戶端校驗 295
11.1.2 手工進(jìn)行服務(wù)端校驗 300
11.2 Struts 2的數(shù)據(jù)校驗 303
11.2.1 Struts 2使用validate方法校驗數(shù)據(jù)的原理 303
11.2.2 實例:使用validate方法進(jìn)行輸入校驗 305
11.2.3 實例:使用validateXxx方法進(jìn)行輸入校驗 308
11.2.4 Struts 2的輸入校驗流程 311
11.3 使用Validation框架進(jìn)行輸入校驗 312
11.3.1 實例:服務(wù)端校驗 313
11.3.2 字段校驗器和非字段校驗器 315
11.3.3 國際化錯誤提示信息 317
11.3.4 實例:客戶端校驗 319
11.3.5 校驗文件的命名規(guī)則 323
11.3.6 短路校驗器 325
11.4 Validation框架的內(nèi)建校驗器 327
11.4.1 注冊和引用校驗器 327
11.4.2 轉(zhuǎn)換(conversion)校驗器 328
11.4.3 日期(date)校驗器 329
11.4.4 雙精度浮點數(shù)(double)校驗器 330
11.4.5 郵件地址(email)校驗器 331
11.4.6 表達(dá)式(expression)校驗器 332
11.4.7 字段表達(dá)式(fieldexpression)校驗器 332
11.4.8 整數(shù)(int)校驗器 333
11.4.9 正則表達(dá)式(regex)校驗器 334
11.4.10 必填(required)校驗器 335
11.4.11 必填字符串(requiredstring)校驗器 335
11.4.12 字符串長度(stringlength)校驗器 336
11.4.13 網(wǎng)址(url)校驗器 337
11.4.14 visitor校驗器 337
11.5 小結(jié) 341
第12章 文件的上傳和下載 342
12.1 文件上傳 原理 342
12.1.1 表單數(shù)據(jù)的編碼方式 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 實例:用數(shù)組上傳固定數(shù)目的文件 363
12.4.2 實例:用List上傳任意數(shù)目的文件 366
12.5 文件下載 368
12.5.1 下載文件的中文問題 368
12.5.2 用stream結(jié)果下載文件 369
12.5.3 下載文件的授權(quán)控制 371
12.6 小結(jié) 372
第13章 國際化 373
13.1 國際化基礎(chǔ) 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的國際化基礎(chǔ) 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應(yīng)用程序 399
13.4.1 通過i18n攔截器實現(xiàn)國際化 400
13.4.2 為register.jsp頁面增加語言選擇列表 401
13.4.3 將register.jsp頁面映射成Action 402
13.5 小結(jié) 404
第14章 Struts 2的標(biāo)簽庫 405
14.1 Struts 2標(biāo)簽基礎(chǔ) 405
14.1.1 Struts 2標(biāo)簽的分類 405
14.1.2 使用Struts 2標(biāo)簽 406
14.1.3 Struts 2中的OGNL表達(dá)式 408
14.1.4 用OGNL表達(dá)式訪問內(nèi)置對象 411
14.1.5 用OGNL表達(dá)式操作集合 412
14.1.6 Lamdba(λ)表達(dá)式 414
14.2 控制標(biāo)簽 415
14.2.1 if/elseif/else標(biāo)簽:條件邏輯控制 415
14.2.2 iterator標(biāo)簽:數(shù)組、集合迭代 418
14.2.3 append標(biāo)簽:將集合以追加方式合并為新集合 422
14.2.4 generator標(biāo)簽:將字符串分割成多個子串 424
14.2.5 merge標(biāo)簽:將集合以交替方式合并為新集合 427
14.2.6 subset標(biāo)簽:獲得集合的子集 428
14.2.7 sort標(biāo)簽:對集合進(jìn)行排序 430
14.3 數(shù)據(jù)標(biāo)簽 432
14.3.1 action標(biāo)簽:在JSP頁面中直接訪問Action 432
14.3.2 bean標(biāo)簽:創(chuàng)建JavaBean的對象實例 434
14.3.3 date標(biāo)簽:格式化日期/時間 436
14.3.4 debug標(biāo)簽:顯示調(diào)試信息 438
14.3.5 include標(biāo)簽:包含Web資源 439
14.3.6 param標(biāo)簽:為其他的標(biāo)簽提供參數(shù) 440
14.3.7 property標(biāo)簽:輸出指定的值 440
14.3.8 push標(biāo)簽:將指定值放到ValueStack棧頂 441
14.3.9 set標(biāo)簽:將某個值保存在指定的范圍 442
14.3.10 url標(biāo)簽:生成URL地址 444
14.4 表單標(biāo)簽 446
14.4.1 表單標(biāo)簽的通用屬性 446
14.4.2 表單標(biāo)簽的name和value屬性 447
14.4.3 form、submit和reset標(biāo)簽:表單、提交和重置 449
14.4.4 checkboxlist標(biāo)簽:生成多個復(fù)選框 449
14.4.5 combobox標(biāo)簽:組合單行文本框和下拉列表框 452
14.4.6 datetimespicker標(biāo)簽:組合文本框和日期、時間選擇框 454
14.4.7 doubleselect標(biāo)簽:生成級聯(lián)列表框 457
14.4.8 head標(biāo)簽:添加CSS和JavaScript 458
14.4.9 optiontransferselect 標(biāo)簽:生成可交互的兩個列表框 459
14.4.10 select標(biāo)簽:生成列表框 461
14.4.11 optgroup標(biāo)簽:生成下拉列表框選項組 462
14.4.12 radio標(biāo)簽:生成多個單選框 463
14.4.13 token標(biāo)簽:防止多次提交表單 464
14.4.14 updownselect標(biāo)簽:生成高級列表框 465
14.4.15 其他的表單標(biāo)簽 467
14.5 非表單標(biāo)簽 467
14.5.1 fielderror標(biāo)簽:顯示字段錯誤信息 467
14.5.2 actionerror和actionmessage標(biāo)簽:顯示動作錯誤和動作消息 468
14.5.3 component標(biāo)簽:使用模板 469
14.6 小結(jié) 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 設(shè)置校驗規(guī)則 477
15.3 在表單中使用AJAX 479
15.3.1 實現(xiàn)可異步提交的表單 479
15.3.2 實現(xiàn)Action類 479
15.3.3 實現(xiàn)結(jié)果處理頁面 480
15.3.4 執(zhí)行JavaScript代碼 481
15.4 發(fā)布-訂閱(pub-sub)事件模型 483
15.4.1 pub-sub事件模型的原理 483
15.4.2 pub-sub事件模型演示 484
15.4.3 阻止請求服務(wù)端資源 487
15.5 使用Struts 2中的AJAX標(biāo)簽 488
15.5.1 div標(biāo)簽的基本應(yīng)用 488
15.5.2 使用div標(biāo)簽執(zhí)行JavaScript 491
15.5.3 手動控制div標(biāo)簽的更新 493
15.5.4 submit標(biāo)簽:發(fā)送異步請求 496
15.5.5 a標(biāo)簽:可異步提交請求的鏈接 498
15.5.6 autocompleter標(biāo)簽:帶自運(yùn)完成功能的文本框 501
15.5.7 tabbedPanel標(biāo)簽:生成Tab頁 507
15.5.8 treenode和tree標(biāo)簽:樹節(jié)點和樹組件 511
15.6 使用JSON插件實現(xiàn)AJAX 513
15.6.1 下載和安裝JSON插件 513
15.6.2 下載和安裝prototype.js 513
15.6.3 實現(xiàn)Action類 514
15.6.4 在JSP頁面中通過Prototype請求Action 515
15.7 小結(jié) 517
第16章 用Struts 2實現(xiàn)注冊登錄系統(tǒng) 518
16.1 系統(tǒng)總體結(jié)構(gòu) 518
16.2 實現(xiàn)DAO層 518
16.2.1 實現(xiàn)DAOSupport類 519
16.2.2 實現(xiàn)UserDAO接口 520
16.2.3 實現(xiàn)UserDAOImpl類 520
16.3 實現(xiàn)Action類 522
16.3.1 實現(xiàn)模型類(User) 522
16.3.2 實現(xiàn)LoginAction類 523
16.3.3 實現(xiàn)RegisterAction類 525
16.4 輸入校驗 526
16.4.1 校驗登錄頁面 526
16.4.2 校驗注冊頁面 527
16.5 實現(xiàn)表現(xiàn)層頁面 528
16.5.1 實現(xiàn)登錄頁面(login.jsp) 528
16.5.2 實現(xiàn)注冊頁面(register.jsp) 530
16.5.3 實現(xiàn)主頁面(main.jsp) 531
16.6 實現(xiàn)其他的功能 532
16.6.1 使用Action類生成驗證碼圖像 532
16.6.2 使用攔截器驗證頁面訪問權(quán)限 534
16.7 小結(jié) 536
第3篇 Hibernate篇
第17章 Hibernate的Helloworld程序 538
17.1 Hibernate概述 538
17.1.1 為什么要使用ORM 538
17.1.2 Hibernate和EJB的關(guān)系 539
17.2 在應(yīng)用程序中使用Hibernate 3 539
17.2.1 MyEclipse對Hibernate 3的支持 540
17.2.2 下載和安裝新版本的Hibernate 3 542
17.3 第1個Hibernate程序 543
17.3.1 開發(fā)Hibernate程序的基本步驟 543
17.3.2 建立數(shù)據(jù)表 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 小結(jié) 552
第18章 配置Hibernate 553
18.1 用傳統(tǒng)的方法配置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數(shù)據(jù)源 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注釋產(chǎn)生主鍵值 567
18.2.7 使用@Basic和@Transient注釋 568
18.2.8 更高級的Hibernate注釋 568
18.3 使用注釋重新實現(xiàn)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 小結(jié) 572
第19章 Hibernate的會話與O/R映射 573
19.1 會話(Session)的基本應(yīng)用 573
19.1.1 保存持久化對象 573
19.1.2 判斷持久化對象之間的關(guān)系 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 映射復(fù)合主鍵 580
19.2.3 實例:主鍵和復(fù)合主鍵的查詢和更新 581
19.2.4 映射普通屬性 586
19.2.5 建立組件(Component)映射 587
19.2.6 實例:組件映射的應(yīng)用 588
19.2.7 基于注釋的組件映射 592
19.2.8 建立多對一(many-to-one)單向關(guān)聯(lián)關(guān)系 593
19.2.9 實例:多對一關(guān)系的演示 593
19.2.10 基于注釋的多對一關(guān)系映射 597
19.2.11 建立一對多(one-to-many)的雙向關(guān)聯(lián)關(guān)系 598
19.2.12 實例:一對多雙向關(guān)聯(lián)的演示 598
19.2.13 基于注釋的一對多映射 601
19.2.14 建立基于外鍵的一對一(one-to-one)的關(guān)系映射 602
19.2.15 實例:基于外鍵的一對一關(guān)系演示 603
19.2.16 建立基于主鍵的一對一的關(guān)系映射 606
19.2.17 實例:基于主鍵的一對一關(guān)系映射 607
19.3 小結(jié) 610
第20章 Hibernate的查詢與更新技術(shù) 612
20.1 標(biāo)準(zhǔn)(Criteria)查詢API 612
20.1.1 實例:一個簡單的例子 612
20.1.2 查詢的約束條件 613
20.1.3 對查詢結(jié)果進(jìn)行分頁 615
20.1.4 實例:實現(xiàn)Web分頁功能 617
20.1.5 只獲得一個持久化對象 620
20.1.6 對查詢結(jié)果進(jìn)行排序 621
20.1.7 多個Criteria之間的關(guān)聯(lián) 621
20.1.8 聚合和分組 622
20.1.9 使用QBE(Query By Example) 624
20.2 HQL和SQL技術(shù) 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 使用命名參數(shù) 630
20.2.6 使用Query進(jìn)行分頁 631
20.2.7 實例:使用HQL實現(xiàn)Web分頁功能 631
20.2.8 使用HQL進(jìn)行排序和分組 632
20.2.9 關(guān)聯(lián)查詢 633
20.2.10 聚合函數(shù) 635
20.2.11 Update和Delete語句:更新持久化對象 636
20.2.12 Insert語句:插入記錄 637
20.2.13 命名查詢 638
20.2.14 使用SQL 639
20.3 小結(jié) 640
第21章 Hibernate的高級技術(shù) 641
21.1 事務(wù)管理 641
21.1.1 事務(wù)概述 641
21.1.2 事務(wù)的隔離等級 642
21.1.3 Hibernate的事務(wù)管理 643
21.1.4 基于JDBC的事務(wù)管理 643
21.1.5 基于JTA的事務(wù)管理 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 小結(jié) 657
第4篇 Spring篇
第22章 Spring的Helloworld程序 660
22.1 Spring簡介 660
22.1.1 Spring的主要特性 660
22.1.2 Spring的核心技術(shù) 661
22.2 在應(yīng)用程序中使用Spring 662
22.2.1 MyEclipse 6.5對Spring的支持 662
22.2.2 下載和安裝Spring 663
22.3 實例:開發(fā)一個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 小結(jié) 666
第23章 反向控制(Ioc)與裝配JavaBean 667
23.1 反向控制(Ioc) 667
23.1.1 什么是依賴注入 667
23.1.2 傳統(tǒng)解決方案的缺陷 668
23.1.3 用Ioc降低耦合度 669
23.2 手動裝配JavaBean 670
23.2.1 裝配Bean的方法 670
23.2.2 與Bean相關(guān)的接口 671
23.2.3 <bean>標(biāo)簽的常用屬性 672
23.2.4 裝配普通屬性 673
23.2.5 裝配集合屬性 676
23.2.6 設(shè)置屬性值為null 680
23.2.7 裝配構(gòu)造方法 680
23.3 自動裝配JavaBean 683
23.4 分散配置 685
23.5 定制屬性編輯器 687
23.6 小結(jié) 690
第24章 Spring中的數(shù)據(jù)庫技術(shù) 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 向數(shù)據(jù)庫中寫數(shù)據(jù) 694
24.2.3 從數(shù)據(jù)庫中讀數(shù)據(jù) 696
24.2.4 調(diào)用存儲過程 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 小結(jié) 705
第25章 Spring的其他高級技術(shù) 706
25.1 Spring AOP 706
25.1.1 AOP概述 706
25.1.2 AOP術(shù)語簡介 707
25.1.3 4種通知(Advice)的作用 708
25.1.4 通過Advisor指定切入點 714
25.1.5 使用控制流切入點 716
25.2 Spring 的事務(wù)管理 718
25.2.1 實例:使用程序控制事務(wù) 718
25.2.2 聲明式事務(wù) 720
25.2.3 事務(wù)屬性的種類 722
25.2.4 設(shè)置事務(wù)屬性 724
25.2.5 設(shè)置特定方法的事務(wù)屬性 725
25.3 實例:建立和訪問RMI服務(wù) 727
25.4 實例:發(fā)送E-mail 729
25.5 調(diào)度任務(wù) 731
25.6 小結(jié) 732
第5篇 綜合實例篇
第26章 Struts 2與Hibernate、Spring的整合 734
26.1 整合Struts 2和Hibernate框架 734
26.1.1 整合的思路 734
26.1.2 整合后的系統(tǒng)層次 735
26.1.3 實現(xiàn)數(shù)據(jù)訪問層 735
26.1.4 實現(xiàn)業(yè)務(wù)邏輯層 737
26.1.5 Struts 2和Hibernate共享實體Bean 739
26.2 整合Spring框架 740
26.2.1 裝配數(shù)據(jù)訪問層 740
26.2.2 裝配業(yè)務(wù)邏輯層 742
26.2.3 使用Struts 2的Spring插件 742
26.3 小結(jié) 743
第27章 網(wǎng)絡(luò)硬盤 744
27.1 系統(tǒng)概述 744
27.1.1 系統(tǒng)功能簡介 744
27.1.2 系統(tǒng)架構(gòu)設(shè)計 746
27.2 數(shù)據(jù)庫設(shè)計 746
27.3 實現(xiàn)持久對象層 748
27.3.1 實現(xiàn)用戶實體Bean 749
27.3.2 實現(xiàn)目錄實體Bean 750
27.3.3 實現(xiàn)文件實體Bean 751
27.3.4 映射MySQL存儲過程 752
27.3.5 配置hibernate.cfg.xml 753
27.4 實現(xiàn)數(shù)據(jù)訪問層 754
27.4.1 實現(xiàn)DAOSupport類 754
27.4.2 實現(xiàn)UserDAO接口和UserDAOImpl類 754
27.4.3 實現(xiàn)DirectoryDAO接口和DirectoryDAOImpl類 755
27.4.4 實現(xiàn)FileDAO接口和FileDAOImpl類 757
27.5 實現(xiàn)業(yè)務(wù)邏輯層 758
27.5.1 實現(xiàn)UserService接口和UserServiceImpl類 758
27.5.2 實現(xiàn)DirectoryService接口和DirectoryServiceImpl類 760
27.5.3 實現(xiàn)FileService接口和FileServiceImpl類 762
27.5.4 實現(xiàn)服務(wù)管理類 764
27.5.5 配置Spring 765
27.6 實現(xiàn)Web表現(xiàn)層 767
27.6.1 實現(xiàn)基礎(chǔ)動作類(BaseAction) 768
27.6.2 實現(xiàn)用戶登錄頁面和處理登錄的Action類 769
27.6.3 實現(xiàn)注冊登錄頁面和處理注冊的Action類 771
27.6.4 實現(xiàn)網(wǎng)絡(luò)硬盤主頁面 771
27.6.5 建立目錄 773
27.6.6 實現(xiàn) 文件上傳 774
27.6.7 實現(xiàn)文件和目錄下載 775
27.6.8 使用攔截器控制頁面訪問權(quán)限 779
27.6.9 其他功能的實現(xiàn) 780
27.7 小結(jié) 780
第28章 論壇系統(tǒng) 782
28.1 系統(tǒng)功能簡介 782
28.2 數(shù)據(jù)庫設(shè)計 783
28.3 實現(xiàn)持久對象層 785
28.3.1 實現(xiàn)主題實體Bean 785
28.3.2 實現(xiàn)回復(fù)實體Bean 787
28.3.3 配置hibernate.cfg.xml 788
28.4 實現(xiàn)數(shù)據(jù)訪問層 788
28.4.1 實現(xiàn)TopicDAO接口和TopicDAOImpl類 789
28.4.2 實現(xiàn)ReviewDAO接口和ReviewDAOImpl類 790
28.5 實現(xiàn)業(yè)務(wù)邏輯層 791
28.5.1 實現(xiàn)TopicService接口和TopicServiceImpl類 791
28.5.2 實現(xiàn)ReviewService接口和ReviewServiceImpl類 793
28.5.3 實現(xiàn)服務(wù)管理類 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 產(chǎn)生FCKEditor的客戶端腳本 800
28.7 實現(xiàn)Web表現(xiàn)層 801
28.7.1 瀏覽論壇的主題列表 801
28.7.2 發(fā)布新主題 804
28.7.3 瀏覽主題和回復(fù)內(nèi)容 805
28.7.4 回復(fù)主題 806
28.8 小結(jié) 807
國內(nèi)最棒的Google Android技術(shù)社區(qū)(eoeandroid),歡迎訪問!
《銀河系列原創(chuàng)教程》 發(fā)布
《Java Web開發(fā)速學(xué)寶典》 出版,歡迎定購
源代碼下載

作者:李寧
圖書詳細(xì)信息:
ISBN:9787302195757
定價:79.8元
印次:1-1
裝幀:平裝
印刷日期:2009-4-23
|
SSH是目前最流行的JavaWeb開發(fā)技術(shù)。本書通過對SSH中的各種技術(shù)循序漸進(jìn)地講解,使讀者盡快掌握開發(fā)基于SSH的Web程序的方法。本書內(nèi) 容包括Web客戶端技術(shù)、JSP/Servlet技術(shù)、Struts2(攔截器、類型轉(zhuǎn)換、輸入校驗、上傳和下載文件、Struts2的各種標(biāo)簽、對 AJAX的支持等)、Spring(Ioc容器、裝配JavaBean、Jdbc和Hibernate模板、事務(wù)管理、SpringAOP等)以及 Hibernate(會話、映射、標(biāo)準(zhǔn)查詢API、HQL、事務(wù)管理、鎖等)。除此之外,本書還提供了兩個完整的實例來講解開發(fā)SSH的詳細(xì)步驟和方法。 通過對這兩個實例的學(xué)習(xí),讀者可以對SSH開發(fā)模式有更透徹地理解和認(rèn)識。
本書適合廣大從事JavaWeb開發(fā)工作的技術(shù)人員、對SSH開發(fā)感興趣的人員以及大專院校學(xué)生閱讀,尤其是具有一定的Web開發(fā)經(jīng)驗的技術(shù)人員。
前 言
現(xiàn)在MVC模式已經(jīng)成為Web應(yīng)用的主流開發(fā)模式。而Struts框架幾乎可以和MVC模式劃等號,因為Struts框架已經(jīng)成為了MVC模式的事實標(biāo)準(zhǔn)。隨著Struts 1.x的應(yīng)用浪潮席卷全球數(shù)年后,Struts 2又以嶄新的姿態(tài)與世人見面了。
Struts 2仍然可以繼承Struts 1.x的應(yīng)用模式(Struts + Spring + Hibernate),但關(guān)于 Struts 2+Spring+Hibernate整合的書卻并不多。為了使讀者盡快了解和掌握如何使用 Struts 2、Spring和Hibernate 3個框架整合的方式來開發(fā)Web應(yīng)用系統(tǒng),筆者花費(fèi)了大量的時間來完成這本關(guān)于Struts 2 + Spring +Hibernate 整合的書。為了盡可能保證內(nèi)容的準(zhǔn)確和權(quán)威性,筆者查閱了大量的官方文檔,并針對關(guān)鍵部分閱讀了相應(yīng)的源代碼。
本書的寫作目標(biāo)就是力爭讓讀者盡可能地掌握Struts 2、Spring和Hibernate,以及這3個框架整合的相關(guān)知識。并通過兩個完整實例的講解使讀者盡快融入SSH(Struts+Spring+ Hibernate)大家庭。
本書有何特色
1.從基礎(chǔ)開始,由淺入深
JSP/Servlet技術(shù)是Java Web技術(shù)的基礎(chǔ),很多初學(xué)者在學(xué)習(xí)SSH之前并沒有很好地掌握該技術(shù),因此,本書考慮到這個原因,在第一篇講解了JSP/Servlet以及Web客戶端技術(shù)的基礎(chǔ)知識。除此之外,在第二~四篇的頭一章都以一個簡單的例子開始,以使讀者在學(xué)習(xí)每一篇所講的技術(shù)之前,對這種技術(shù)有一個初步的了解。并且每一篇的章節(jié)是按照由淺入深、循序漸進(jìn)的順序編排的,從而可以使讀者漸進(jìn)式地學(xué)習(xí)本書的知識。
2.各篇獨立,內(nèi)容完整
本書的每一篇都是相對獨立的。如第二篇講解了Struts 2的各種技術(shù);第三篇講解了Hibernate的主要技術(shù),而且每一篇講解的技術(shù)比較完整。這樣就會給想學(xué)習(xí)SSH整合技術(shù),但卻未掌握SSH中的一項或幾項技術(shù)的讀者帶來方便,至少不需要同時準(zhǔn)備幾本書,從而給讀者節(jié)省了大量的時間和金錢。
3.各章實例豐富,使讀者更容易理解書中的知識
本書幾乎在每一章都提供了大量的實例。這些實例充分展現(xiàn)了相關(guān)知識點的實現(xiàn)細(xì)節(jié)。讀者可以在學(xué)習(xí)相關(guān)知識點后,通過上機(jī)實踐這些例子來更深入地了解并掌握這些知識點。
4.提供了完整的實例,使讀者更進(jìn)一步體會SSH開發(fā)模式的精髓
在本章的最后還提供了兩個完整的實例(網(wǎng)絡(luò)硬盤和論壇系統(tǒng))。這兩個實例都采用了SSH模式進(jìn)行開發(fā)。通過對這兩個實例的深入研究,讀者可以比較全面地掌握基于SSH模式的Web應(yīng)用程序的開發(fā)步驟和開發(fā)方法,并可將實例中所采用的技術(shù)應(yīng)用到自己的項目中。
5.使用最新版本的開發(fā)工具和框架
本書所使用的開發(fā)工具和相關(guān)的框架在筆者寫作本書時都是最新版本,如MyEclipse 6.5、Struts 2.0.11.2等。讀者可以在學(xué)習(xí)SSH開發(fā)技術(shù)的同時,接觸到目前最新版本的開發(fā)工具和框架。就算讀者目前所使用的軟件版本低于本書所使用的軟件版本,也可以為未來的工作奠定基礎(chǔ)。
6.配有源代碼與視頻光盤,方便讀者使用
為了方便讀者實驗本書提供的實例程序,特將所有的源代碼都收錄到了配書光盤中,以方便讀者使用。另外,作者特別為本書錄制了一些多媒體視頻演示,將本書中的一些相關(guān)操作直觀地展示給讀者,以達(dá)到更好的學(xué)習(xí)效果。
本書內(nèi)容
第1章:為了使讀者盡快搭建本書所使用的開發(fā)環(huán)境。在這一章將詳細(xì)介紹本書所使用的開發(fā)工具、框架的版本號以及下載、安裝和配置的過程。
第2章:本章介紹了Web技術(shù)的發(fā)展歷史,以及Java Web技術(shù)的基本組成。最后詳細(xì)描述了Java Web技術(shù)中常用的兩種開發(fā)模式:JSP模型1和JSP模型2(MVC模式),以及目前常用的MVC框架。
第3章:本章介紹了在Web系統(tǒng)中常用的客戶端技術(shù),這些技術(shù)包括JavaScript、CSS和AJAX。在本章的開始部分還介紹了一些開發(fā)JavaScript的常用IDE。
第4章:本章介紹了Servlet的基礎(chǔ)知識,如處理請求消息、響應(yīng)消息、Cookie和Session等,最后還詳細(xì)講解了Web開發(fā)中所遇到的中文亂碼問題的解決方案。
第5章:本章介紹了JSP的運(yùn)行原理、基本語法、JSP指令、JSP的內(nèi)置對象、JSP標(biāo)簽和JSTL。
第6章:本章以一個用戶注冊登錄系統(tǒng)為例,演示了如何綜合運(yùn)用JSP/Servlet技術(shù)開發(fā)一個完整的Web應(yīng)用程序。
第7章:本章介紹了Struts 2中的MVC模式,以及Struts 2的體系結(jié)構(gòu)。最后給出了一個簡單的例子來演示開發(fā)基于Struts 2的Web應(yīng)用程序的步驟和方法。
第8章:本章介紹了如何配置Struts 2框架、Struts 2 Action、處理結(jié)果、模型驅(qū)動和異常處理。
第9章:本章介紹了Struts 2的攔截器技術(shù),其中包括攔截器的實現(xiàn)原理、攔截器的配置、實現(xiàn)自定義攔截器以及內(nèi)建攔截器等內(nèi)容。
第10章:本章介紹了Struts 2中的各種類型轉(zhuǎn)換技術(shù)。如OGNL表達(dá)式、數(shù)組和集合類型轉(zhuǎn)換器、類型轉(zhuǎn)換的錯誤處理等。
第11章:本章介紹了傳統(tǒng)的輸入校驗和Struts 2中的輸入校驗。
第12章:本章首先介紹了 文件上傳 的原理,以及如何使用Commons-FileUpload組件上傳文件。本章的重頭戲是講解Struts 2的上傳功能,其中包括上傳單個文件和上傳任意多個文件的方法。在最后介紹了如何使用Struts 2框架下載文件,主要包括使用stream結(jié)果下載文件以及下載文件的權(quán)限控制。
第13章:本章介紹了Struts 2在國際化方面的技術(shù)。為了更深入地理解Struts 2的國際化功能,在本章的開始部分首先介紹了Java對國際化的支持。然后逐步深入介紹Struts 2的國際化技術(shù),主要包括訪問資源文件、資源文件的加載順序等,最后給出了一個例子來演示如何將國際化功能加載到Web應(yīng)用程序中。
第14章:本章詳細(xì)講解了Struts 2框架中的標(biāo)簽。這些標(biāo)簽包括控制標(biāo)簽、數(shù)據(jù)標(biāo)簽、表單標(biāo)簽、非表單標(biāo)簽。
第15章:本章著重介紹了Struts 2框架對AJAX的支持,主要內(nèi)容包括支持AJAX的標(biāo)簽、基于AJAX的校驗、發(fā)布-訂閱事件模型、JSON插件等。
第16章:本章使用了Struts 2技術(shù)重新實現(xiàn)了第6章的用戶注冊登錄系統(tǒng)。在本章實現(xiàn)的用戶注冊登錄系統(tǒng)的功能和第6章實現(xiàn)的該系統(tǒng)的功能相同,只是使用了Struts 2框架來實現(xiàn)相關(guān)的部分。讀者可以從中體會到使用JSP/Servlet和Struts 2在開發(fā)Web應(yīng)用程序中的不同。
第17章:本章介紹了ORM的概念以及Hibernate和EJB的關(guān)系。最后給出一個例子來演示在MyEclipse中開發(fā)基于Hibernate的系統(tǒng)的步驟和方法。
第18章:本章介紹了Hibernate的兩種配置方式:配置文件和注釋。在最后給出了一個例子重新實現(xiàn)了第17章的例子,只不過這個例子使用了注釋來配置Hibernate。
第19章:本章介紹了Hibernate會話的基本操作和O/R映射。其中O/R映射主要介紹了映射主鍵、映射復(fù)合主鍵、映射普通屬性、組件映射、基于注釋的組件映射、多對一、一對多、一對一的關(guān)系。
第20章:本章的第1節(jié)介紹了Hibernate的標(biāo)準(zhǔn)(Criteria)查詢API技術(shù),主要內(nèi)容包括約束條件、分頁、排序、聚合和分組以及QBE。在第2節(jié)介紹了Hibernate中的另外兩種查詢技術(shù):HQL和SQL。其中HQL主要介紹了From、Select、Where、Update、Insert以及Delete語句,還介紹了命名參數(shù)、排序和分組、關(guān)聯(lián)查詢、命名查詢等。
第21章:本章介紹了Hibernate的一些高級技術(shù),主要包括事務(wù)管理、鎖機(jī)制、查詢緩存、攔截器和事件與過濾器。
第22章:本章介紹了Spring的主要特性和核心技術(shù),在最后還給出了一個例子來演示使用Spring框架開發(fā)程序的過程。
第23章:本章介紹了Spring框架的核心思想,反向控制(Ioc),同時還詳細(xì)講解了Spring框架中最常用的裝配Java Bean技術(shù)以及分散配置和定制屬性編輯器。
第24章:本章介紹了Spring中的數(shù)據(jù)庫技術(shù),主要包括在Spring中使用數(shù)據(jù)源連接數(shù)據(jù)庫、操作JDBC的JdbcTemplate;操作Hibernate的HibernateTemplate以及自增鍵和異常的處理。
第25章:本章主要介紹了Spring AOP技術(shù)的基礎(chǔ)知識以及事務(wù)管理。除此之外,還介紹了Spring的其他一些高級屬性,如建立和訪問RMI服務(wù)、發(fā)送Email、調(diào)度任務(wù)等。
第26章:從本章開始逐漸涉及到了SSH開發(fā)的全過程。在本章主要介紹了Struts 2、Spring和Hibernate 3個框架整合的思路,以及基于SSH的系統(tǒng)的層次結(jié)構(gòu)。
第27、28章:在這兩章給出了兩個完整的使用SSH開發(fā)的例子(網(wǎng)絡(luò)硬盤和論壇系統(tǒng))。在這兩個例子中詳細(xì)描述了開發(fā)基于SSH的系統(tǒng)的步驟和其中所涉及到的技術(shù)。開發(fā)這兩個例子的基本步驟類似,不過它們所涉及到的技術(shù)有一定的區(qū)別,如在論壇系統(tǒng)中涉及到了一個Web編輯器(FCKEditor)的安裝和使用。
適合閱讀本書的讀者
* 初步掌握J(rèn)ava技術(shù),想進(jìn)一步學(xué)習(xí)SSH整合開發(fā)的讀者
* 對SSH整合技術(shù)有了一定的了解,想進(jìn)一步提高的讀者
* 正在使用SSH整合技術(shù)開發(fā)項目,想查閱相關(guān)技術(shù)的讀者
* 大中專院校的學(xué)生
* 社會培訓(xùn)學(xué)生
目 錄
第1篇 Web開發(fā)基礎(chǔ)篇
第1章 搭建開發(fā)環(huán)境 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 小結(jié) 7
第2章 Java Web應(yīng)用開發(fā)基礎(chǔ) 8
2.1 Web技術(shù)的發(fā)展 8
2.2 Java Web技術(shù) 10
2.2.1 Java Web程序的基本組成 11
2.2.2 Java Web程序的目錄結(jié)構(gòu) 11
2.2.3 Java Web程序的配置文件 11
2.3 MVC模式與MVC框架 12
2.3.1 JSP模型1和JSP模型2 12
2.3.2 Web應(yīng)用程序需要的基礎(chǔ)服務(wù) 13
2.3.3 MVC模式概述 14
2.3.4 常用的MVC框架 15
2.4 小結(jié) 16
第3章 Web開發(fā)中的客戶端技術(shù) 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語法基礎(chǔ) 20
3.2.1 實例:編寫第一個JavaScript程序:Greet 21
3.2.2 變量 22
3.2.3 原始類型 22
3.2.4 類型轉(zhuǎn)換 26
3.2.5 函數(shù)與函數(shù)調(diào)用 28
3.2.6 類和對象 30
3.3 JavaScript高級技術(shù) 32
3.3.1 DOM技術(shù)概述 32
3.3.2 獲得HTML元素的3種方法 34
3.3.3 實例:圖像自動切換 36
3.3.4 正則表達(dá)式 37
3.3.5 實例:表格排序 38
3.4 CSS基礎(chǔ) 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基礎(chǔ) 44
3.5.1 AJAX概述 44
3.5.2 實例:使用XMLHttpRequest獲得Web資源 45
3.5.3 實例:使用XMLHttpRequest跨域訪問Web資源 46
3.5.4 實例:AJAX的3種交換數(shù)據(jù)方法 47
3.6 小結(jié) 49
第4章 Servlet技術(shù) 50
4.1 Servlet的Helloworld程序 50
4.1.1 實例:在MyEclipse中編寫Helloworld程序 50
4.1.2 實例:手工編寫Helloworld程序 53
4.2 Servlet基礎(chǔ) 54
4.2.1 配置數(shù)據(jù)庫連接池 55
4.2.2 數(shù)據(jù)庫連接池的應(yīng)用 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輸出響應(yīng)消息 64
4.2.8 實例:用ServletOutputStream顯示圖像 65
4.2.9 實例:使用RequestDispatcher包含Web資源 66
4.2.10 實例:使用RequestDispatcher轉(zhuǎn)發(fā)Web資源 68
4.3 HttpServletResponse類的其他功能 69
4.3.1 產(chǎn)生狀態(tài)響應(yīng)碼 70
4.3.2 設(shè)置響應(yīng)消息頭 71
4.3.3 實例:驗證響應(yīng)頭設(shè)置情況 73
4..4 使用HttpServletRequest獲得請求消息 73
4.4.1 獲取請求行消息 74
4.4.2 獲取網(wǎng)絡(luò)連接消息 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讀寫復(fù)雜數(shù)據(jù) 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開發(fā)的中文問題 87
4.7.1 Java的編碼原理 87
4.7.2 實例:解決輸出中文亂碼問題 89
4.7.3 實例:解決服務(wù)端程序讀取中文請求消息的亂碼問題 90
4.7.4 實例:用AJAX技術(shù)發(fā)送和接收中文信息 92
4.7.5 實例:在請求消息頭和響應(yīng)消息頭中轉(zhuǎn)輸中文 95
4.8 小結(jié) 97
第5章 JSP技術(shù) 98
5.1 用MyEclipse編寫第一個JSP程序 98
5.1.1 實例:編寫顯示服務(wù)器當(dāng)前時間的JSP程序 98
5.1.2 調(diào)試JSP程序 100
5.1.3 改變JSP的訪問路徑和擴(kuò)展名 101
5.1.4 手動發(fā)布JSP程序 102
5.2 JSP的運(yùn)行原理 102
5.2.1 Tomcat如何處理JSP頁 103
5.2.2 分析由JSP生成的Servlet代碼 104
5.3 JSP基本語法 108
5.3.1 JSP表達(dá)式 109
5.3.2 在JSP中嵌入Java代碼 109
5.3.3 JSP聲明 111
5.3.4 JSP表達(dá)式語言(EL) 113
5.3.5 實例:用EL函數(shù)替換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個內(nèi)置對象 126
5.5.1 out輸出對象 126
5.5.2 pageContext封裝對象 128
5.5.3 其他的JSP內(nèi)置對象 129
5.6 JSP標(biāo)簽 132
5.6.1 <jsp:include>插入標(biāo)簽 132
5.6.2 <jsp:forward>轉(zhuǎn)發(fā)標(biāo)簽 134
5.6.3 <jsp:param>傳參標(biāo)簽 135
5.6.4 <jsp:useBean>創(chuàng)建Bean標(biāo)簽 136
5.6.5 <jsp:setProperty>設(shè)置屬性值標(biāo)簽 138
5.6.6 <jsp:getProperty>獲取屬性值標(biāo)簽 140
5.7 JSP的標(biāo)準(zhǔn)標(biāo)簽庫(JSTL) 140
5.7.1 如何使用JSTL 141
5.7.2 條件標(biāo)簽 142
5.7.3 循環(huán)標(biāo)簽 144
5.8 小結(jié) 147
第6章 用Servlet和JSP實現(xiàn)注冊登錄系統(tǒng) 148
6.1 系統(tǒng)概述 148
6.1.1 系統(tǒng)功能簡介 148
6.1.2 系統(tǒng)總體結(jié)構(gòu) 149
6.2 設(shè)計數(shù)據(jù)庫 149
6.3 實現(xiàn)系統(tǒng)的基礎(chǔ)類 150
6.3.1 實現(xiàn)訪問數(shù)據(jù)庫的DBServlet類 150
6.3.2 實現(xiàn)MD5加密 152
6.3.3 實現(xiàn)圖形驗證碼 152
6.4 實現(xiàn)注冊系統(tǒng) 155
6.4.1 實現(xiàn)注冊Servlet類 155
6.4.2 實現(xiàn)注冊系統(tǒng)的主頁面 157
6.4.3 實現(xiàn)結(jié)果JSP頁面 159
6.5 實現(xiàn)登錄系統(tǒng) 160
6.5.1 實現(xiàn)登錄Servlet 160
6.5.2 實現(xiàn)登錄系統(tǒng)主頁面 162
6.6 小結(jié) 163
第2篇 Struts 2篇
第7章 編寫Struts 2的第一個程序 166
7.1 Struts 2中的MVC模式 166
7.2 Struts 2的體系結(jié)構(gòu) 167
7.2.1 Struts 2的工作流程 167
7.2.2 Struts 2的配置文件 167
7.2.3 Struts 2的控制器 169
7.3 實例:圖書查詢系統(tǒng) 170
7.3.1 下載和安裝Struts 2 170
7.3.2 編寫數(shù)據(jù)處理類 171
7.3.3 編寫和配置Action類 172
7.3.4 編寫顯示查詢結(jié)果的JSP頁面 174
7.3.5 編寫輸入查詢信息的JSP頁面 176
7.4 小結(jié) 177
第8章 Struts 2進(jìn)階 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注釋:設(shè)置當(dāng)前包的父包 195
8.3.2 Namespace注釋:指定當(dāng)前包的命名空間 196
8.3.3 Results與Result注釋:指定當(dāng)前Action結(jié)果 197
8.3.4 實例:用注釋配置Action 197
8.4 Struts 2的Action 200
8.4.1 Action類的getter和setter方法 200
8.4.2 實現(xiàn)Action接口 202
8.4.3 繼承ActionSupport類 203
8.4.4 實例:用ActionContext訪問Servlet API 205
8.4.5 實例:通過aware攔截器訪問Servlet API 209
8.4.6 實例:利用動態(tài)方法處理多個提交請求 211
8.4.7 實例:利用method屬性處理多個提交請求 213
8.4.8 使用通配符 214
8.4.9 默認(rèn)Action 218
8.5 處理結(jié)果 218
8.5.1 配置結(jié)果 218
8.5.2 Struts 2支持的處理結(jié)果類型 219
8.5.3 用通配符指定結(jié)果 222
8.5.4 用請求參數(shù)指定結(jié)果 223
8.6 模型驅(qū)動 224
8.6.1 ModelDriven概述 224
8.6.2 實例:使用模型驅(qū)動改進(jìn)登錄程序 226
8.7 處理異常 228
8.7.1 Struts 2處理異常的原理 229
8.7.2 實例:登錄系統(tǒng)的異常處理 230
8.8 小結(jié) 233
第9章 Struts 2的攔截器 234
9.1 理解攔截器 234
9.1.1 攔截器的實現(xiàn)原理 234
9.1.2 實例:模擬Struts 2實現(xiàn)一個攔截器系統(tǒng) 237
9.2 配置Struts 2攔截器 242
9.2.1 配置攔截器 242
9.2.2 使用攔截器 244
9.2.3 默認(rèn)攔截器 245
9.3 實例:自定義攔截器 247
9.3.1 編寫攔截器類 247
9.3.2 配置自定義攔截器 249
9.4 攔截器的高級技術(shù) 251
9.4.1 過濾指定的方法 251
9.4.2 攔截器執(zhí)行順序 254
9.4.3 攔截器結(jié)果監(jiān)聽器 255
9.5 Struts 2內(nèi)建的攔截器 258
9.5.1 內(nèi)建攔截器 258
9.5.2 內(nèi)建攔截器的配置 260
9.6 實例:編寫權(quán)限驗證攔截器 262
9.6.1 編寫權(quán)限驗證攔截器類 263
9.6.2 配置權(quán)限控制攔截器 263
9.7 小結(jié) 265
第10章 Struts 2的類型轉(zhuǎn)換 266
10.1 為什么要進(jìn)行類型轉(zhuǎn)換 266
10.1.1 客戶端和服務(wù)端之間的數(shù)據(jù)處理過程 266
10.1.2 傳統(tǒng)的類型轉(zhuǎn)換 267
10.2 使用Struts 2類型轉(zhuǎn)換器 270
10.2.1 Struts 2內(nèi)建的類型轉(zhuǎn)換器 271
10.2.2 實例:實現(xiàn)基于OGNL的類型轉(zhuǎn)換器 274
10.2.3 配置全局類型轉(zhuǎn)換器 278
10.2.4 實例:實現(xiàn)基于Struts 2的類型轉(zhuǎn)換器 280
10.2.5 實例:實現(xiàn)數(shù)組類型轉(zhuǎn)換器 282
10.2.6 實例:實現(xiàn)集合類型轉(zhuǎn)換器 284
10.3 實例:使用OGNL表達(dá)式進(jìn)行類型轉(zhuǎn)換 287
10.4 Struts 2對Collection和Map的支持 289
10.4.1 指定集合元素的類型 289
10.4.2 Set和索引屬性 291
10.5 類型轉(zhuǎn)換的錯誤處理 292
10.6 小結(jié) 294
第11章 Struts 2的輸入校驗 295
11.1 傳統(tǒng)的數(shù)據(jù)校驗方法 295
11.1.1 用JavaScript進(jìn)行客戶端校驗 295
11.1.2 手工進(jìn)行服務(wù)端校驗 300
11.2 Struts 2的數(shù)據(jù)校驗 303
11.2.1 Struts 2使用validate方法校驗數(shù)據(jù)的原理 303
11.2.2 實例:使用validate方法進(jìn)行輸入校驗 305
11.2.3 實例:使用validateXxx方法進(jìn)行輸入校驗 308
11.2.4 Struts 2的輸入校驗流程 311
11.3 使用Validation框架進(jìn)行輸入校驗 312
11.3.1 實例:服務(wù)端校驗 313
11.3.2 字段校驗器和非字段校驗器 315
11.3.3 國際化錯誤提示信息 317
11.3.4 實例:客戶端校驗 319
11.3.5 校驗文件的命名規(guī)則 323
11.3.6 短路校驗器 325
11.4 Validation框架的內(nèi)建校驗器 327
11.4.1 注冊和引用校驗器 327
11.4.2 轉(zhuǎn)換(conversion)校驗器 328
11.4.3 日期(date)校驗器 329
11.4.4 雙精度浮點數(shù)(double)校驗器 330
11.4.5 郵件地址(email)校驗器 331
11.4.6 表達(dá)式(expression)校驗器 332
11.4.7 字段表達(dá)式(fieldexpression)校驗器 332
11.4.8 整數(shù)(int)校驗器 333
11.4.9 正則表達(dá)式(regex)校驗器 334
11.4.10 必填(required)校驗器 335
11.4.11 必填字符串(requiredstring)校驗器 335
11.4.12 字符串長度(stringlength)校驗器 336
11.4.13 網(wǎng)址(url)校驗器 337
11.4.14 visitor校驗器 337
11.5 小結(jié) 341
第12章 文件的上傳和下載 342
12.1 文件上傳 原理 342
12.1.1 表單數(shù)據(jù)的編碼方式 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 實例:用數(shù)組上傳固定數(shù)目的文件 363
12.4.2 實例:用List上傳任意數(shù)目的文件 366
12.5 文件下載 368
12.5.1 下載文件的中文問題 368
12.5.2 用stream結(jié)果下載文件 369
12.5.3 下載文件的授權(quán)控制 371
12.6 小結(jié) 372
第13章 國際化 373
13.1 國際化基礎(chǔ) 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的國際化基礎(chǔ) 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應(yīng)用程序 399
13.4.1 通過i18n攔截器實現(xiàn)國際化 400
13.4.2 為register.jsp頁面增加語言選擇列表 401
13.4.3 將register.jsp頁面映射成Action 402
13.5 小結(jié) 404
第14章 Struts 2的標(biāo)簽庫 405
14.1 Struts 2標(biāo)簽基礎(chǔ) 405
14.1.1 Struts 2標(biāo)簽的分類 405
14.1.2 使用Struts 2標(biāo)簽 406
14.1.3 Struts 2中的OGNL表達(dá)式 408
14.1.4 用OGNL表達(dá)式訪問內(nèi)置對象 411
14.1.5 用OGNL表達(dá)式操作集合 412
14.1.6 Lamdba(λ)表達(dá)式 414
14.2 控制標(biāo)簽 415
14.2.1 if/elseif/else標(biāo)簽:條件邏輯控制 415
14.2.2 iterator標(biāo)簽:數(shù)組、集合迭代 418
14.2.3 append標(biāo)簽:將集合以追加方式合并為新集合 422
14.2.4 generator標(biāo)簽:將字符串分割成多個子串 424
14.2.5 merge標(biāo)簽:將集合以交替方式合并為新集合 427
14.2.6 subset標(biāo)簽:獲得集合的子集 428
14.2.7 sort標(biāo)簽:對集合進(jìn)行排序 430
14.3 數(shù)據(jù)標(biāo)簽 432
14.3.1 action標(biāo)簽:在JSP頁面中直接訪問Action 432
14.3.2 bean標(biāo)簽:創(chuàng)建JavaBean的對象實例 434
14.3.3 date標(biāo)簽:格式化日期/時間 436
14.3.4 debug標(biāo)簽:顯示調(diào)試信息 438
14.3.5 include標(biāo)簽:包含Web資源 439
14.3.6 param標(biāo)簽:為其他的標(biāo)簽提供參數(shù) 440
14.3.7 property標(biāo)簽:輸出指定的值 440
14.3.8 push標(biāo)簽:將指定值放到ValueStack棧頂 441
14.3.9 set標(biāo)簽:將某個值保存在指定的范圍 442
14.3.10 url標(biāo)簽:生成URL地址 444
14.4 表單標(biāo)簽 446
14.4.1 表單標(biāo)簽的通用屬性 446
14.4.2 表單標(biāo)簽的name和value屬性 447
14.4.3 form、submit和reset標(biāo)簽:表單、提交和重置 449
14.4.4 checkboxlist標(biāo)簽:生成多個復(fù)選框 449
14.4.5 combobox標(biāo)簽:組合單行文本框和下拉列表框 452
14.4.6 datetimespicker標(biāo)簽:組合文本框和日期、時間選擇框 454
14.4.7 doubleselect標(biāo)簽:生成級聯(lián)列表框 457
14.4.8 head標(biāo)簽:添加CSS和JavaScript 458
14.4.9 optiontransferselect 標(biāo)簽:生成可交互的兩個列表框 459
14.4.10 select標(biāo)簽:生成列表框 461
14.4.11 optgroup標(biāo)簽:生成下拉列表框選項組 462
14.4.12 radio標(biāo)簽:生成多個單選框 463
14.4.13 token標(biāo)簽:防止多次提交表單 464
14.4.14 updownselect標(biāo)簽:生成高級列表框 465
14.4.15 其他的表單標(biāo)簽 467
14.5 非表單標(biāo)簽 467
14.5.1 fielderror標(biāo)簽:顯示字段錯誤信息 467
14.5.2 actionerror和actionmessage標(biāo)簽:顯示動作錯誤和動作消息 468
14.5.3 component標(biāo)簽:使用模板 469
14.6 小結(jié) 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 設(shè)置校驗規(guī)則 477
15.3 在表單中使用AJAX 479
15.3.1 實現(xiàn)可異步提交的表單 479
15.3.2 實現(xiàn)Action類 479
15.3.3 實現(xiàn)結(jié)果處理頁面 480
15.3.4 執(zhí)行JavaScript代碼 481
15.4 發(fā)布-訂閱(pub-sub)事件模型 483
15.4.1 pub-sub事件模型的原理 483
15.4.2 pub-sub事件模型演示 484
15.4.3 阻止請求服務(wù)端資源 487
15.5 使用Struts 2中的AJAX標(biāo)簽 488
15.5.1 div標(biāo)簽的基本應(yīng)用 488
15.5.2 使用div標(biāo)簽執(zhí)行JavaScript 491
15.5.3 手動控制div標(biāo)簽的更新 493
15.5.4 submit標(biāo)簽:發(fā)送異步請求 496
15.5.5 a標(biāo)簽:可異步提交請求的鏈接 498
15.5.6 autocompleter標(biāo)簽:帶自運(yùn)完成功能的文本框 501
15.5.7 tabbedPanel標(biāo)簽:生成Tab頁 507
15.5.8 treenode和tree標(biāo)簽:樹節(jié)點和樹組件 511
15.6 使用JSON插件實現(xiàn)AJAX 513
15.6.1 下載和安裝JSON插件 513
15.6.2 下載和安裝prototype.js 513
15.6.3 實現(xiàn)Action類 514
15.6.4 在JSP頁面中通過Prototype請求Action 515
15.7 小結(jié) 517
第16章 用Struts 2實現(xiàn)注冊登錄系統(tǒng) 518
16.1 系統(tǒng)總體結(jié)構(gòu) 518
16.2 實現(xiàn)DAO層 518
16.2.1 實現(xiàn)DAOSupport類 519
16.2.2 實現(xiàn)UserDAO接口 520
16.2.3 實現(xiàn)UserDAOImpl類 520
16.3 實現(xiàn)Action類 522
16.3.1 實現(xiàn)模型類(User) 522
16.3.2 實現(xiàn)LoginAction類 523
16.3.3 實現(xiàn)RegisterAction類 525
16.4 輸入校驗 526
16.4.1 校驗登錄頁面 526
16.4.2 校驗注冊頁面 527
16.5 實現(xiàn)表現(xiàn)層頁面 528
16.5.1 實現(xiàn)登錄頁面(login.jsp) 528
16.5.2 實現(xiàn)注冊頁面(register.jsp) 530
16.5.3 實現(xiàn)主頁面(main.jsp) 531
16.6 實現(xiàn)其他的功能 532
16.6.1 使用Action類生成驗證碼圖像 532
16.6.2 使用攔截器驗證頁面訪問權(quán)限 534
16.7 小結(jié) 536
第3篇 Hibernate篇
第17章 Hibernate的Helloworld程序 538
17.1 Hibernate概述 538
17.1.1 為什么要使用ORM 538
17.1.2 Hibernate和EJB的關(guān)系 539
17.2 在應(yīng)用程序中使用Hibernate 3 539
17.2.1 MyEclipse對Hibernate 3的支持 540
17.2.2 下載和安裝新版本的Hibernate 3 542
17.3 第1個Hibernate程序 543
17.3.1 開發(fā)Hibernate程序的基本步驟 543
17.3.2 建立數(shù)據(jù)表 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 小結(jié) 552
第18章 配置Hibernate 553
18.1 用傳統(tǒng)的方法配置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數(shù)據(jù)源 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注釋產(chǎn)生主鍵值 567
18.2.7 使用@Basic和@Transient注釋 568
18.2.8 更高級的Hibernate注釋 568
18.3 使用注釋重新實現(xiàn)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 小結(jié) 572
第19章 Hibernate的會話與O/R映射 573
19.1 會話(Session)的基本應(yīng)用 573
19.1.1 保存持久化對象 573
19.1.2 判斷持久化對象之間的關(guān)系 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 映射復(fù)合主鍵 580
19.2.3 實例:主鍵和復(fù)合主鍵的查詢和更新 581
19.2.4 映射普通屬性 586
19.2.5 建立組件(Component)映射 587
19.2.6 實例:組件映射的應(yīng)用 588
19.2.7 基于注釋的組件映射 592
19.2.8 建立多對一(many-to-one)單向關(guān)聯(lián)關(guān)系 593
19.2.9 實例:多對一關(guān)系的演示 593
19.2.10 基于注釋的多對一關(guān)系映射 597
19.2.11 建立一對多(one-to-many)的雙向關(guān)聯(lián)關(guān)系 598
19.2.12 實例:一對多雙向關(guān)聯(lián)的演示 598
19.2.13 基于注釋的一對多映射 601
19.2.14 建立基于外鍵的一對一(one-to-one)的關(guān)系映射 602
19.2.15 實例:基于外鍵的一對一關(guān)系演示 603
19.2.16 建立基于主鍵的一對一的關(guān)系映射 606
19.2.17 實例:基于主鍵的一對一關(guān)系映射 607
19.3 小結(jié) 610
第20章 Hibernate的查詢與更新技術(shù) 612
20.1 標(biāo)準(zhǔn)(Criteria)查詢API 612
20.1.1 實例:一個簡單的例子 612
20.1.2 查詢的約束條件 613
20.1.3 對查詢結(jié)果進(jìn)行分頁 615
20.1.4 實例:實現(xiàn)Web分頁功能 617
20.1.5 只獲得一個持久化對象 620
20.1.6 對查詢結(jié)果進(jìn)行排序 621
20.1.7 多個Criteria之間的關(guān)聯(lián) 621
20.1.8 聚合和分組 622
20.1.9 使用QBE(Query By Example) 624
20.2 HQL和SQL技術(shù) 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 使用命名參數(shù) 630
20.2.6 使用Query進(jìn)行分頁 631
20.2.7 實例:使用HQL實現(xiàn)Web分頁功能 631
20.2.8 使用HQL進(jìn)行排序和分組 632
20.2.9 關(guān)聯(lián)查詢 633
20.2.10 聚合函數(shù) 635
20.2.11 Update和Delete語句:更新持久化對象 636
20.2.12 Insert語句:插入記錄 637
20.2.13 命名查詢 638
20.2.14 使用SQL 639
20.3 小結(jié) 640
第21章 Hibernate的高級技術(shù) 641
21.1 事務(wù)管理 641
21.1.1 事務(wù)概述 641
21.1.2 事務(wù)的隔離等級 642
21.1.3 Hibernate的事務(wù)管理 643
21.1.4 基于JDBC的事務(wù)管理 643
21.1.5 基于JTA的事務(wù)管理 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 小結(jié) 657
第4篇 Spring篇
第22章 Spring的Helloworld程序 660
22.1 Spring簡介 660
22.1.1 Spring的主要特性 660
22.1.2 Spring的核心技術(shù) 661
22.2 在應(yīng)用程序中使用Spring 662
22.2.1 MyEclipse 6.5對Spring的支持 662
22.2.2 下載和安裝Spring 663
22.3 實例:開發(fā)一個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 小結(jié) 666
第23章 反向控制(Ioc)與裝配JavaBean 667
23.1 反向控制(Ioc) 667
23.1.1 什么是依賴注入 667
23.1.2 傳統(tǒng)解決方案的缺陷 668
23.1.3 用Ioc降低耦合度 669
23.2 手動裝配JavaBean 670
23.2.1 裝配Bean的方法 670
23.2.2 與Bean相關(guān)的接口 671
23.2.3 <bean>標(biāo)簽的常用屬性 672
23.2.4 裝配普通屬性 673
23.2.5 裝配集合屬性 676
23.2.6 設(shè)置屬性值為null 680
23.2.7 裝配構(gòu)造方法 680
23.3 自動裝配JavaBean 683
23.4 分散配置 685
23.5 定制屬性編輯器 687
23.6 小結(jié) 690
第24章 Spring中的數(shù)據(jù)庫技術(shù) 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 向數(shù)據(jù)庫中寫數(shù)據(jù) 694
24.2.3 從數(shù)據(jù)庫中讀數(shù)據(jù) 696
24.2.4 調(diào)用存儲過程 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 小結(jié) 705
第25章 Spring的其他高級技術(shù) 706
25.1 Spring AOP 706
25.1.1 AOP概述 706
25.1.2 AOP術(shù)語簡介 707
25.1.3 4種通知(Advice)的作用 708
25.1.4 通過Advisor指定切入點 714
25.1.5 使用控制流切入點 716
25.2 Spring 的事務(wù)管理 718
25.2.1 實例:使用程序控制事務(wù) 718
25.2.2 聲明式事務(wù) 720
25.2.3 事務(wù)屬性的種類 722
25.2.4 設(shè)置事務(wù)屬性 724
25.2.5 設(shè)置特定方法的事務(wù)屬性 725
25.3 實例:建立和訪問RMI服務(wù) 727
25.4 實例:發(fā)送E-mail 729
25.5 調(diào)度任務(wù) 731
25.6 小結(jié) 732
第5篇 綜合實例篇
第26章 Struts 2與Hibernate、Spring的整合 734
26.1 整合Struts 2和Hibernate框架 734
26.1.1 整合的思路 734
26.1.2 整合后的系統(tǒng)層次 735
26.1.3 實現(xiàn)數(shù)據(jù)訪問層 735
26.1.4 實現(xiàn)業(yè)務(wù)邏輯層 737
26.1.5 Struts 2和Hibernate共享實體Bean 739
26.2 整合Spring框架 740
26.2.1 裝配數(shù)據(jù)訪問層 740
26.2.2 裝配業(yè)務(wù)邏輯層 742
26.2.3 使用Struts 2的Spring插件 742
26.3 小結(jié) 743
第27章 網(wǎng)絡(luò)硬盤 744
27.1 系統(tǒng)概述 744
27.1.1 系統(tǒng)功能簡介 744
27.1.2 系統(tǒng)架構(gòu)設(shè)計 746
27.2 數(shù)據(jù)庫設(shè)計 746
27.3 實現(xiàn)持久對象層 748
27.3.1 實現(xiàn)用戶實體Bean 749
27.3.2 實現(xiàn)目錄實體Bean 750
27.3.3 實現(xiàn)文件實體Bean 751
27.3.4 映射MySQL存儲過程 752
27.3.5 配置hibernate.cfg.xml 753
27.4 實現(xiàn)數(shù)據(jù)訪問層 754
27.4.1 實現(xiàn)DAOSupport類 754
27.4.2 實現(xiàn)UserDAO接口和UserDAOImpl類 754
27.4.3 實現(xiàn)DirectoryDAO接口和DirectoryDAOImpl類 755
27.4.4 實現(xiàn)FileDAO接口和FileDAOImpl類 757
27.5 實現(xiàn)業(yè)務(wù)邏輯層 758
27.5.1 實現(xiàn)UserService接口和UserServiceImpl類 758
27.5.2 實現(xiàn)DirectoryService接口和DirectoryServiceImpl類 760
27.5.3 實現(xiàn)FileService接口和FileServiceImpl類 762
27.5.4 實現(xiàn)服務(wù)管理類 764
27.5.5 配置Spring 765
27.6 實現(xiàn)Web表現(xiàn)層 767
27.6.1 實現(xiàn)基礎(chǔ)動作類(BaseAction) 768
27.6.2 實現(xiàn)用戶登錄頁面和處理登錄的Action類 769
27.6.3 實現(xiàn)注冊登錄頁面和處理注冊的Action類 771
27.6.4 實現(xiàn)網(wǎng)絡(luò)硬盤主頁面 771
27.6.5 建立目錄 773
27.6.6 實現(xiàn) 文件上傳 774
27.6.7 實現(xiàn)文件和目錄下載 775
27.6.8 使用攔截器控制頁面訪問權(quán)限 779
27.6.9 其他功能的實現(xiàn) 780
27.7 小結(jié) 780
第28章 論壇系統(tǒng) 782
28.1 系統(tǒng)功能簡介 782
28.2 數(shù)據(jù)庫設(shè)計 783
28.3 實現(xiàn)持久對象層 785
28.3.1 實現(xiàn)主題實體Bean 785
28.3.2 實現(xiàn)回復(fù)實體Bean 787
28.3.3 配置hibernate.cfg.xml 788
28.4 實現(xiàn)數(shù)據(jù)訪問層 788
28.4.1 實現(xiàn)TopicDAO接口和TopicDAOImpl類 789
28.4.2 實現(xiàn)ReviewDAO接口和ReviewDAOImpl類 790
28.5 實現(xiàn)業(yè)務(wù)邏輯層 791
28.5.1 實現(xiàn)TopicService接口和TopicServiceImpl類 791
28.5.2 實現(xiàn)ReviewService接口和ReviewServiceImpl類 793
28.5.3 實現(xiàn)服務(wù)管理類 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 產(chǎn)生FCKEditor的客戶端腳本 800
28.7 實現(xiàn)Web表現(xiàn)層 801
28.7.1 瀏覽論壇的主題列表 801
28.7.2 發(fā)布新主題 804
28.7.3 瀏覽主題和回復(fù)內(nèi)容 805
28.7.4 回復(fù)主題 806
28.8 小結(jié) 807
國內(nèi)最棒的Google Android技術(shù)社區(qū)(eoeandroid),歡迎訪問!
《銀河系列原創(chuàng)教程》 發(fā)布
《Java Web開發(fā)速學(xué)寶典》 出版,歡迎定購
新書出版:Java Web開發(fā)技術(shù)大全——JSP+Servlet+Struts 2+Hibernate+Spring+Ajax (附源代碼)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
