本書主要介紹Java EE的基本概念, JDBC數(shù)據(jù)庫編程的基礎(chǔ)知識(shí)和應(yīng)用方法, Java Servlet、JSP、XML、SSH整合開發(fā)案例、基于Java EE的測(cè)試。包括Struts2、Hibernate3和Spring2三個(gè)框架相關(guān)的基本知識(shí)和相關(guān)技術(shù)。最后還介紹了一些JavaEE在云計(jì)算、大數(shù)據(jù)方面最新應(yīng)用進(jìn)展。附錄還提供上機(jī)實(shí)驗(yàn)指導(dǎo)和常見問題 (學(xué)習(xí)、上機(jī)、使用、就業(yè)) 解決思路等。
適讀人群 :Java Web開發(fā)入門人員、Java EE架構(gòu)設(shè)計(jì)入門人員、相關(guān)高校學(xué)生、培訓(xùn)機(jī)構(gòu)學(xué)員
重點(diǎn)介紹輕量級(jí)框架Struts2+Spring+Hibernate整合開發(fā)技術(shù);
提高讀者的動(dòng)手編程能力和架構(gòu)設(shè)計(jì)能力;
采用“概念+實(shí)例+習(xí)題+實(shí)訓(xùn)+項(xiàng)目案例”的講解模式,簡(jiǎn)單易懂;
200個(gè)實(shí)例、8個(gè)實(shí)訓(xùn)案例、2個(gè)綜合項(xiàng)目案例、200個(gè)練習(xí)題;
每章都有大量的示例代碼講解和實(shí)例分析,并配以大量的習(xí)題和上機(jī)實(shí)訓(xùn);
書中的綜合案例來源于實(shí)際項(xiàng)目開發(fā),有很高的應(yīng)用價(jià)值;
免費(fèi)提供教學(xué)課件(PPT)、案例源代碼、習(xí)題參考答案等教學(xué)資源;
給出了書中涉及的開發(fā)框架及相關(guān)開發(fā)工具的獲取方式。
Java EE平臺(tái)就是一組技術(shù)的集合,包括Java語言基礎(chǔ)、JSP、EJB、JDBC及三大框架(Struts 2、Spring和Hibernate)等,是專為開發(fā)企業(yè)級(jí)應(yīng)用而推出的標(biāo)準(zhǔn)規(guī)范和體系架構(gòu)。這個(gè)平臺(tái)主要用來實(shí)現(xiàn)小型、中型及大型系統(tǒng)的開發(fā),具有跨平臺(tái)、安全性高和易移植等優(yōu)點(diǎn)。Java EE平臺(tái)現(xiàn)已經(jīng)成為電信、金融、電子商務(wù)、保險(xiǎn)和證券等各行業(yè)的大型應(yīng)用系統(tǒng)的首選開發(fā)平臺(tái)。Java EE開發(fā)大致可分為兩種方式:以Spring為核心的輕量級(jí)Java EE企業(yè)開發(fā)平臺(tái);以EJB 3+JPA為核心的經(jīng)典Java EE開發(fā)平臺(tái)。無論使用哪種平臺(tái)進(jìn)行開發(fā),應(yīng)用的性能和穩(wěn)定性都有很好的保證,開發(fā)人群也有很穩(wěn)定的保證。
目前市場(chǎng)上關(guān)于Java EE的圖書雖然很多,但大多要么只講理論,要么只講如何使用軟件,或者大篇地講一些在實(shí)際項(xiàng)目中用不到的知識(shí),甚至大段粘貼代碼,使讀者無所適從,掌握不到Java EE的真正要領(lǐng),也導(dǎo)致初學(xué)者對(duì)Java EE產(chǎn)生畏懼心理,難以入門。為了幫助廣大初學(xué)者和高校學(xué)生更加容易地掌握*新的Java EE技術(shù),筆者精心編寫了本書,力求從讀者的學(xué)習(xí)特點(diǎn)和認(rèn)知規(guī)律出發(fā),讓讀者在較短時(shí)間內(nèi)入門并掌握本書內(nèi)容。
本書介紹的開發(fā)平臺(tái)主要是以Struts 2.x+Spring 4.x+Hibernate 4.x為核心的輕量級(jí)Java EE。這種組合在保留經(jīng)典Java EE應(yīng)用架構(gòu)的高度可擴(kuò)展性和高度可維護(hù)性的基礎(chǔ)上,降低了Java EE應(yīng)用的開發(fā)和部署成本,對(duì)于大部分中小型企業(yè)應(yīng)用是首選。在一些需要具有高度伸縮性和高度穩(wěn)定性的企業(yè)應(yīng)用中(如銀行系統(tǒng)和保險(xiǎn)系統(tǒng)),以EJB 3+JPA為核心的經(jīng)典Java EE應(yīng)用則具有一定的占有率。
本書是在作者多年從事Java EE教學(xué)和開發(fā)的基礎(chǔ)上編寫而成,編寫時(shí)還參考了多本同類教材。本書采用理論與實(shí)踐相結(jié)合的方式,通過簡(jiǎn)潔輕松的文字,以及簡(jiǎn)短精練的示例代碼,力求讓讀者能盡快掌握J(rèn)ava EE開發(fā)技術(shù)。本書內(nèi)容全面、新穎,章節(jié)編排合理,講解由淺入深,循序漸進(jìn),是不可多得的Java Web開發(fā)技術(shù)參考書。為了方便教學(xué),本書每章都配有大量的示范性案例和運(yùn)行結(jié)果,章末還提供了大量習(xí)題,并配有完整課程設(shè)計(jì)案例。另外,為了方便讀者學(xué)習(xí)和老師教學(xué),本書還專門配有專業(yè)的教學(xué)課件。
本書特色
1.提供豐富的實(shí)例分析和實(shí)習(xí)指導(dǎo),提高教與學(xué)的效率
為了便于讀者理解本書內(nèi)容,提高教師講授和學(xué)生學(xué)習(xí)的效率,本書每章都有詳細(xì) 案例和實(shí)踐練習(xí)。每章后都提供了課程的實(shí)驗(yàn)指導(dǎo),以方便師生進(jìn)行課堂實(shí)驗(yàn),將每章 的理論知識(shí)結(jié)合實(shí)踐開發(fā)加以靈活運(yùn)用。另外,每章涉及的習(xí)題參考答案讀者可以自己 下載。
2.內(nèi)容豐富,實(shí)用性強(qiáng)
本書在對(duì)Java EE的理論 和相關(guān)工具進(jìn)行講解后,通過實(shí)際案例對(duì)Java EE開發(fā)方法進(jìn)行了詳細(xì)講解,從而使讀者快速進(jìn)入實(shí)踐項(xiàng)目的開發(fā)。讀者參考本書的架構(gòu),完全可以身臨其境地感受企業(yè)實(shí)際開發(fā)。
3.提供Java EE開發(fā)與應(yīng)用過程中的常用技巧
本書對(duì)Java EE開發(fā)過程中經(jīng)常出現(xiàn)的問題及解決方案和一些常用技巧進(jìn)行了介紹,并配以大量的示例對(duì)技術(shù)要點(diǎn)在實(shí)際工作中的應(yīng)用進(jìn)行了講解。另外,書中還對(duì)初學(xué)者經(jīng)常出現(xiàn)的一些問題進(jìn)行了歸納和總結(jié),便于讓讀者能盡快上手。
4.高屋建瓴,啟發(fā)性強(qiáng)
本書介紹的幾種架構(gòu)模式是當(dāng)前*流行的Java EE架構(gòu)模式。這些架構(gòu)模式可以直接提升讀者對(duì)系統(tǒng)架構(gòu)設(shè)計(jì)的把握。
5.項(xiàng)目案例典型,實(shí)戰(zhàn)性強(qiáng),有較高的應(yīng)用價(jià)值
本書*后提供了一個(gè)項(xiàng)目實(shí)戰(zhàn)案例,該案例來源于作者所開發(fā)的實(shí)際項(xiàng)目,具有很高的應(yīng)用價(jià)值和參考性。而且該案例采用了*新的Java EE框架實(shí)現(xiàn),便于讀者融會(huì)貫通地理解本書中所介紹的技術(shù)。這些案例稍加修改,便可用于實(shí)際項(xiàng)目開發(fā)中。
6.提供完善的配套資源和售后服務(wù)
本書免費(fèi)提供書中涉及的源代碼、軟件開發(fā)包、習(xí)題參考答案和教學(xué)課件(PPT)等教學(xué)資源。另外,本書還提供了專門的服務(wù)郵箱bookservice2008@163.com,讀者在閱讀本書的過程中有任何疑問都可以通過該郵箱獲得幫助。
本書內(nèi)容介紹
第1章Java EE概述,對(duì)Java EE平臺(tái)的新特性及其編程技術(shù)做了闡述,并介紹了Java EE應(yīng)用分層架構(gòu)、技術(shù)規(guī)范、流行框架及開發(fā)環(huán)境的安裝和配置等內(nèi)容。
第2章Java Web開發(fā)概述,介紹了Web開發(fā)基礎(chǔ)、HTTP基本的格式及特點(diǎn)、JDBC基本概念和原理、常用Web開發(fā)工具及Web應(yīng)用服務(wù)器的安裝與配置。
第3章HTML、JavaScript簡(jiǎn)介,介紹了HTML 5技術(shù),以及CSS、JSON、jQuery、DWR和AJAX等,還詳細(xì)講解了Web 開發(fā)中*常見的HTML開發(fā)技術(shù)。對(duì)于沒有學(xué)過HTML的讀者,可通過本章學(xué)會(huì)HTML的主要內(nèi)容,從而進(jìn)行后續(xù)的Java EE實(shí)訓(xùn),并對(duì)HTML語言的其他細(xì)節(jié)具備自己查找資料進(jìn)行學(xué)習(xí)的能力。
第4章JSP應(yīng)用基礎(chǔ),介紹了Java EE開發(fā)表示層所用關(guān)鍵技術(shù)JSP 的運(yùn)行原理和基本語法,包括JSP、Servlet、JavaBean及過濾器Filter編程技術(shù)。
第5章Struts 2開發(fā),闡述了Struts 2的安裝和配置及其工作原理,并通過Struts 2的一些具體實(shí)例對(duì)Struts 2的開發(fā)過程、攔截器、類型轉(zhuǎn)換、標(biāo)簽、輸入校驗(yàn)和國際化等知識(shí)進(jìn)行講解。
第6章Hibernate基礎(chǔ),通過MyEclipse 2014中實(shí)現(xiàn)了3個(gè)具體案例來討論Hibernate的入門知識(shí)。本章例子雖簡(jiǎn)單,但卻涵蓋了Hibernate 3和Hibernate 4的大部分基礎(chǔ)內(nèi)容,包括Hibernate應(yīng)用的開發(fā)步驟、Hibernate開發(fā)過程的配置文件與映射文件、MySQL 5.7與SQL Server 2012數(shù)據(jù)庫的連接配置及核心接口的使用,另外還講解了Hibernate的JDCB事務(wù)編程和JTA事務(wù)的相關(guān)知識(shí),并對(duì)事務(wù)概念等相關(guān)知識(shí)進(jìn)行了回顧。
第7章Spring基礎(chǔ)與應(yīng)用,介紹了Spring框架的技術(shù)核心,如IoC容器、DI和AOP功能等。Spring是一個(gè)可高度重用的MVC框架,涵蓋了應(yīng)用系統(tǒng)開發(fā)所涉及的大多數(shù)技術(shù)范疇,提供了很多獨(dú)立的控件可供選擇。
第8章SSH整合架構(gòu)開發(fā),結(jié)合MyEclipse 2014開發(fā)工具,圖文并茂地闡述了將三大框架整合開發(fā)的過程,即由Spring的配置文件管理Hibernate的配置,由Bean實(shí)現(xiàn)與數(shù)據(jù)庫的連接,同時(shí)Struts 2把Action類的生成交給了Spring,并利用Spring的依賴注入完成業(yè)務(wù)邏輯對(duì)象的生成。
第9章Java EE課程設(shè)計(jì)案例,結(jié)合一個(gè)實(shí)際項(xiàng)目開發(fā)案例,講解Java EE完整軟件開發(fā)過程,該案例可以作為課程設(shè)計(jì)、綜合實(shí)踐、畢業(yè)設(shè)計(jì)等工程實(shí)踐參考。
附錄,提供了Java EE常見問題及解決方案,以及Java EE常見面試題和解答,以方便相關(guān)讀者學(xué)習(xí)。
本書讀者對(duì)象
* Java Web開發(fā)入門人員;
* 高校Java EE課程教學(xué)人員;
* 學(xué)習(xí)Java EE開發(fā)技術(shù)的人員;
* 廣大Java EE開發(fā)程序員;
* Java應(yīng)用程序開發(fā)人員;
* 希望提高項(xiàng)目開發(fā)水平的人員;
* 專業(yè)Java培訓(xùn)機(jī)構(gòu)的學(xué)員;
* Java EE測(cè)試人員;
* 需要一本案頭必備查詢手冊(cè)的人員。
本書配套資源獲取方式
本書涉及的源代碼、軟件開發(fā)包、習(xí)題參考答案和教學(xué)PPT等教學(xué)資源,需要讀者自行下載。請(qǐng)登錄清華大學(xué)出版社網(wǎng)站,然后搜索到本書頁面,在頁面上找到“資源下載”欄目,然后單擊“課件下載”或者“網(wǎng)絡(luò)資源”按鈕即可。
本書的順利出版,要感謝南京信息工程大學(xué)教材基金的資助,還要感謝清華大學(xué)出版社各位編輯的辛勤勞動(dòng)和付出,另外對(duì)網(wǎng)絡(luò)上提供有益資料的眾多作者也在此表示感謝。
雖然我們對(duì)本書中所述內(nèi)容都盡量核實(shí),并多次進(jìn)行文字校對(duì),但因時(shí)間有限,加之水平所限,書中疏漏和錯(cuò)誤在所難免,敬請(qǐng)廣大師生和讀者批評(píng)指正。
編著者
方巍,博士、博士后、副教授、碩導(dǎo)、高級(jí)工程師。美國佛羅里達(dá)大學(xué)訪問學(xué)者、中國計(jì)算機(jī)學(xué)會(huì)高級(jí)會(huì)員、ACM會(huì)員、中國系統(tǒng)分析師協(xié)會(huì)(CSAI)顧問團(tuán)專業(yè)顧問、江蘇省計(jì)算機(jī)學(xué)會(huì)會(huì)員和江蘇省人工智能學(xué)會(huì)委員、江蘇省政府采購招標(biāo)評(píng)審專家。有多年的Java EE和數(shù)據(jù)庫軟件開發(fā)與設(shè)計(jì)經(jīng)驗(yàn),深入理解數(shù)據(jù)庫系統(tǒng)的應(yīng)用與開發(fā)過程。目前已主持了2項(xiàng)省部級(jí)項(xiàng)目和3項(xiàng)市廳級(jí)項(xiàng)目,參與了國家自然科學(xué)基金、教育部重點(diǎn)科研項(xiàng)目、江蘇省重大科技支撐計(jì)劃等*和省部級(jí)科研項(xiàng)目共8項(xiàng)。在國際和國內(nèi)相關(guān)學(xué)術(shù)會(huì)議和核心期刊上發(fā)表了論文20余篇,其中被SCI和EI檢索15篇。獲得了國家發(fā)明專利授權(quán)7項(xiàng)和軟件著作權(quán)8項(xiàng)。研究興趣包括信息集成、云計(jì)算和大數(shù)據(jù)挖掘等。
第1章 Java EE概述 1
1.1 Java EE簡(jiǎn)介 1
1.1.1 什么是Java EE 2
1.1.2 Java EE的新特性 2
1.2 Java EE應(yīng)用分層架構(gòu) 7
1.2.1 分層模式概述 7
1.2.2 Java EE的結(jié)構(gòu) 9
1.3 Java EE技術(shù)規(guī)范 13
1.4 敏捷輕型框架 16
1.4.1 Hibernate簡(jiǎn)介 16
1.4.2 Struts 2簡(jiǎn)介 18
1.4.3 Spring簡(jiǎn)介 21
1.4.4 JSF簡(jiǎn)介 22
1.4.5 Tapestry簡(jiǎn)介 23
1.4.6 WebWork簡(jiǎn)介 23
1.5 Java EE開發(fā)環(huán)境 24
1.5.1 JDK的下載和安裝 24
1.5.2 Tomcat 8.0的安裝和配置 26
1.5.3 集成開發(fā)環(huán)境的安裝和使用 27
1.5.4 MySQL數(shù)據(jù)庫的安裝和使用 28
1.5.5 SQLServer數(shù)據(jù)庫的安裝和使用 29
1.6 本章小結(jié) 31
1.7 習(xí)題 31
實(shí)訓(xùn)1 搭建Java EE運(yùn)行及開發(fā)環(huán)境 32
第2章 Java Web開發(fā)概述 36
2.1 Java Web概述 36
2.1.1 Web程序基本知識(shí) 36
2.1.2 Web程序開發(fā)過程 37
2.2 HTTP協(xié)議 37
2.2.1 HTTP方法的請(qǐng)求格式 38
2.2.2 HTTP方法的響應(yīng)格式 38
2.2.3 HTTP協(xié)議主要特點(diǎn) 38
2.2.4 GET/POST方法的比較 39
2.3 JDBC簡(jiǎn)介 39
2.3.1 常用的標(biāo)準(zhǔn)SQL語句 40
2.3.2 JDBC結(jié)構(gòu) 41
2.3.3 JDBC驅(qū)動(dòng)類型 43
2.3.4 常用數(shù)據(jù)庫JDBC連接寫法 44
2.3.5 創(chuàng)建JDBC應(yīng)用程序具體步驟 46
2.4 Java Web應(yīng)用服務(wù)器 49
2.4.1 Glassfish簡(jiǎn)介 49
2.4.2 JBoss簡(jiǎn)介 50
2.4.3 Tomcat簡(jiǎn)介 51
2.4.4 WebSphere簡(jiǎn)介 51
2.4.5 WebLogic簡(jiǎn)介 51
2.4.6 在MyEclipse中配置Tomcat 52
2.5 在MyEclipse中開發(fā)Java Web程序 54
2.5.1 Web工程的創(chuàng)建 54
2.5.2 Web工程的發(fā)布 55
2.5.3 在Eclipse中調(diào)試程序 55
2.6 常用開發(fā)工具 57
2.6.1 Maven項(xiàng)目管理工具 57
2.6.2 版本管理工具CVS 58
2.6.3 日志工具 63
2.6.4 報(bào)表圖形引擎 64
2.7 本章小結(jié) 67
2.8 習(xí)題 67
實(shí)訓(xùn)2 JDBC數(shù)據(jù)庫連接及常用開發(fā)工具使用 69
第3章 HTML、JavaScript簡(jiǎn)介 76
3.1 任務(wù)1 引入性案例 76
3.2 任務(wù)2 HTML的基本結(jié)構(gòu) 77
3.3 任務(wù)3 文本及版面風(fēng)格的控制 78
3.3.1 文本控制 78
3.3.2 版面風(fēng)格控制 81
3.4 任務(wù)4 圖像、超鏈接和表格 82
3.4.1 圖像和超鏈接 82
3.4.2 表格 85
3.5 任務(wù)5 HTML的表單 88
3.5.1 表單定義 88
3.5.2 文本框控件 89
3.5.3 單選按鈕和復(fù)選框 90
3.5.4 下拉菜單和列表 91
3.5.5 按鈕 91
3.5.6 圖像域、隱藏域和文件域 92
3.5.7 分組標(biāo)記 93
3.6 任務(wù)6 CSS使用 93
3.7 任務(wù)7 HTML 5應(yīng)用 95
3.8 任務(wù)8 JavaScript使用 97
3.8.1 JavaScript概述 97
3.8.2 函數(shù) 97
3.8.3 事件處理 99
3.8.4 JSON簡(jiǎn)介 102
3.9 任務(wù)9 jQuery基礎(chǔ) 103
3.9.1 jQuery安裝 104
3.9.2 jQuery語法 105
3.9.3 jQuery選擇器 106
3.9.4 jQuery事件操作 108
3.10 任務(wù)10 AJAX基礎(chǔ)應(yīng)用 110
3.10.1 AJAX概述 111
3.10.2 XMLHttpRequest對(duì)象 112
3.10.3 AJAX應(yīng)用實(shí)例 113
3.10.4 開源AJAX框架DWR介紹 114
3.11 本章小結(jié) 115
3.12 習(xí)題 115
實(shí)訓(xùn)3 HTML和JavaScript綜合應(yīng)用 117
第4章 JSP應(yīng)用基礎(chǔ) 122
4.1 Servlet概述 122
4.1.1 Servlet工作原理 122
4.1.2 Servlet的特點(diǎn) 123
4.2 Servlet編程基礎(chǔ) 124
4.2.1 Servlet接口 124
4.2.2 Servlet程序的編譯 125
4.2.3 Servlet的配置 125
4.2.4 Servlet的應(yīng)用實(shí)例 127
4.3 JSP簡(jiǎn)介 133
4.3.1 工作原理 134
4.3.2 一個(gè)簡(jiǎn)單的JSP程序 134
4.3.3 JSP注釋與聲明 136
4.3.4 JSP表達(dá)式和程序段 137
4.4 JSP指令 138
4.4.1 include指令 138
4.4.2 page指令 139
4.4.3 taglib指令 140
4.5 JSP動(dòng)作 141
4.5.1 forward動(dòng)作 141
4.5.2 include動(dòng)作 142
4.5.3 plugin動(dòng)作指令 143
4.5.4 useBean動(dòng)作 143
4.6 JSP的內(nèi)置對(duì)象 144
4.6.1 輸出對(duì)象out 144
4.6.2 4種屬性范圍 145
4.6.3 請(qǐng)求對(duì)象request 145
4.6.4 響應(yīng)對(duì)象response 146
4.6.5 會(huì)話對(duì)象session 147
4.6.6 Web服務(wù)器對(duì)象application 148
4.7 JSP中文亂碼問題全解決方案 149
4.7.1 JSP頁面中文亂碼 149
4.7.2 URL傳遞參數(shù)中文亂碼 150
4.7.3 表單提交中文亂碼 151
4.7.4 使用請(qǐng)求編碼格式過濾器Filter 152
4.8 本章小結(jié) 153
4.9 習(xí)題 154
實(shí)訓(xùn)4 Servlet和 JSP綜合應(yīng)用 155
第5章 Struts 2開發(fā) 162
5.1 Struts 2簡(jiǎn)介 162
5.1.1 Struts的起源 162
5.1.2 MVC設(shè)計(jì)模式簡(jiǎn)介 163
5.1.3 Struts優(yōu)、缺點(diǎn) 163
5.2 Struts 2安裝 164
5.3 Strut 2工作原理 165
5.4 Struts配置文件 166
5.4.1 Struts.xml文件 167
5.4.2 加載子配置文件 167
5.4.3 Action配置 167
5.4.4 struts.properties屬性文件 168
5.5 Struts 2開發(fā)實(shí)例 168
5.6 攔截器 172
5.6.1 攔截器介紹 172
5.6.2 攔截器實(shí)例 174
5.7 類型轉(zhuǎn)換OGNL 176
5.7.1 OGNL簡(jiǎn)介 176
5.7.2 類型轉(zhuǎn)換實(shí)例 176
5.7.3 OGNL小結(jié) 180
5.8 Struts 2常用標(biāo)簽 181
5.9 輸入校驗(yàn) 183
5.9.1 手動(dòng)輸入完成校驗(yàn) 183
5.9.2 使用Struts 2框架校驗(yàn) 185
5.9.3 校驗(yàn)器的配置風(fēng)格 188
5.10 Struts國際化 189
5.11 本章小結(jié) 190
5.12 習(xí)題 190
實(shí)訓(xùn)5 用Struts實(shí)現(xiàn)圖書管理系統(tǒng)中用戶登錄模塊 192
第6章 Hibernate基礎(chǔ) 196
6.1 Hibernate概述 196
6.1.1 Hibernate簡(jiǎn)介 196
6.1.2 Hibernate不同版本之間的區(qū)別 197
6.1.3 持久層與ORM 198
6.1.4 Hibernate體系結(jié)構(gòu) 199
6.1.5 Hibernate API簡(jiǎn)介 201
6.2 Hibernate應(yīng)用基礎(chǔ) 201
6.2.1 Hibernate應(yīng)用開發(fā)步驟 201
6.2.2 Hibernate配置文件 202
6.2.3 Hibernate核心接口 205
6.2.4 HQL查詢 207
6.2.5 Hibernate開發(fā)實(shí)例 209
6.3 Hibernate對(duì)象 219
6.3.1 對(duì)象的特征 219
6.3.2 對(duì)象的狀態(tài) 222
6.3.3 主鍵生成策略 223
6.3.4 對(duì)象關(guān)系映射 225
6.3.5 關(guān)系映射實(shí)例 230
6.4 Hibernate事務(wù)編程 234
6.4.1 事務(wù)概述 234
6.4.2 JDBC中使用事務(wù) 235
6.4.3 Hibernate事務(wù)管理 236
6.5 本章小結(jié) 240
6.6 習(xí)題 240
實(shí)訓(xùn)6 用Struts和Hibernate實(shí)現(xiàn)高校選課系統(tǒng) 241
第7章 Spring基礎(chǔ)與應(yīng)用 248
7.1 Spring 概述 248
7.1.1 Spring框架簡(jiǎn)介 248
7.1.2 Spring的特點(diǎn) 249
7.1.3 Spring框架結(jié)構(gòu) 249
7.2 Spring快速入門 251
7.2.1 搭建Spring環(huán)境 251
7.2.2 一個(gè)簡(jiǎn)單依賴注入實(shí)例 253
7.3 依賴注入基本原理 255
7.3.1 控制反轉(zhuǎn)與依賴注入 255
7.3.2 依賴注入的形式 256
7.3.3 IoC裝載機(jī)制 260
7.4 Spring AOP概述 262
7.4.1 AOP概念與術(shù)語 262
7.4.2 AOP實(shí)現(xiàn)機(jī)制 264
7.4.3 Spring中的AOP 270
7.5 Spring事務(wù)管理 276
7.5.1 事務(wù)簡(jiǎn)介 276
7.5.2 事務(wù)管理器 277
7.5.3 Spring事務(wù)管理機(jī)制 278
7.5.4 事務(wù)的傳播行為和隔離級(jí)別 280
7.6 本章小結(jié) 281
7.7 習(xí)題 282
實(shí)訓(xùn)7 Struts 2+Spring 3集成示例 283
第8章 SSH整合架構(gòu)開發(fā) 289
8.1 SSH集成開發(fā)簡(jiǎn)介 289
8.2 SSH集成開發(fā)實(shí)例1 290
8.3 SSH集成開發(fā)實(shí)例2 301
8.4 本章小結(jié) 310
第9章 Java EE課程設(shè)計(jì)案例 311
9.1 系統(tǒng)概述 311
9.2 系統(tǒng)需求分析 311
9.2.1 學(xué)習(xí)平臺(tái)系統(tǒng)功能分析 312
9.2.2 設(shè)計(jì)思想 312
9.3 系統(tǒng)數(shù)據(jù)庫設(shè)計(jì) 312
9.3.1 數(shù)據(jù)庫概念設(shè)計(jì) 313
9.3.2 數(shù)據(jù)庫邏輯設(shè)計(jì) 314
9.3.3 數(shù)據(jù)庫的連接原理 316
9.4 平臺(tái)功能實(shí)現(xiàn) 316
9.4.1 創(chuàng)建項(xiàng)目工程 317
9.4.2 三層開發(fā)過程 317
9.5 本章小結(jié) 339
附錄A Java EE開發(fā)常見錯(cuò)誤及解決 340
附錄B Java EE面試題及參考答案 344
第5章 Struts 2開發(fā)
Struts 2是開源組織Apache開發(fā)的一個(gè)MVC架構(gòu),目的是為了代碼的可重用性和可維護(hù)性,應(yīng)用比較廣泛。從字面上看,Struts 2好像是Struts 1的升級(jí)版本,其實(shí)并不是。Struts 2是以WebWork的設(shè)計(jì)思想為核心,再吸收Struts 1的優(yōu)點(diǎn)形成的。因此可以認(rèn)為,Struts 2是Struts 1和WebWork結(jié)合的產(chǎn)物。
本章要點(diǎn):
* 熟悉Struts的概念以及與MVC的關(guān)系;
* 了解Struts的優(yōu)缺點(diǎn);
* 掌握Struts的開發(fā)過程及工作原理;
* 熟悉Struts.xml的配置;
* 掌握Struts 2的簡(jiǎn)單例子及Struts 2攔截器使用;
* 了解輸入校驗(yàn)、標(biāo)簽以及國際化等內(nèi)容。
5.1 Struts 2簡(jiǎn)介
Struts 2作為Struts1的下一代產(chǎn)品是一個(gè)特例,它是在WebWork的技術(shù)基礎(chǔ)上形成的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。也就是說,Struts 2.x與Struts 1.x是沒有直接關(guān)系的。Struts 2以WebWork的設(shè)計(jì)思想為核心,采用攔截器的機(jī)制來處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。雖然從Struts到Struts 2有著太大的變化,但是相對(duì)于WebWork,Struts 2的變化很小。
5.1.1 Struts的起源
Struts 2雖然是在Struts 1的基礎(chǔ)上發(fā)展起來的,但實(shí)質(zhì)上是以WebWork為核心,Struts 2為傳統(tǒng)Struts 1注入了WebWork的設(shè)計(jì)理念,統(tǒng)一了Struts 1和WebWork兩個(gè)框架,允許Struts 1和WebWork開發(fā)者同時(shí)使用Struts 2框架。因?yàn)镾truts 2是以WebWork為核心,而不是以Struts 1為核心的。正因?yàn)榇耍S多WebWork開發(fā)者會(huì)發(fā)現(xiàn),從WebWork過渡到Struts 2是一件非常簡(jiǎn)單的事情。當(dāng)然,對(duì)于傳統(tǒng)的Struts 1開發(fā)者,Struts 2也提供了很好的向后兼容性,Struts 2可與Struts 1有機(jī)整合,從而保證Struts 1開發(fā)者能平穩(wěn)過渡到Struts 2。
Struts是Apache基金組織中Jakarta項(xiàng)目組的一個(gè)開源(Open Source)項(xiàng)目,主要實(shí)現(xiàn)MVC設(shè)計(jì)模式,在Struts 中有自己的控制器(ActionServlet),同時(shí)也提供了各種常用的頁面標(biāo)簽庫以減少JSP頁面中的Scriptlet代碼。Struts 實(shí)際上就屬于傳統(tǒng)技術(shù)上發(fā)展起來的一種新的應(yīng)用模式,其操作本質(zhì)依然還是JSP、Servlet、JavaBean等技術(shù)的應(yīng)用。
5.1.2 MVC設(shè)計(jì)模式簡(jiǎn)介
Struts框架作為MVC設(shè)計(jì)模式應(yīng)用典范,要理解Struts框架的開發(fā)首先就要理解什么是MVC模式。實(shí)際上,在第1章中曾經(jīng)介紹過MVC設(shè)計(jì)模式,MVC作為一種流行的軟件設(shè)計(jì)模式,把系統(tǒng)分為3個(gè)部分:模型(Model)、視圖(View)、控制器(Controller)。各個(gè)模塊與Struts中各個(gè)組件的對(duì)應(yīng)關(guān)系如表5-1所示。
表5-1 MVC與Struts中各個(gè)組件對(duì)應(yīng)關(guān)系
MVC模塊
描 述
Struts
模型
(Model)
代表應(yīng)用程序數(shù)據(jù)和業(yè)務(wù)邏輯,由JavaBean實(shí)現(xiàn)
ActionForm、JavaBean
視圖
(View)
提供可交互的用戶界面,供用戶輸入數(shù)據(jù)和向用戶顯示模型數(shù)據(jù),采用JSP表示
在傳統(tǒng)頁面中提供了標(biāo)簽庫的支持
控制器
(Controller)
響應(yīng)客戶請(qǐng)求,根據(jù)客戶請(qǐng)求來操縱模型,并把模型的響應(yīng)結(jié)果通過視圖展示給客戶,其功能由Servlet實(shí)現(xiàn)
Action
5.1.3 Struts優(yōu)、缺點(diǎn)
Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn),使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。Struts開放源碼框架的創(chuàng)建是為了使開發(fā)者在構(gòu)建基于Java Servlet和JSP技術(shù)的Web應(yīng)用時(shí)更加容易。Struts框架為開放者提供了一個(gè)統(tǒng)一的標(biāo)準(zhǔn)框架,通過使用Struts作為基礎(chǔ),開發(fā)者能夠更專注于應(yīng)用程序的商業(yè)邏輯。Struts框架本身是使用Java Servlet和JSP技術(shù)的一種Model-View-Controller(MVC)實(shí)現(xiàn)。
具體來講,Struts的優(yōu)點(diǎn)如下。
* 實(shí)現(xiàn)MVC模式,結(jié)構(gòu)清晰,使開發(fā)者只關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn)。
* 有豐富的tag可以用,Struts的標(biāo)記庫(Taglib),如能靈活動(dòng)用,則能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。
* 頁面導(dǎo)航,頁面導(dǎo)航將是以后的一個(gè)發(fā)展方向,事實(shí)上,這樣做使系統(tǒng)的脈絡(luò)更加清晰。通過一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。
* 支持主題,集成DOJO框架,提供Exception處理機(jī)制。
* 數(shù)據(jù)庫鏈接池管理。內(nèi)置AJAX,支持I18N。
當(dāng)然也有其缺點(diǎn),開發(fā)人員在使用時(shí)注意揚(yáng)長(zhǎng)避短。
* 轉(zhuǎn)到表示層時(shí),需要配置forward,每次修改配置之后,要求重新部署整個(gè)項(xiàng)目,如果業(yè)務(wù)變?yōu)閺?fù)雜頻繁的系統(tǒng),這樣的操作簡(jiǎn)直不可想象。
* Struts 的Action必需是thread-safe方式,它僅僅允許一個(gè)實(shí)例去處理所有的請(qǐng)求。所以Action用到的所有的資源都必需統(tǒng)一同步,這個(gè)就引起了線程安全的問題。
* 測(cè)試不方便。Struts的每個(gè)Action都同Web層耦合在一起,使它的測(cè)試依賴于Web容器,單元測(cè)試也很難實(shí)現(xiàn)。但是有一個(gè)Junit的擴(kuò)展工具Struts TestCase可以實(shí)現(xiàn)它的單元測(cè)試。
* 類型的轉(zhuǎn)換。Struts的FormBean把所有的數(shù)據(jù)都作為String類型,可以使用工具Commons-Beanutils進(jìn)行類型轉(zhuǎn)化。但是轉(zhuǎn)化都是在Class級(jí)別,而且轉(zhuǎn)化的類型是不可配置的。類型轉(zhuǎn)化時(shí)的錯(cuò)誤信息返回給用戶也是非常困難的。
* 對(duì)Servlet的依賴性過強(qiáng)。Struts處理Action時(shí)必需要依賴ServletRequest 和ServletResponse,所以它擺脫不了Servlet容器。
* 對(duì)事件支持不夠。在Struts中,實(shí)際是一個(gè)表單Form對(duì)應(yīng)一個(gè)Action類(或DispatchAction),換句話說就是,在Struts中實(shí)際是一個(gè)表單只能對(duì)應(yīng)一個(gè)事件,Struts這種事件方式稱為application event,application event和component event相比是一種粗粒度的事件。
另外,Struts重要的表單對(duì)象ActionForm是一種對(duì)象,它代表了一種應(yīng)用,這個(gè)對(duì)象中至少包含幾個(gè)字段,這些字段是JSP頁面表單中的input字段,因?yàn)橐粋(gè)表單對(duì)應(yīng)一個(gè)事件,所以,當(dāng)需要將事件粒度細(xì)化到表單中這些字段時(shí),也就是說,一個(gè)字段對(duì)應(yīng)一個(gè)事件時(shí),單純使用Struts就不太可能,當(dāng)然通過結(jié)合JavaScript也是可以轉(zhuǎn)彎實(shí)現(xiàn)的。
5.2 Struts 2安裝
在安裝Struts之前,確保使用的機(jī)器上已經(jīng)正確安裝JDK、Tomcat和MyEclipse。如果MyEclipse的版本沒有對(duì)Struts 2的支持,需要用戶下載Struts 2的開發(fā)包。可以下載*新的Struts 2版本為Struts 2.5.2,本章使用的是Struts 2.3.16。具體操作步驟如下。
打開http://struts.apache.org/網(wǎng)站,單擊右上角的Struts 2,在進(jìn)入的頁面中單擊Download Now按鈕,下載Full Distribution(完整版),完成后并解壓。
這是一個(gè)典型的Web結(jié)構(gòu),里面包含以下4個(gè)文件:
(1)apps包含基于Struts 2的實(shí)例應(yīng)用,是學(xué)習(xí)Struts 2非常有用的資料。
(2)docs包含Struts 2的官方文檔,如Struts 2教程、Struts 2文檔、API等文檔。
(3)lib包含Struts 2框架的核心類庫,以及Struts 2的第三方插件類庫。
(4)src包含Struts 2框架的全部源代碼。
其中l(wèi)ib中包含以下6個(gè)Struts運(yùn)行必需的基本包。
* struts2-core-2.3.16.jar:開發(fā)的核心類庫。
* freemarker-2.3.19.jar:Struts 2的UI標(biāo)簽的模板,使用freemarker編寫。
* commons-logging-1.1.13.jar:日志包。
* ognl-3.0.6.jar:對(duì)象圖導(dǎo)航語言,用來讀寫對(duì)象屬性。
* xwork-2.3.16.jar:xwork類庫,Struts 2在其上進(jìn)行構(gòu)建。
* commons-fileupload-1.3.1.jar:文件上傳組件,Struts 2.1.6版本后必須加入此jar包。
?注意:特別要注意導(dǎo)入commons-fileupload-1.3.1.jar包,在此jar包中包含了RequestContext類,大部分情況下,如果不導(dǎo)入該jar包程序?qū)?huì)報(bào)異常。
(1)將Struts開發(fā)包中l(wèi)ib目錄下的全部*.jar包文件復(fù)制Tomcat的lib目錄下:將commons-logging-1.1.13.jar、freemarker-2.3.19.jar、ognl-3.0.6.jar、struts2-core-2.3.16.1.jar、xwork-2.3.16.1.jar、commons-fileupload-1.3.1.jar復(fù)制到\WEB-INF\lib目錄下(其他jar文件請(qǐng)根據(jù)需要復(fù)制)。
(2)在\WEB-INF\下的web.xml中添加配置Struts過濾器。
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecute Filter
struts2
/*
(3)在src目錄中新建struts.xml文件,然后配置Action跳轉(zhuǎn)內(nèi)容,示例如下:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
/login.jsp
/result.jsp
5.3 Strut 2工作原理
Struts 2是一個(gè)典型的MVC架構(gòu),給軟件開發(fā)帶來很大的方便。在Struts 2中,其中M(業(yè)務(wù)層)用Java程序(業(yè)務(wù)類)來實(shí)現(xiàn),V(表示層)用JSP來實(shí)現(xiàn),C(控制層)用Action實(shí)現(xiàn)。Struts本身并不提供模型組件,但是可以支持Spring、Hibernate等框架,與其他框架組成應(yīng)用。
Struts 2的工作原理圖,如圖5-1所示。
從圖5-1中可以看出,Struts 2整個(gè)處理流程分為以下幾步。
(1)客戶端發(fā)送請(qǐng)求到Web容器(如Tomcat)。
(2)Web容器將請(qǐng)求傳遞給Struts 2的控制器FilterDispatcher。
(3)FilterDispatcher
……