struts1與struts2的區別

單實例與多實例
有狀態就是有數據存儲功能,比如購物車,買一件東西放進去,可以再次購買或者刪減。
無狀態就是一次操作,不能保存數據。

有狀態對象,就是有成員屬性的對象,可以保存數據,是非線程安全的。
無狀態對象,就是沒有成員屬性的對象.不能保存數據,是線程安全的。

Struts2 的Action是有狀態的,是非線程安全的,所以是多實例的。
Struts1的Action是無狀態的,是線程安全的,所以可以單實例。

無侵入式設計
Struts2沒有像Struts1那樣跟Servlet API有着緊密的耦合,Struts2的應用可以不依賴於Servlet API和Struts API。Struts2的這種設計屬於無侵入式設計,而Struts1卻屬於侵入式設計。

使用OGNL表達式語言
OGNL提供了在Struts2裏訪問各種作用域中的數據的簡單方式,你可以方便的獲取Request,Attribute,Application,Session,Parameters中的數據。

使用了攔截器
Struts2 的攔截器是一個Action級別的AOP,Struts2中的許多特性都是通過攔截器來實現的,例如異常處理,文件上傳,驗證等。攔截器是可配置與重用 的,可以將一些通用的功能如:登錄驗證,權限驗證等置於攔截器中以完成一些Java Web項目中比較通用的功能。在我實現的的一Web項目中,就是使用Struts2的攔截器來完成了系統中的權限驗證功能。

全局結果與聲明式異常
爲應用程序添加全局的Result,和在配置文件中對異常進行處理,這樣當處理過程中出現指定異常時,可以跳轉到特定頁面,這一功能十分實用。

方便的類型轉換
Struts2提供了類型轉換器,可以把特殊的請求參數轉換成需要的的類型。Struts1中如果實現同樣的功能,必須向Struts1的底層實現BeanUtil註冊類型轉換器。

其它

Struts2支持多種表現層技術,如JSP,freeMarker,Velocity等。
Struts2的輸入校驗可以對指定方法進行校驗,解決了Struts1長久這痛。
Struts2提供了全局範圍、包範圍、Action範圍的國際資源文件管理實現。

 

發佈了418 篇原創文章 · 獲贊 62 · 訪問量 238萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章