Struts2的優勢與Struts1的區別:

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

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

Struts2 的Action是有狀態的,是非線程安全的,因此是多實例的。
Struts1的Action是無狀態的,是線程安全的,因此能夠單實例。設計

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

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

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

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

方便的類型轉換
Struts2提供了類型轉換器,能夠把特殊的請求參數轉換成須要的的類型。Struts1中若是實現一樣的功能,必須向Struts1的底層實現BeanUtil註冊類型轉換器。文件上傳

其它it

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

相關文章
相關標籤/搜索