出版時間:2012-4 出版社:電子工業(yè)出版社 作者:李剛 頁數(shù):816
Tag標(biāo)簽:無
前言
前 言 經(jīng)過多年沉淀,Java EE平臺已經(jīng)成為電信、金融、電子商務(wù)、保險、證券等各行業(yè)的大型應(yīng)用系統(tǒng)的首選開發(fā)平臺。目前Java行業(yè)的軟件開發(fā)已經(jīng)基本穩(wěn)定,這兩三年內(nèi)基本沒有出現(xiàn)什么具有廣泛影響 力的新技術(shù)。Java EE開發(fā)大致可分為兩種方式:以Spring為核心輕量級Java EE企業(yè)開發(fā)平臺;以EJB 3+JPA為核心的經(jīng)典Java EE開發(fā)平臺。無論使用哪種平臺進(jìn)行開發(fā),應(yīng)用的性能、穩(wěn)定性都有很好的保證,開發(fā)人群也有很穩(wěn)定的保證?! ”緯榻B的開發(fā)平臺,就是以Struts 2.2+Spring 3.0+Hibernate 3.6(實際項目中可能以JPA來代替Hibernate )為核心的輕量級Java EE,這種組合在保留經(jīng)典Java EE應(yīng)用架構(gòu)、高度可擴(kuò)展性、高度可維護(hù)性的基礎(chǔ)上,降低了Java EE應(yīng)用的開發(fā)、部署成本,對于大部分中小型企業(yè)應(yīng)用是首選。在一些需要具有高度伸縮性、高度穩(wěn)定性的企業(yè)應(yīng)用(比如銀行系統(tǒng)、保險系統(tǒng))里,以EJB 3+JPA為核心的經(jīng)典Java EE應(yīng)用則具有廣泛的占有率。本書的姊妹篇《經(jīng)典Java EE企業(yè)應(yīng)用實戰(zhàn)》主要介紹了后一種Java EE開發(fā)平臺?! ”緯饕壛恕遁p量級Java EE企業(yè)應(yīng)用實戰(zhàn)》的知識,采用最新的Tomcat 7作為Web服務(wù)器,全面而細(xì)致地介紹了Servlet 3.0的新特性,并將Struts升級到Struts 2.2.1,Spring升級到3.0.5,Hibernate升級到3.6.0。書中詳細(xì)介紹了Spring和Hibernate的“零配置”特性,并充分介紹了Struts 2的Convention(約定)支持。本書不僅介紹了Spring 2.x的AOP支持,詳細(xì)介紹了Spring 2.x中Schema配置所支持的util、aop、tx等命名空間,還簡要講解了AspectJ的相關(guān)內(nèi)容。本書也重點介紹了Spring 3.0的新功能:SpEL,SpEL不僅可以作為表達(dá)式語言單獨使用,也可與Spring容器結(jié)合來擴(kuò)展Spring容器的功能?! ”緯鴦?chuàng)作感言 筆者首先要感謝廣大讀者對本書第2版的認(rèn)同,在將近2年的時間內(nèi),本書第2版的銷量高達(dá)178萬碼洋,得到無數(shù)Java學(xué)習(xí)者的認(rèn)同,成為Java EE開發(fā)者首選的經(jīng)典圖書??紤]到目前技術(shù)的升級,筆者現(xiàn)將本書的全部技術(shù)升級到最新版、最前沿,以饗讀者?! ∵€有一個值得介紹的消息:本書姊妹篇《經(jīng)典Java EE企業(yè)應(yīng)用實戰(zhàn)》(由電子工業(yè)出版社出版,ISBN 978-7-121-11534-9)現(xiàn)已上市。學(xué)習(xí)本書時可以采用“輕經(jīng)合參”的方式來學(xué)習(xí):“輕”指的是以“SSH”整合的輕量級Java EE開發(fā)平臺,“經(jīng)”指的是以“EJB 3+JPA”整合的經(jīng)典Java EE開發(fā)平臺;這兩種平臺本身具有很大的相似性,將兩種Java EE開發(fā)平臺結(jié)構(gòu)放在一起參考、對照著學(xué)習(xí),能更好地理解Spring、Hibernate框架的設(shè)計思想,從而更深入地掌握它們。與此同時,也可以深入理解EJB 3與Spring容器中的Bean、EJB容器與Spring容器之間的聯(lián)系和區(qū)別,從而融會貫通地掌握EJB 3+JPA整合的開發(fā)方式?! 〗?jīng)常有讀者寫郵件來問筆者,為何你能快而且全面地掌握各種Java開發(fā)技術(shù)?筆者以前做過一些零散的回復(fù)。這里簡單地介紹筆者學(xué)習(xí)Java的一些歷史與方法,希望廣大讀者從中借鑒值得學(xué)習(xí)的地方,避開一些彎路?! 」P者大約是1999年開始接觸Java,開始主要做點Applet玩(當(dāng)時筆者對Applet做出來的動畫十分傾心)。后來開始流行ASP、JSP,筆者再次喜歡上ASP、JSP那種極其簡單的語法、短期內(nèi)的快速上手,后來斷斷續(xù)續(xù)用ASP、JSP寫了多個小型企業(yè)網(wǎng)站、BBS、OA系統(tǒng)之類--不知道其他人是什么經(jīng)歷,筆者選擇編程一方面是因為個人愛好和“自豪感”(覺得能做出各種軟件,有點成就感),另一方面是因為編寫軟件可以輕易地賣點錢(是不是很俗?),但這個目的筆者無法回避--由于出生在湖北一個貧窮的鄉(xiāng)下,所以在同濟(jì)念書時筆者常常為了開飯而寫代碼,或許有一些程序員和筆者會有相同的感觸。 在后來的開發(fā)過程中,筆者發(fā)現(xiàn)純粹的JSP開發(fā)雖然前期很方便,但由于開發(fā)時代碼重復(fù)得厲害,所以后期升級、維護(hù)很痛苦,于是開始大規(guī)模地修改自己寫的一堆“垃圾”代碼,不斷地思考怎樣對JSP腳本進(jìn)行提取、封裝到Java Bean中,這個過程并不順利,經(jīng)常遭遇各種性能問題、并發(fā)問題。原本可以運行良好的應(yīng)用,反而被改得經(jīng)常出現(xiàn)問題。 大約到了2000年,筆者接觸到EJB,對EJB許下的“承諾”無比欣羨,于是義無反顧地投入EJB的懷抱,不過EJB的學(xué)習(xí)并不順利,當(dāng)時用的好像是WebLogic 5的服務(wù)器,那時候覺得WebLogic 5所報的錯誤晦澀、難以閱讀,動輒幾屏的錯誤信息,讓人感覺很有壓力?! 〔贿^筆者是一個頑固的人,遇到錯誤總是不斷地修改、不斷地嘗試,在這樣的嘗試中,不知不覺中,天色已經(jīng)發(fā)白。說來慚愧,第一個Hello World級的Entity EJB居然花了將近一個月的時間才弄完(絕不建議讀者從EJB 1.1或EJB 2開始學(xué)習(xí),這只會給學(xué)習(xí)徒增難度,而且現(xiàn)在EJB 1.1、EJB 2都已被淘汰)。在那段時間內(nèi),筆者連最心愛的C幾乎完全沒碰過?! ≡诮酉聛淼?年多時間內(nèi),筆者一直沉浸在EJB中,不斷地搜尋各種關(guān)于EJB的資料、不斷地深入鉆研著關(guān)于EJB規(guī)范、EJB的運行、EJB容器的運行機(jī)制。隨著時間的流逝,EJB、EJB容器的運行原理逐漸明朗起來?! ∧鞘且欢巫屓藨涯畹摹?ldquo;神話”般的歲月,年輕的人,似乎擁有無窮的精力,那也是筆者Java技術(shù)增長最迅速的3年,筆者的Java EE功底也是在那3年內(nèi)打下的,后來接觸的各種“新”技術(shù)只是在那個基礎(chǔ)上“修修補(bǔ)補(bǔ)”,或者“溫故而知新”?! ?004年初,筆者開始接觸到Spring框架,從接觸Spring的第一天開始,直到今天,筆者一直覺得Spring和EJB之間有很大的相似性: Spring本身也是一個容器,只是EJB容器管理的是EJB,Spring容器管理的是普通Java對象?! pring對Bean類的要求很少,EJB容器對EJB的要求略多一些--所以初學(xué)者學(xué)習(xí)EJB上手較難,但學(xué)習(xí)Spring就簡單得多?! ∫驗檎业竭@種類比性,筆者學(xué)習(xí)Spring時,總是不斷地將EJB與Spring進(jìn)行類比,然后再找出它們之間的不同之處。由于采用了這種“溫故而知新”的學(xué)習(xí)方式,所以筆者很容易就理解了Spring的設(shè)計,而且更加透徹?! 『芏郕ava學(xué)習(xí)者在學(xué)習(xí)過程中往往容易感覺Java開發(fā)內(nèi)容紛繁蕪雜,造成這種感覺的原因就是因為沒有進(jìn)行很好的歸納、總結(jié)、類比。為了避免“知識越學(xué)越多”的混亂感,讀者應(yīng)該充分利用已掌握的知識,溫故而知新--一方面對已有的知識進(jìn)行歸納、總結(jié),另一方面將新的內(nèi)容與已掌握的知識進(jìn)行類比,這樣既能把已有的知識掌握得更有條理、更系統(tǒng),也能更快、更透徹地掌握新的知識。 出于以上理由,筆者在介紹非常專業(yè)的編程知識之時,總會通過一些淺顯的類比來幫助讀者更好地理解。“簡單、易讀”成為筆者一貫堅持的創(chuàng)作風(fēng)格,也是瘋狂Java體系叢書的特色。另一方面,瘋狂Java體系圖書的知識也很全面、實用。筆者希望讀者在看完瘋狂Java體系的圖書之后,可以較為輕松地理解書中所介紹的知識,并切實學(xué)會一種實用的開發(fā)技術(shù),進(jìn)而將之應(yīng)用到實際開發(fā)中。如果讀者在學(xué)習(xí)過程中遇到無法理解的問題,可以登錄瘋狂Java聯(lián)盟(http://www.crazyit. org)與廣大Java學(xué)習(xí)者交流,筆者也會通過該平臺與大家一起交流、學(xué)習(xí)。 本書有什么特點 本書保持了《輕量級Java EE企業(yè)應(yīng)用實戰(zhàn)》第2版簡單、實用的優(yōu)勢,同樣堅持讓案例說話、以案例來介紹知識點的風(fēng)格,在書的最后同樣示范開發(fā)了企業(yè)工作流案例,希望讀者通過該案例真正步入實際企業(yè)開發(fā)的殿堂?! ”緯廊槐A袅恕遁p量級J2EE企業(yè)應(yīng)用實戰(zhàn)》第2版的三個特色。 1.經(jīng)驗豐富,針對性強(qiáng) 筆者既擔(dān)任過軟件開發(fā)的技術(shù)經(jīng)理,也擔(dān)任過軟件公司的培訓(xùn)導(dǎo)師,還從事過職業(yè)培訓(xùn)的專職講師,這些經(jīng)驗影響了筆者寫書的目的,不是一本學(xué)院派的理論讀物,而是一本實際的開發(fā)指南?! ?.內(nèi)容實際,實用性強(qiáng) 本書所介紹的Java EE應(yīng)用范例,采用了目前企業(yè)流行的開發(fā)架構(gòu),絕對嚴(yán)格遵守Java EE開發(fā)規(guī)范,而不是將各種技術(shù)雜亂地糅合在一起號稱Java EE。讀者參考本書的架構(gòu),完全可以身臨其境地感受企業(yè)實際開發(fā)?! ?.高屋建瓴,啟發(fā)性強(qiáng) 本書介紹的幾種架構(gòu)模式,幾乎是時下最全面的Java EE架構(gòu)模式。這些架構(gòu)模式可以直接提升讀者對系統(tǒng)架構(gòu)設(shè)計的把握?! ”緯鴮懡o誰看 如果你已經(jīng)掌握了Java SE內(nèi)容,或已經(jīng)學(xué)完了《瘋狂Java講義》一書,那么你非常適合閱讀此書。除此之外,如果你已有初步的JSP、Servlet基礎(chǔ),甚至對Struts 2、Spring 3.0、Hibernate 3.6有所了解,但希望掌握它們在實際開發(fā)中的應(yīng)用,本書也將非常適合你。如果你對Java的掌握還不熟練,則建議遵從學(xué)習(xí)規(guī)律,循序漸進(jìn),暫時不要購買、閱讀此書。
內(nèi)容概要
本書是《輕量級Java
EE企業(yè)應(yīng)用實戰(zhàn)》的第3版,第3版保持了第2版內(nèi)容全面、深入的特點,主要完成全部知識的升級。
本書介紹了Java
EE領(lǐng)域的三個開源框架:Struts
2、Spring和Hibernate。其中Struts
2升級到2.2.1,Spring升級到3.0.5,Hibernate升級到了3.6.0。本書還全面介紹了Servlet
3.0的新特性,以及Tomcat 7.0的配置和用法,本書的示例應(yīng)該在Tomcat
7.0上運行。
本書重點介紹如何整合Struts
2.2+Spring 3.0+Hibernate 3.6進(jìn)行Java
EE開發(fā),主要包括三部分。第一部分介紹Java
EE開發(fā)的基礎(chǔ)知識,以及如何搭建開發(fā)環(huán)境。第二部分詳細(xì)講解Struts 2.2、Spring
3.0和Hibernate 3.6三個框架的用法,介紹三個框架時,從Eclipse IDE的使用來上手,一步步帶領(lǐng)讀者深入三個框架的核心。這部分內(nèi)容是筆者講授“瘋狂Java實訓(xùn)”的培訓(xùn)講義,因此是本書的重點部分,既包含了筆者多年開發(fā)經(jīng)歷的領(lǐng)悟,也融入了豐富的授課經(jīng)驗。第三部分示范開發(fā)了一個包含7個表、表之間具有復(fù)雜的關(guān)聯(lián)映射、繼承映射等關(guān)系,且業(yè)務(wù)也相對復(fù)雜的工作流案例,希望讓讀者理論聯(lián)系實際,將三個框架真正運用到實際開發(fā)中去,該案例采用目前最流行、最規(guī)范的Java
EE架構(gòu),整個應(yīng)用分為領(lǐng)域?qū)ο髮?、DAO層、業(yè)務(wù)邏輯層、MVC層和視圖層,各層之間分層清晰,層與層之間以松耦合的方法組織在一起。該案例既提供了IDE無關(guān)的、基于Ant管理的項目源碼,也提供了基于Eclipse
IDE的項目源碼,最大限度地滿足讀者的需求。
本書不再介紹Struts
1.X相關(guān)內(nèi)容,如果讀者希望獲取《輕量級J2EE企業(yè)應(yīng)用實戰(zhàn)》第一版中關(guān)于Struts
1.X的知識,請登錄http://www.crazyit.org下載。當(dāng)讀者閱讀此書時如果遇到技術(shù)難題,也可登錄http://www.crazyit.org發(fā)帖,筆者將會及時予以解答。
閱讀本書之前,建議先認(rèn)真閱讀筆者所著的《瘋狂Java講義》一書。本書適合于有較好的Java編程基礎(chǔ),或有初步JSP、Servlet基礎(chǔ)的讀者。尤其適合于對Struts
2、Spring、Hibernate了解不夠深入,或?qū)truts
2+Spring+Hibernate整合開發(fā)不太熟悉的開發(fā)人員閱讀。
作者簡介
李剛:從事10年的Java EE應(yīng)用開發(fā)。
曾任LITEON公司的J2EE技術(shù)主管,負(fù)責(zé)該公司的企業(yè)信息平臺的架構(gòu)設(shè)計。
曾任廣州電信、廣東龍泉科技等公司的技術(shù)培訓(xùn)導(dǎo)師。
2007年3月26日的《電腦報》專訪人物。
現(xiàn)任新東方廣州中心軟件教學(xué)總監(jiān),并曾任廣東技術(shù)師范學(xué)院計算機(jī)科學(xué)系的兼職副教授。
培訓(xùn)的學(xué)生已在華為、立信、普信、網(wǎng)易、電信盈科、中企動力等公司就職。
國內(nèi)知名的高端IT技術(shù)作家,已出版《Spring
2.0寶典》、《基于J2EE的Ajax寶典》、《輕量級J2EE企業(yè)應(yīng)用實戰(zhàn)》、《Struts 2權(quán)威指南》、《Ruby On
Rails敏捷開發(fā)最佳實踐》等著作。
書籍目錄
第1章 Java EE應(yīng)用和開發(fā)環(huán)境
1.1 Java EE應(yīng)用概述
1.1.1 Java EE應(yīng)用的分層模型
1.1.2 Java EE應(yīng)用的組件
1.1.3 Java EE應(yīng)用的結(jié)構(gòu)和優(yōu)勢
1.1.4 常用的Java EE服務(wù)器
1.2 輕量級Java EE應(yīng)用相關(guān)技術(shù)
1.2.1 JSP、Servlet 3.0和JavaBean及替代技術(shù)
1.2.2 Struts 2.2及替代技術(shù)
1.2.3 Hibernate 3.6及替代技術(shù)
1.2.4 Spring 3.0及替代技術(shù)
1.3 Tomcat的下載和安裝
1.3.1 安裝Tomcat服務(wù)器
1.3.2 配置Tomcat的服務(wù)端口
1.3.3 進(jìn)入控制臺
1.3.4 部署Web應(yīng)用
1.3.5 配置Tomcat的數(shù)據(jù)源
1.4 Eclipse的安裝和使用
1.4.1 Eclipse的下載和安裝
1.4.2 在線安裝Eclipse插件
1.4.3 從本地壓縮包安裝插件
1.4.4 手動安裝Eclipse插件
1.4.5 使用Eclipse開發(fā)Java EE應(yīng)用
1.4.6 導(dǎo)入Eclipse項目
1.4.7 導(dǎo)入非Eclipse項目
1.5 Ant的安裝和使用
1.5.1 Ant的下載和安裝
1.5.2 使用Ant工具
1.5.3 定義生成文件
1.5.4 Ant的任務(wù)(task)
1.6 使用CVS進(jìn)行協(xié)作開發(fā)
1.6.1 安裝CVS服務(wù)器
1.6.2 配置CVS資源庫
1.6.3 安裝CVS客戶端
1.6.4 發(fā)布項目到服務(wù)器
1.6.5 從服務(wù)器下載項目
1.6.6 同步(Update)本地文件
1.6.7 提交(Commit)修改
1.6.8 添加文件和目錄
1.6.9 刪除文件和目錄
1.6.10 查看文件的版本變革
1.6.11 提取文件以前版本的內(nèi)容
1.6.12 從以前版本重新開始
1.6.13 創(chuàng)建標(biāo)簽
1.6.14 創(chuàng)建分支
1.6.15 沿著分支開發(fā)
1.6.16 使用Eclipse作為CVS客戶端
1.7 本章小結(jié)
第2章 JSP/Servlet及相關(guān)技術(shù)詳解
2.1 Web應(yīng)用和web.xml文件
2.1.1 構(gòu)建Web應(yīng)用
2.1.2 配置描述符web.xml
2.2 JSP的基本原理
2.3 JSP注釋
2.4 JSP聲明
2.5 輸出JSP表達(dá)式
2.6 JSP腳本
2.7 JSP的3個編譯指令
2.7.1 page指令
2.7.2 include指令
2.8 JSP的7個動作指令
2.8.1 forward指令
2.8.2 include指令
2.8.3 useBean、setProperty、getProperty指令
2.8.4 plugin指令
2.8.5 param指令
2.9 JSP腳本中的9個內(nèi)置對象
2.9.1 application對象
2.9.2 config對象
2.9.3 exception對象
2.9.4 out對象
2.9.5 pageContext對象
2.9.6 request對象
2.9.7 response對象
2.9.8 session對象
2.10 Servlet介紹
2.10.1 Servlet的開發(fā)
2.10.2 Servlet的配置
2.10.3 JSP/Servlet的生命周期
2.10.4 load-on-startup Servlet
2.10.5 訪問Servlet的配置參數(shù)
2.10.6 使用Servlet作為控制器
2.11 JSP 2的自定義標(biāo)簽
2.11.1 開發(fā)自定義標(biāo)簽類
2.11.2 建立TLD文件
2.11.3 使用標(biāo)簽庫
2.11.4 帶屬性的標(biāo)簽
2.11.5 帶標(biāo)簽體的標(biāo)簽
2.11.6 以頁面片段作為屬性的標(biāo)簽
2.11.7 動態(tài)屬性的標(biāo)簽
2.12 Filter介紹
2.12.1 創(chuàng)建Filter類
2.12.2 配置Filter
2.12.3 使用URL Rewrite實現(xiàn)網(wǎng)站偽靜態(tài)
2.13 Listener介紹
2.13.1 實現(xiàn)Listener類
2.13.2 配置Listener
2.13.3 使用ServletContextAttribute-Listener
2.13.4
使用ServletRequestListener和ServletRequestAttributeListener
2.13.5 使用HttpSessionListener和HttpSessionAttributeListener
2.14 JSP 2特性
2.14.1 配置JSP屬性
2.14.2 表達(dá)式語言
2.14.3 Tag File支持
2.15 Servlet 3.0新特性
2.15.1 Servlet 3.0的Annotation
2.15.2 Servlet 3.0的Web模塊支持
2.15.3 Servlet 3.0提供的異步處理
2.15.4 改進(jìn)的Servlet API
2.16 本章小結(jié)
第3章 Struts 2的基本用法
3.1 MVC思想概述
3.1.1 傳統(tǒng)Model 1和Model 2
3.1.2 MVC思想及其優(yōu)勢
3.2 Struts 2的下載和安裝
3.2.1 為Web應(yīng)用增加Struts 2支持
3.2.2 在Eclipse中使用Struts 2
3.2.3 增加登錄處理
3.3 Struts 2的流程
3.3.1 Struts 2應(yīng)用的開發(fā)步驟
3.3.2 Struts 2的流程
3.4 Struts 2的常規(guī)配置
3.4.1 常量配置
3.4.2 包含其他配置文件
3.5 實現(xiàn)Action
3.5.1 Action接口和ActionSupport基類
3.5.2 Action訪問Servlet API
3.5.3 Action直接訪問Servlet API
3.5.4 使用ServletActionContext訪問Servlet API
3.6 配置Action
3.6.1 包和命名空間
3.6.2 Action的基本配置
3.6.3 使用Action的動態(tài)方法調(diào)用
3.6.4 指定method屬性及使用通配符
3.6.5 配置默認(rèn)Action
3.6.6 配置Action的默認(rèn)處理類
3.7 配置處理結(jié)果
3.7.1 理解處理結(jié)果
3.7.2 配置結(jié)果
3.7.3 Struts 2支持的結(jié)果類型
3.7.4 plainText結(jié)果類型
3.7.5 redirect結(jié)果類型
3.7.6 redirectAction結(jié)果類型
3.7.7 動態(tài)結(jié)果
3.7.8 Action屬性值決定物理視圖資源
3.7.9 全局結(jié)果
3.7.10 使用PreResultListener
3.8 配置Struts 2的異常處理
3.8.1 Struts 2的異常處理機(jī)制
3.8.2 聲明式異常捕捉
3.8.3 輸出異常信息
3.9 Convention插件與“約定”支持
3.9.1 Action的搜索和映射約定
3.9.2 按約定映射Result
3.9.3 Action鏈的約定
3.9.4 自動重加載映射
3.9.5 Convention插件的相關(guān)常量
3.9.6 Convention插件相關(guān)Annotation
3.10 使用Struts 2的國際化
3.10.1 Struts 2中加載全局資源文件
3.10.2 訪問國際化消息
3.10.3 輸出帶占位符的國際化消息
3.10.4 加載資源文件的方式
3.10.5 加載資源文件的順序
3.11 使用Struts 2的標(biāo)簽庫
3.11.1 Struts 2標(biāo)簽庫概述
3.11.2 使用Struts 2標(biāo)簽
3.11.3 Struts 2的OGNL表達(dá)式語言
3.11.4 OGNL中的集合操作
3.11.5 訪問靜態(tài)成員
3.11.6 Lambda(?)表達(dá)式
3.11.7 控制標(biāo)簽
3.11.8 數(shù)據(jù)標(biāo)簽
3.11.9 主題和模板
3.11.10 自定義主題
3.11.11 表單標(biāo)簽
3.11.12 非表單標(biāo)簽
3.12 本章小結(jié)
第4章 深入使用Struts 2
4.1 詳解Struts 2的類型轉(zhuǎn)換
4.1.1 Struts 2內(nèi)建的類型轉(zhuǎn)換器
4.1.2 基于OGNL的類型轉(zhuǎn)換
4.2.3 指定集合元素的類型
4.1.4 自定義類型轉(zhuǎn)換器
4.1.5 注冊類型轉(zhuǎn)換器
4.1.6 基于Struts 2的自定義類型轉(zhuǎn)換器
4.1.7 處理Set集合
4.1.8 類型轉(zhuǎn)換中的錯誤處理
4.2 使用Struts 2的輸入校驗
4.2.1 編寫校驗規(guī)則文件
4.2.2 國際化提示信息
4.2.3 使用客戶端校驗
4.2.4 字段校驗器配置風(fēng)格
4.2.5 非字段校驗器配置風(fēng)格
4.2.6 短路校驗器
4.2.7 校驗文件的搜索規(guī)則
4.2.8 校驗順序和短路
4.2.9 內(nèi)建校驗器
4.2.10 基于Annotation的輸入校驗
4.2.11 手動完成輸入校驗
4.3 使用Struts 2控制文件上傳
4.3.1 Struts 2的文件上傳
4.3.2 實現(xiàn)文件上傳的Action
4.3.3 配置文件上傳的Action
4.3.4 手動實現(xiàn)文件過濾
4.3.5 攔截器實現(xiàn)文件過濾
4.3.6 輸出錯誤提示
4.3.7 文件上傳的常量配置
4.4 使用Struts 2控制文件下載
4.4.1 實現(xiàn)文件下載的Action
4.4.2 配置Action
4.4.3 下載前的授權(quán)控制
4.5 詳解Struts 2的攔截器機(jī)制
4.5.1 攔截器在Struts 2中的作用
4.5.2 Struts 2內(nèi)建的攔截器
4.5.3 配置攔截器
4.5.4 使用攔截器
4.5.5 配置默認(rèn)攔截器
4.5.6 實現(xiàn)攔截器類
4.5.7 使用攔截器
4.5.8 攔截方法的攔截器
4.5.9 攔截器的執(zhí)行順序
4.5.10 攔截結(jié)果的監(jiān)聽器
4.5.11 覆蓋攔截器棧里特定攔截器的參數(shù)
4.5.12 使用攔截器完成權(quán)限控制
4.6 使用Struts 2的Ajax支持
4.6.1 使用stream類型的Result實現(xiàn)Ajax
4.6.2 JSON的基本知識
4.6.3 實現(xiàn)Action邏輯
4.6.4 JSON插件與json類型的Result
4.6.5 實現(xiàn)JSP頁面
4.7 本章小結(jié)
第5章 Hibernate的基本用法
第6章 深入使用Hibernate
第7章 Spring的基本用法
第8章 深入使用Spring
第9章 企業(yè)應(yīng)用開發(fā)的思考和策略
第10章 簡單工作流系統(tǒng)
章節(jié)摘錄
版權(quán)頁: 插圖: 3.10.5 加載資源文件的順序 Struts 2提供了如此多的方式來加載國際化資源文件,這些加載國際化資源文件的方式有自己的優(yōu)先順序。假設(shè)我們需要在ChildAction中訪問國際化消息,則系統(tǒng)加載國際化資源文件的優(yōu)先級是: ①優(yōu)先加載系統(tǒng)中保存在ChildAction的類文件相同位置,且baseName為ChildAction的系列資源文件。 ②如果在①中找不到指定key對應(yīng)的消息,且ChildAction有父類ParentAction,則加載系統(tǒng)中保存在ParentAction的類文件相同位置,且baseName為ParentAction的系列資源文件。 ③如果在②中找不到指定key對應(yīng)的消息,且ChildAction有實現(xiàn)接口IChildAction,則加載系統(tǒng)中保存在IChildAction的類文件相同位置,且baseName為IChildAction的系列資源文件。 ④如果在③中找不到指定key對應(yīng)的消息,且ChildAction有實現(xiàn)接口ModelDriven(即使用模型驅(qū)動模式),則對于9etModel()方法返回的model對象,重新執(zhí)行第①步操作。 ⑤如果在④中找不到指定key對應(yīng)的消息,則查找當(dāng)前包下baseName為package的系列資源文件。 ⑥如果在⑤中找不到指定key對應(yīng)的消息,則沿著當(dāng)前包上溯,直到最頂層包來查找baseName為package的系列資源文件。 ⑦如果在⑥中找不到指定key對應(yīng)的消息,則查找struts.custom.i18n.resources常量指定baseName的系列資源文件。 ⑧如果經(jīng)過上面的步驟一直找不到該key對應(yīng)的消息,將直接輸出該key的字符串值;如果在上面的步驟①~⑦的任一步中,找到指定key對應(yīng)的消息,系統(tǒng)停止搜索,直接輸出該key對應(yīng)的消息。 對于在JSP中訪問國際化消息,則簡單得多,它們又可以分成兩種形式: 對于使用標(biāo)簽作為父標(biāo)簽的標(biāo)簽、表單標(biāo)簽的形式 ①將從標(biāo)簽指定的國際化資源文件中加載指定key對應(yīng)的消息。 ②如果在①中找不到指定key對應(yīng)的消息,則查找struts.custom.i18n.resources常量指定baseName的系列資源文件。 ③如果經(jīng)過上面的步驟一直找不到該key對應(yīng)的消息,將直接輸出該key的字符串值;如果在上面的步驟①~②的任一步中,找到指定key對應(yīng)的消息,系統(tǒng)停止搜索,直接輸出該key對應(yīng)的消息。 如果標(biāo)簽、表單標(biāo)簽沒有使用標(biāo)簽作為父標(biāo)簽 直接加載struts.custom.i18n.resources常量指定baseName的系列資源文件。如果找不到該key對應(yīng)的消息,將直接輸出該key的字符串值;否則,輸出該key對應(yīng)的國際化消息。 3.11 使用Struts 2的標(biāo)簽庫 Struts 2也提供了大量標(biāo)簽來幫助開發(fā)表現(xiàn)層頁面,與Struts1的標(biāo)簽庫相比,Struts 2的標(biāo)簽庫功能更加強(qiáng)大,而且更加簡單易用。 3.11.1 Struts 2標(biāo)簽庫概述 與Struts1標(biāo)簽庫相比,Struts 2的標(biāo)簽庫有一個巨大的改進(jìn)之處:Struts 2標(biāo)簽庫的標(biāo)簽不依賴于任何表現(xiàn)層技術(shù),也就是說,Struts 2提供的大部分標(biāo)簽,可以在各種表現(xiàn)層技術(shù)中使用,包括最常用的JSP頁面,也可以在Velocity和FreeMarker等模板技術(shù)中使用。
編輯推薦
《輕量級Java EE企業(yè)應(yīng)用實戰(zhàn)(第3版):Struts 2+Spring 3+Hibernate整合開發(fā)(超值紀(jì)念版)》適合于有較好的Java編程基礎(chǔ),或有初步JSP、Servlet基礎(chǔ)的讀者。尤其適合于對Struts2、Spring、Hibernate了解不夠深入,或?qū)truts2+Spring+Hibernate整合開發(fā)不太熟悉的開發(fā)人員閱讀。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
輕量級Java EE企業(yè)應(yīng)用實戰(zhàn) PDF格式下載