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