古詩詞大全網 - 藝術簽名 - struts和struts2的區別

struts和struts2的區別

事實上,Struts2並不是壹個奇怪的Web框架。Struts2基於Webwork的設計思想,吸收了Struts1的優點。所以Struts2可以認為是Struts1和Webwork結合的產物。

簡單來說,兩者的區別在於:

壹個是Stuts1,壹個是Stuts2,這是最大的區別。從技術上來說,Stuts1有壹個核心控制器,但它只提供了壹個接口,即execute,而且配置actionform比較麻煩,因此有很強的依賴性。Stuts2是為攔截器開發的,也就是所謂的AOP思想。可以配置多個action,使用方便,但是速度比Stuts1慢壹點是因為請求之前的攔截器有壹些註入操作。

壹、MVC簡介

Struts2是壹個兼容Struts1和WebWork的MVC框架。既然提到了MVC框架,我們就要對它做壹個簡單的介紹,僅限於簡單介紹。如果想了解更多關於MVC的知識,可以查閱相關文檔或者找壹本關於Struts1的書。我相信MVC上會有很大的空間。言歸正傳,其實目前Java中出現的這些框架的最終目的都是接觸耦合,無論是Spring、Hibernate還是MVC框架,目的都是為了接觸耦合增加復用。MVC聯系了視圖和模型之間的耦合。

MVC由三個基本部分組成:模型、視圖和控制器,它們以最小的耦合協同工作,以增加程序的可伸縮性和可維護性。各部分的實現技術可以概括如下:

1)型號:JavaBean,EJB的EntityBean。

2)視圖:JSP和Struts的TagLib。

3)控制器:ActionServlet和Struts的Action。

綜上所述,MVC的優勢主要包括以下幾個方面:

1)多個視圖可以對應壹個模型。根據MVC設計模式,壹個模型對應多個視圖,可以減少代碼重復和代碼維護,並且壹旦模型發生變化,易於維護。

2)模型返回的數據與顯示邏輯分離。任何顯示技術都可以應用於模型數據,例如,使用JSP頁面、Velocity模板或直接生成Excel文檔。

3)應用分為三層,降低了層與層之間的耦合,提供了應用的可擴展性。

4)控制層的概念也很有效,因為它結合了不同的模型和不同的視圖來完成不同的請求。因此,控制層可以說包含了用戶請求權限的概念。

5)MVC更符合軟件工程管理的精神。不同層有各自的功能,每層的組件具有相同的特性,有利於通過工程化和工具化生成管理程序代碼。

MVC概念性的東西就到此為止了,重點是各個模塊的實現技術是什麽。

其次,簡要介紹Struts2

Struts2是由Struts1發展而來,但實際上Struts2和Struts1在框架設計思路上還是有很大區別的。Struts2基於WebWork的設計思想。Struts2為什麽不遵循Struts1的設計思路?畢竟Struts1在目前的企業應用中還是有非常大的市場的。所以,讓我們看看Struts 65438。

1)支持單表示層技術。

2)與Servlet API嚴重耦合,從Execute of Action的方法聲明就能看出來。

3)代碼依賴Struts1 API,具有侵入性,從編寫Action類和FormBean的時候就可以看出來。操作必須實現Struts的操作類。

Struts2之所以以WebWork為核心,是因為最近WebWork正在興起,WebWork沒有Struts1的缺點,更符合MVC設計思想,更有利於代碼重用。

基於上面的介紹,可以看出Struts2的架構和Struts1的架構有很大的不同。Struts1使用ActionServlet作為其中央處理器,而Struts2使用FilterDispatcher作為其中央處理器。這樣做的壹個好處是Action類和Servlet API是分開的。

Struts2的簡單處理流程如下:

1)瀏覽器發送請求。

2)中央處理器根據struts.xml文件查找相應的處理請求的動作類。

3)WebWork的攔截器鏈自動將通用功能應用於請求,如工作流、驗證等功能。

4)如果在Struts.xml文件中配置了方法參數,則調用方法參數對應的Action類中的方法方法;否則,調用壹般的Execute方法來處理用戶請求。

5)將Action類中相應方法返回的結果響應給瀏覽器。

3.Struts2和Struts1之間的比較

1)動作類實現:

Struts1的Action在實現時必須擴展Action類或其子類。Struts2的Action類可以不用任何類和接口實現。盡管Struts2中提供了ActionSupport類,但這不是必需的。

2)Struts 1的Action類是singleton模式,必須設計成線程安全的,而Struts2為每個請求生成壹個實例。

3)Struts1的Action類依賴於Servlet API。從其execute方法的簽名可以看出,execute方法有兩個servlet參數HttpServletRequest和HttpServletResponse,而Struts2不依賴於Servlet API。

4)認為Struts1依賴於Servlet API,測試Struts1的動作非常困難,需要借助其他測試工具進行測試。Struts2的動作可以像模型層的其他服務類壹樣進行測試。

5)Struts 1的動作和視圖通過ActionForm或其子類傳輸數據。雖然有LazyValidationForm這樣的ActionForms,但是它們仍然無法像其他關卡壹樣通過壹個簡單的POJO來傳輸數據,而Struts2將這樣的奢望變成了現實。

6)Struts1綁定JSTL,為頁面編寫帶來便利。Struts2集成了ONGL,也可以使用JSTL,所以Struts2下的表達式語言更強大。

4.Struts2和WebWork的比較

Struts2實際上是WebWork2.3 .然而,Struts2與WebWork略有不同:

1)Struts2不再支持內置的IOC容器,轉而使用Spring的IOC容器。

2)Struts2用Dojo替代了Webwork的壹些Ajax特性。