出版時(shí)間:2010-2 出版社:人民郵電出版社 作者:Donald Brown,Chad Michael Davis,Scott Stanli 頁(yè)數(shù):332 字?jǐn)?shù):514000 譯者:馬召
Tag標(biāo)簽:無(wú)
前言
我從2002年開(kāi)始接觸Java。雖然Java是我選修的一門(mén)課程,但是當(dāng)?shù)谝淮慰吹絁ava簡(jiǎn)潔語(yǔ)法背后的強(qiáng)大功能時(shí),我就被它深深地吸引了。而真正認(rèn)識(shí)Java Web開(kāi)發(fā)是在2003年。那年暑假,我找了一份不錯(cuò)的兼職工作,為國(guó)內(nèi)某一大型企業(yè)開(kāi)發(fā)后臺(tái)管理系統(tǒng)。記得當(dāng)時(shí)使用的是WebLogic Portal 7,主要的開(kāi)發(fā)方式是前臺(tái)JSP調(diào)用后臺(tái)的EJB。正好有一個(gè)從美國(guó)工作回來(lái)的“大蝦”負(fù)責(zé)帶我,我從他那里第一次聽(tīng)說(shuō)了Struts、Spring、Hibernate等一系列的開(kāi)源技術(shù),于是開(kāi)始了對(duì)這些技術(shù)的研究??上У氖牵厴I(yè)之后我沒(méi)有選擇進(jìn)入那家公司工作,也就失去了向那位“大蝦”繼續(xù)學(xué)習(xí)的機(jī)會(huì),現(xiàn)在回想起來(lái)還蠻后悔的?! r(shí)間一晃到了2007年,我已經(jīng)工作了3年,工作經(jīng)驗(yàn)的豐富和對(duì)技術(shù)的熱愛(ài)讓我終于決定要寫(xiě)一本技術(shù)書(shū),同時(shí)也為開(kāi)源社區(qū)做一些貢獻(xiàn)。在這3年中,我一直從Struts中受益,但是也飽受Struts的煎熬。清晰的MVC框架、JSP文件的邏輯命名、功能強(qiáng)大的JSP標(biāo)簽都讓我備感輕松,同時(shí)FormBean與域?qū)ο蟮闹貜?fù)、煩瑣的配置文件、機(jī)械的開(kāi)發(fā)方式也讓我吃夠了苦頭。當(dāng)時(shí)正好WebWork與Struts結(jié)合的產(chǎn)物Struts 2也開(kāi)始成熟起來(lái),在我膚淺地研究這些內(nèi)容之后,就決定開(kāi)始寫(xiě)一本關(guān)于Struts 2的書(shū),這也正是我的博客http://blog.csdn.net/struts2產(chǎn)生的直接原因。從2007年7月30日第一篇文章開(kāi)始到現(xiàn)在,我的博客已經(jīng)累計(jì)了幾十篇文章,其中有些是從Struts 2官方網(wǎng)站直接翻譯過(guò)來(lái)的內(nèi)容,有些是自己工作經(jīng)驗(yàn)的總結(jié),但是每一篇文章都凝聚了我對(duì)Struts 2的熱愛(ài)與推崇?! ?008年6月11日,我收到了人民郵電出版社圖靈公司編輯傅志紅女士的一封來(lái)信,問(wèn)我是否愿意翻譯Manning出版社久負(fù)盛名的in Action系列的圖書(shū)之一Struts 2 in Action。我高興都來(lái)不及,怎么能不愿意呢?于是在簡(jiǎn)短的過(guò)程性事務(wù)之后,我就正式開(kāi)始了本書(shū)的翻譯,同時(shí)也放棄了自己寫(xiě)書(shū)的想法。這本書(shū)寫(xiě)得這么好,我為什么還要班門(mén)弄斧呢?能夠翻譯出來(lái)讓喜歡Struts 2的讀者一起分享,我已經(jīng)很滿足了。此后的無(wú)數(shù)個(gè)深夜,這個(gè)世界上就又多了一盞昏暗的燈和一顆澎湃的心。也正是經(jīng)歷了這本書(shū)的翻譯歷程,我才知道翻譯一本書(shū)遠(yuǎn)比想象的要辛苦。但是畢竟我是第一次翻譯技術(shù)書(shū)籍,英語(yǔ)基礎(chǔ)又不是很好,所以其中肯定會(huì)有錯(cuò)誤或者不合適的地方,還請(qǐng)大家多多諒解,多多指點(diǎn)。大家可以上我的博客直接評(píng)論。非常感謝大家能夠閱讀本書(shū),相信本書(shū)一定能夠讓大家深入了解Struts 2?! ”緯?shū)的中文版本能夠出版要非常感謝以下人員?! ∧俏弧按笪r”,出于個(gè)人隱私的原因,我沒(méi)有說(shuō)明他是誰(shuí),但是如果“大蝦”看到的話,他肯定會(huì)知道的。如果沒(méi)有他帶我邁進(jìn)Java的門(mén)檻,或許我現(xiàn)在還在門(mén)外徘徊?! ∥铱蓯?ài)的媳婦兒,她通讀了全書(shū),找出了很多明顯的錯(cuò)誤和不合適的表述?! ∥宜吐毜墓疽约案魑活I(lǐng)導(dǎo)和同事,是他們給了我學(xué)習(xí)和成長(zhǎng)的機(jī)會(huì)。
內(nèi)容概要
本書(shū)結(jié)合實(shí)例介紹了Struts 2框架,主要內(nèi)容包括Action、Result、Interceptor等框架組件,基于注解的配置選項(xiàng)等新特征,Struts 2插件 FreeMarker,如何從Struts 1和WebWork 2遷移到Struts 2,Ajax標(biāo)簽、Spring框架集成等新特性。 本書(shū)適合各層次Java開(kāi)發(fā)人員閱讀和參考。
作者簡(jiǎn)介
Donald Brown,Atlassian軟件系統(tǒng)公司托管服務(wù)的首席軟件工程師和Apache軟件基金會(huì)成員,參與開(kāi)發(fā)了Slruts及多個(gè)ApacheC0mmons項(xiàng)目,并且是JavaOne、ApacheCon和Java用戶組的活躍分子?! had Michael Davis,J2EE開(kāi)發(fā)人員、軟件顧問(wèn)、作家,撰寫(xiě)過(guò)多篇計(jì)算機(jī)領(lǐng)域的學(xué)術(shù)著作?! cott Stanlick,現(xiàn)在著名汽車(chē)租賃連鎖企業(yè)EnlerpriseRent-A.Car任軟件架構(gòu)師。
書(shū)籍目錄
第一部分 Strut 2:一個(gè)全新的框架 第1章 Struts 2:現(xiàn)代Web框架 1.1 Web應(yīng)用程序:快速學(xué)習(xí) 1.1.1 構(gòu)建Web應(yīng)用程序 1.1.2 基礎(chǔ)技術(shù)簡(jiǎn)介 1.1.3 深入研究 1.2 Web應(yīng)用程序框架 1.2.1 什么是框架 1.2.2 為什么使用框架 1.3 Struts 2框架 1.3.1 Struts 2簡(jiǎn)史 1.3.2 Struts 2概覽:MVC模式 1.3.3 Struts 2的工作原理 1.4 小結(jié) 第2章 初識(shí)Struts 2.1 聲明性架構(gòu) 2.1.1 兩種配置 2.1.2 聲明架構(gòu)的兩種方式 2.1.3 智能默認(rèn)值 2.2 簡(jiǎn)單的HelloWorld示例 2.2.1 部署示例應(yīng)用程序 2.2.2 探索HelloWorld應(yīng)用程序 2.3 使用注解的HelloWorld 2.4 小結(jié)第二部分 核心概念:動(dòng)作、攔截器和類(lèi)型轉(zhuǎn)換 第3章 使用Struts 2動(dòng)作 3.1 Struts 2動(dòng)作簡(jiǎn)介 3.2 打包動(dòng)作 3.2.1 Struts 2公文包示例應(yīng)用程序 3.2.2 組織你的包 3.2.3 使用struts-default包中的組件 3.3 實(shí)現(xiàn)動(dòng)作 3.3.1 可選的Action接口 3.3.2 ActionSupport類(lèi) 3.4 向?qū)ο髠鬟f數(shù)據(jù) 3.4.1 對(duì)象支持的JavaBean屬性 3.4.2 ModelDriven動(dòng)作 3.4.3 域?qū)ο笥米鲾?shù)據(jù)轉(zhuǎn)移的潛在危險(xiǎn) 3.5 案例研究:文件上傳 3.5.1 通過(guò)struts-default包獲得內(nèi)建的支持 3.5.2 fileUpload攔截器做什么 3.5.3 Struts 2公文包示例代碼研究 3.6 小結(jié) 第4章 使用攔截器追加工作流 4.1 為什么要攔截請(qǐng)求 4.1.1 清理MVC 4.1.2 從攔截器受益 4.1.3 開(kāi)發(fā)攔截器 4.2 攔截器的工作原理 4.2.1 總指揮ActionInvocation4 4.2.2 如何觸發(fā)攔截器 4.3 研究?jī)?nèi)建的Struts 2攔截器 4.3.1 工具攔截器 4.3.2 數(shù)據(jù)轉(zhuǎn)移攔截器 4.3.3 工作流攔截器 4.3.4 其他攔截器 4.3.5 內(nèi)建的攔截器棧 4.4 聲明攔截器 4.4.1 聲明獨(dú)立的攔截器和攔截器?! ?.4.2 將攔截器映射到動(dòng)作組件 4.4.3 設(shè)置、覆蓋攔截器參數(shù) 4.5 構(gòu)建自定義攔截器 4.5.1 實(shí)現(xiàn)Interceptor接口 4.5.2 構(gòu)建AuthenticationInterceptor攔截器 4.6 小結(jié) 第5章 數(shù)據(jù)轉(zhuǎn)移:OGNL和類(lèi)型轉(zhuǎn)換第三部分 構(gòu)建視圖——標(biāo)簽和結(jié)果 第6章 構(gòu)建視圖——標(biāo)簽 第7章 UI組件標(biāo)簽 第8章 結(jié)果 第四部分 完善應(yīng)用程序 第9章 集成Spring和Hibernate/JPA 第10章 探索驗(yàn)證框架 第11章 理解國(guó)際化 第五部分 高級(jí)主題和最佳實(shí)踐 第12章 使用插件擴(kuò)展Struts 2 第13章 最佳實(shí)踐 第14章 從經(jīng)典Struts遷移 第15章 高級(jí)主題
章節(jié)摘錄
web應(yīng)用程序必須要處理這個(gè)差異?! ?duì)于Web應(yīng)用程序而言,需要跨越HTTP協(xié)議的兩個(gè)障礙——無(wú)狀態(tài)和基于文本。無(wú)狀態(tài)的協(xié)議不記錄收到的多個(gè)請(qǐng)求之間的關(guān)系。每一個(gè)請(qǐng)求都會(huì)被當(dāng)做服務(wù)器接收到的唯一的請(qǐng)求處理。HTTP服務(wù)器沒(méi)有保存用來(lái)追蹤和邏輯上連接來(lái)源于一個(gè)給定客戶的多個(gè)請(qǐng)求的記錄。服務(wù)器有客戶端的地址,但是這個(gè)地址只用來(lái)返回當(dāng)前請(qǐng)求的文檔。如果一個(gè)客戶回來(lái)請(qǐng)求其他文檔,服務(wù)器不知道這是同一個(gè)客戶的重復(fù)訪問(wèn)?! 〉侨绻覀兿霕?gòu)造一個(gè)含有更復(fù)雜用例的復(fù)雜應(yīng)用程序,這就行不通了。以最簡(jiǎn)單、最常見(jiàn)的安全的Web應(yīng)用程序?yàn)槔?,一個(gè)安全的web應(yīng)用程序需要對(duì)它的用戶進(jìn)行身份驗(yàn)證。要做到這點(diǎn),客戶發(fā)送用戶名和密碼的請(qǐng)求,必須能夠通過(guò)某種方式與這個(gè)會(huì)話期間來(lái)源于該客戶的其他請(qǐng)求關(guān)聯(lián)起來(lái)。不能記錄不同請(qǐng)求之間的關(guān)系,連現(xiàn)代Web立用程序的入門(mén)功能都不能實(shí)現(xiàn)。每一個(gè)現(xiàn)代Web應(yīng)用程序都必須解決這個(gè)問(wèn)題。 同樣麻煩的是,HTTP還是基于文本的。將基于文本的技術(shù)與強(qiáng)類(lèi)型的技術(shù)(例如Java)匹配起來(lái)引發(fā)了大量的數(shù)據(jù)綁定工作。在一個(gè)HTTP請(qǐng)求中,所有的數(shù)據(jù)都以文本方式表示。在處理過(guò)程的某個(gè)地方,這些編碼的數(shù)據(jù)必須被映射到Java數(shù)據(jù)類(lèi)型。而且,這個(gè)轉(zhuǎn)換在請(qǐng)求處理過(guò)程的兩端都要發(fā)生。輸入請(qǐng)求參數(shù)必須被遷移到Java環(huán)境,發(fā)出的響應(yīng)必須將數(shù)據(jù)從Java帶回到基于文本的HTTP響應(yīng)。雖然不是什么高深的技術(shù),但它卻為Web應(yīng)用程序帶來(lái)了成堆的煩瑣工作,這些任務(wù)既容易出錯(cuò)又浪費(fèi)時(shí)間?! ?.Java Servlet API Java ServletAPI幫助緩解了一些痛苦。這個(gè)重要的技術(shù)將HTTP公開(kāi)給Java平臺(tái)。這意味著JaVa開(kāi)發(fā)人員可以依據(jù)HTTP客戶/服務(wù)器通信以直觀的面向?qū)ο蟮某橄蠓绞骄帉?xiě)HTTP服務(wù)器代碼。ServletAPI中的核心對(duì)象是Servlet、請(qǐng)求(request)和響應(yīng)(response)。Servlet是一個(gè)單例(singleton)的Java對(duì)象,它全部的用途是接收請(qǐng)求,以及在任意的后端處理之后返回響應(yīng)。請(qǐng)求對(duì)象封裝了各種各樣的請(qǐng)求細(xì)節(jié),包括通過(guò)表單字段提交的請(qǐng)求參與,以及查詢(xún)字符串參數(shù)。響應(yīng)對(duì)象包含如響應(yīng)首部、生成響應(yīng)文本的輸出流等一些關(guān)鍵項(xiàng)目??傊?,Servlet接受請(qǐng)求對(duì)象,檢查其中的數(shù)據(jù),執(zhí)行適當(dāng)?shù)暮笈_(tái)邏輯,之后向客戶返回響應(yīng)。基礎(chǔ)你應(yīng)該知道Sun公司和Servlet規(guī)范。如果你不熟悉Sun公司的做事方式,這里是一個(gè)簡(jiǎn)單知識(shí)的介紹。Sun公司提供技術(shù)規(guī)范,例·~wSeiMet API。這個(gè)規(guī)范是在社區(qū)中產(chǎn)生的,其中包括感興趣的各方,Sun公司本身并不是很重要。規(guī)范詳細(xì)描述了這個(gè)API必須遵守的職責(zé)和契約,真正的實(shí)現(xiàn)由第三方廠商提供。以Servlet規(guī)范為例,其實(shí)現(xiàn)是Servlet容器(Servletcontainer)。這些容器可以是獨(dú)立的實(shí)現(xiàn),例如非常流行的Apache Tomcat,也可以被集成到其他更大的應(yīng)用程序服務(wù)器中。這些容器既有開(kāi)源軟件又有完全商業(yè)化的產(chǎn)品。如果你不熟悉Servlet規(guī)范,我們建議你閱讀一下。它簡(jiǎn)明扼要,讀起來(lái)也很流暢。
媒體關(guān)注與評(píng)論
“由于最近開(kāi)始了一個(gè)Struts2項(xiàng)目,需要深入學(xué)習(xí)這個(gè)框架,我預(yù)定了這本書(shū)。它真的非常棒,沒(méi)有令我失望……作者清楚地闡釋了該框架背后的概念。且提供的示例可以即學(xué)即用。立竿見(jiàn)影。” ——Amazon.com讀者評(píng)論
編輯推薦
Amazon全五星圖書(shū),備受贊譽(yù) 資深開(kāi)發(fā)人員深入剖析Struts2核心概念和組件 學(xué)習(xí)Struts不可不讀
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版