說明介紹struts2與struts1 x比較_第1頁
說明介紹struts2與struts1 x比較_第2頁
說明介紹struts2與struts1 x比較_第3頁
說明介紹struts2與struts1 x比較_第4頁
說明介紹struts2與struts1 x比較_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論