總結了Struts1與Struts2的12點區別

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輸入目標的引證。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章