總結了Struts1與Struts2的12點區別

來源:互聯網
上載者:User

標籤:style   http   java   io   檔案   資料   for   ar   

1) 在Action完成類方面的號碼大全比照:Struts 1需求Action類承繼一個籠統基類關鍵詞挖掘工具;Struts 1的一個詳細問題是運用籠統類編程而不是介面。Struts 2 Action類可以完成一個Action介面,也可以完成其他介面,使可選和定製的效勞成為可能。Struts 2供給一個ActionSupport基類去完成常用的介面。即便Action介面不是有必要完成的,只要一個包含execute辦法的POJO類都可以用作Struts 2的Action。 

2) 線程形式方面的比照:Struts 1 Action是單例形式而且有必要是安全執行緒的,由於僅有Action的一個執行個體來處置一切的懇求。單例戰略約束了Struts 1 Action能做的事,而且要在開發時格外小心。Action資本有必要是安全執行緒的或同步的;Struts 2 Action目標為每一個懇求發生一個執行個體,因而沒有安全執行緒問題。 

3) Servlet依靠方面的比照:Struts 1 Action依靠於Servlet API,由於Struts 1 Action的execute辦法中有HttpServletRequest和HttpServletResponse辦法。Struts 2 Action不再依靠於Servlet API,然後答應Action脫離Web容器運轉,然後降低了測驗Action的難度。 當然,假如Action需求直接拜訪HttpServletRequest和HttpServletResponse參數,Struts 2 Action仍然可以拜訪它們。可是,大多數時分,Action都無需直接拜訪HttpServetRequest和HttpServletResponse,然後給開發人員更多靈敏的挑選。 

4) 可測性方面的比照:測驗Struts 1 Action的一個首要問題是execute辦法依靠於Servlet API,這使得Action的測驗要依靠於Web容器。為了脫離Web容器測驗Struts 1的Action,有必要藉助於第三方拓展:Struts TestCase,該拓展下包含了系列的Mock目標(類比了HttpServetRequest和HttpServletResponse目標),然後可以脫離Web容器測驗Struts 1的Action類。Struts 2 Action可以經過初始化、設定特點、調用辦法來測驗。 

5) 封裝懇求參數的比照:Struts 1運用ActionForm目標封裝使用者的懇求參數,一切的ActionForm有必要承繼一個基類:ActionForm。一般的JavaBean不能用作ActionForm,因而,開發人員有必要創立很多的ActionForm類封裝使用者懇求參數。儘管Struts 1供給了動態ActionForm來簡化ActionForm的開發,但仍然需求在裝備檔案中界說ActionForm;Struts 2直接運用Action特點來封裝使用者懇求特點,避免了開發人員需求很多開發ActionForm類的煩瑣,實際上,這些特點還可以是包含子特點的Rich目標類型。假如開發人員仍然懷念Struts 1 ActionForm的形式,Struts 2供給了ModelDriven形式,可以讓開發人員運用獨自的Model目標來封裝使用者懇求參數,但該Model目標無需承繼任何Struts 2基類,是一個POJO,然後降低了代碼汙染。 

6) 運算式言語方面的比照:Struts 1結合了JSTL,因而可以運用JSTL運算式言語。這種運算式言語有根本靶心圖表遍曆,但在對調集和索引特點的支撐上則功用不強;Struts 2可以運用JSTL,但它結合了一種更強大和靈敏的運算式言語:OGNL(Object Graph Notation Language),因而,Struts 2下的運算式言語功用更加強大。 

7) — 綁定值到視圖的比照:Struts 1運用規範JSP機制把目標綁定到視圖頁面;Struts 2運用“ValueStack”技能,使標籤庫可以拜訪值,而不需求把目標和視圖頁面綁定在一同。 

8) 類型變換的比照:Struts 1 ActionForm 特點一般都是String類型。Struts 1運用Commons-Beanutils進行類型變換,每個類一個變換器,變換器是不可裝備的;Struts 2運用OGNL進行類型變換,支撐根本資料類型和常用目標之間的變換。 

9) 資料校正的比照:Struts 1支撐在ActionForm重寫validate辦法中手動校正,或許經過結合Commons alidator結構來完成資料校正。Struts 2支撐經過重寫validate辦法進行校正,也支撐結合XWork校正結構進行校正。 

10) Action履行控制的比照:Struts 1支撐每一個模組對應一個懇求處置(即生命週期的概念),可是模組中的一切Action有必要同享一樣的生命週期。Struts 2支撐經過攔截器倉庫(Interceptor Stacks)

 

-        indexRead arguments from command-line "http://www.shoudashou.com"

-        indexRead arguments from command-line "http://www.4lunwen.cn"

-        indexRead arguments from command-line "http://www.zx1234.cn"

-        indexRead arguments from command-line "http://www.penbar.cn"

-        indexRead arguments from command-line "http://www.whathappy.cn"

-        indexRead arguments from command-line "http://www.lunjin.net"

-        indexRead arguments from command-line "http://www.ssstyle.cn"

-        indexRead arguments from command-line "http://www.91fish.cn"

-        indexRead arguments from command-line "http://www.fanselang.com"為每一個Action創立不一樣的生命週期。開發人員可以根據需求創立相應倉庫,然後和不一樣的Action一同運用。 

11) 捕獲輸入:Struts1 運用ActionForm目標捕獲輸入。一切的ActionForm有必要承繼一個基類。由於其他JavaBean不能用作ActionForm,開發人員常常創立多餘的類捕獲輸入。動態Bean(DynaBeans)可以作為創立傳統ActionForm的挑選,可是,開發人員可能是在從頭描繪(創立)現已存在的JavaBean(仍然會導致有冗餘的javabean)。Struts 2直接運用Action特點作為輸入特點,消除了對第二個輸入目標的需求。輸入特點可能是有自個(子)特點的rich目標類型。Action特點可以經過 web頁面上的taglibs拜訪。Struts2也支撐ActionForm形式。rich目標類型,包含營運目標,可以用作輸入/輸出目標。這種 ModelDriven 特性簡化了taglib對POJO輸入目標的引證。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.