




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Struts2Struts1的體系結(jié)構(gòu)的差別巨大。Struts2WebWork為核心,采用攔截經(jīng)過六年多的發(fā)展,Struts1已經(jīng)成為了一個高度成熟的框架,不管是穩(wěn)定性還是可靠性都得到了廣間的流逝,技術(shù)的進(jìn)步,Struts1的局限性也越來越多地暴露出來,并且制約了Struts1的繼續(xù)發(fā)展。此它不可能與這些視圖層的模版技術(shù)進(jìn)行整合。其次,Struts1ServletAPI的嚴(yán)重耦合,使應(yīng)用難于測試。最后,Struts1代碼嚴(yán)重依賴于Struts1API,屬于侵入性框架。從目前的技術(shù)層面上看,出現(xiàn)了許多與Struts1競爭的視圖層框架,比如JSF、Tapestry和SpringMVC等。Struts1中吸取了經(jīng)驗,克服了很多Struts的發(fā)展。目前,Struts已經(jīng)分化成了兩個框架:第一個是在傳統(tǒng)的Struts1WebWebWork的Struts2。Struts2Struts1的基Struts1WebWork兩個框架。Struts1分化出來的另外一個框架是Shale。這個框架Struts1Struts1關(guān)聯(lián)很少,使用了全新的設(shè)計思想。Shale更像一個新的框架而不是Struts1的升級。本文下面的內(nèi)容將主要討論Struts2。設(shè)計核心。Struts2ServletAPI分離。圖一是Struts2的體系結(jié)構(gòu)簡圖。6、處理業(yè)務(wù)(Action的execute()方法7、返回響應(yīng)(execute方法將信息返回到8、查找響應(yīng)(FilterDispatcher根據(jù)配置查找響應(yīng)的是什么信息如:SUCCESS、ERROER,將跳轉(zhuǎn)到哪jsp頁面)Struts2Struts2Struts1進(jìn)行了巨大的改進(jìn)。主要表現(xiàn)在如下幾當(dāng)然Struts2也不例外。不過,Struts1.x與Struts2的Action模型很大的區(qū)別。ActionStruts1.x那樣,必須把相應(yīng)的BeanPage、RequestSession中才能獲取。Struts1.x必須繼承org.apache.struts.action.Action或者中,通過Getter和Setter獲?。ㄈ缦旅娴腁ctionForStruts2的代碼示例。載(Override)此類里的Stringexecute()方法。如下所示:packageimportjava.util.Date;importpublicclassActionForStruts2extendsActionSupport...{privateStringmessage;publicgetMessage()...{return}publicStringexecute()message="Thisishellofromstrtuts2.Nowis:"+DateFormat.getInstance().format(newDate());returnSUCCESS;}}另外,按照慣例,在Struts1.x中只有“execute”Action,Struts2中并非必要,任何聲明為publicStringmethodName()方法,都能通過配置來調(diào)用Action。Struts1.x最大的革命性的不同是,Struts2Action過程中調(diào)用的方法(“execute”方法)是不帶參數(shù)的。那如何獲取所需要的對象呢?答案是使用IoC(反轉(zhuǎn)控制,InversionofControl),也叫“依賴注入(DependencyInjection)”的模式(想更多地了解這方面信息請看MartinFowler的文章JohnsonJuergenHoeller合著的《Expertone‐on‐oneJ2EEDevelopmentwithoutEJBMartinFowler所寫的《InversionofControlContainersandtheDependencyInjectionpattern》。自身有一套控制反轉(zhuǎn)的實現(xiàn),Webwork2.2在Spring框架的如火如荼發(fā)展的背景下,決定放棄控制反轉(zhuǎn)功能的開發(fā),轉(zhuǎn)由Spring實現(xiàn)。值得一提的是,Spring確實是一個值得學(xué)習(xí)的框架,因為有越來越多的開源組件(iBATIS等)Spring重疊的功能的開發(fā)。因此,Struts2Spring實現(xiàn)控制反求HttpServerRequest對象。publicinterfaceServletRequestAware{}{privateHttpServletRequest{this.request=}//可以開始使用request}}Action對象實例,它并沒有和其他請求共享一個對象,所以訪問之前,進(jìn)行攔截然后在之前或之后加入某些操作。攔截是AOP的一種實現(xiàn)策略。Webwork的中文文檔的解釋為——Action調(diào)用的對象。它提供了一種機(jī)制可以actionaction執(zhí)行前阻止其執(zhí)行。同時也提供了一種可以提取action中可重用的部分的方式。Struts1.x的標(biāo)準(zhǔn)框架中不提供任何形式的攔截器,雖一個名為SAIF的附加項目則實現(xiàn)了這樣的功能,Struts2的一個強(qiáng)有力的工具,有許多功能(feature)都是構(gòu)建于它之上,如國際化、轉(zhuǎn)換器,校驗等。談到攔截器,還有一個流行的詞——攔截器鏈(InterceptorChainStruts2中稱為攔截器器,如圖1所示。Struts2已經(jīng)提供豐富多樣功能齊全的攔截器實現(xiàn)。讀者可以到struts2‐all‐2.0.6.jarStruts2為我們提供如此豐富的攔截器實現(xiàn),但是這并不意味我們失去創(chuàng)建自定義攔截器的能力,恰恰相反,在Struts2自定義攔截器是相當(dāng)容易的一件事。Action供一個名叫ActionSupport的基類來實現(xiàn)一般使用的接口。當(dāng)然,Action接口不是必須的。任何使用execute方法的POJO對象可以被當(dāng)作Struts2Action對象來使用。ServletStruts1.x的Action類依賴于servletAPI,當(dāng)Action被調(diào)用時,以HttpServletRequestAction可以訪問最初的請求(如果需要的話)。但是,盡可能避免或排除其他元素直接訪問HttpServletRequest或HttpServletResponse。Struts1.xexecuteServletAPI這使得測試要依賴于容器。第三方的擴(kuò)展,如StrutsTestCase,提供了一套Struts1的模擬對象(來進(jìn)行測試。Struts2ActionStruts1.xActionFormActionActionForm必須擴(kuò)展基類。因為JavaBeanActionForm使用,開發(fā)者經(jīng)常創(chuàng)建多余的類來捕獲輸入。DynaBeans可以被用Struts2Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。輸入屬性可能是有自己(子)rich對象類型。Actionwebtaglibs訪問。Struts2ActionForm模式。rich對象類型,包括業(yè)務(wù)對象,能夠用作輸入/ModelDriventaglib對POJO輸入對象的引用。Struts2使用JSTL,但是也支持一個更強(qiáng)大和靈活的表達(dá)式語言--"ObjectGraphNotationLanguage"Struts1.x使用標(biāo)準(zhǔn)JSPStruts2使用“ValueStack”taglib能夠訪問值而不需要把你的頁面(view)Struts1.xActionFormString。Struts1.xCommons‐Beanutils來進(jìn)行類型轉(zhuǎn)換。轉(zhuǎn)義的校驗和內(nèi)容校驗,來支持chain校驗子屬性Struts2支持通過攔截器堆棧(InterceptorStacks)Action創(chuàng)建不同的生命周期。堆棧能夠根Action一起使用。5Struts2Struts2Struts1.xStruts2的基礎(chǔ)有所了解了——包括高層的框架概念和基礎(chǔ)的請求流程,并理解Struts1.x和Struts2兩者之間在Action方面的差別,Struts2加強(qiáng)了對攔截器與
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023七年級語文上冊 第六單元 21女媧造人教學(xué)實錄 新人教版
- 2025年三醋酸纖維素膜項目發(fā)展計劃
- 3當(dāng)沖突發(fā)生 第二課時(教學(xué)設(shè)計)-2023-2024學(xué)年道德與法治四年級下冊統(tǒng)編版
- 2025年超低頻綜合參數(shù)測試儀合作協(xié)議書
- 5 健康游戲我常玩(教學(xué)設(shè)計)2023-2024學(xué)年統(tǒng)編版道德與法治二年級上冊
- 2024-2025學(xué)年高中化學(xué)上學(xué)期第9周教學(xué)實錄(醛)
- 4夜書所見教學(xué)設(shè)計-2024-2025學(xué)年三年級上冊語文統(tǒng)編版
- 2023九年級數(shù)學(xué)上冊 第二十一章 一元二次方程21.1 一元二次方程教學(xué)實錄(新版)新人教版
- 5建立良好的公共秩序(教學(xué)設(shè)計)統(tǒng)編版道德與法治五年級下冊
- 5《琥珀》教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版語文四年級下冊
- DeepSeek-V3技術(shù)報告(中文版)
- 政治-貴州省貴陽市2025年高三年級適應(yīng)性考試(一)(貴陽一模)試題和答案
- 公司副總經(jīng)理英文簡歷
- 2025浙江杭州地鐵運(yùn)營分公司校園招聘665人易考易錯模擬試題(共500題)試卷后附參考答案
- 第一篇 專題一 第2講 牛頓運(yùn)動定律與直線運(yùn)動
- 規(guī)劃高中生涯模板
- 中國卒中學(xué)會急性缺血性卒中再灌注治療指南 (2024)解讀-指南解讀系列
- 第二單元 第二次工業(yè)革命和近代科學(xué)文化 說課稿 2024-2025學(xué)年統(tǒng)編版九年級歷史下冊
- 《電氣安全培訓(xùn)課件》
- 2025年結(jié)核病防治知識競賽題庫及答案(共117題)
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計
評論
0/150
提交評論