struts1 與struts2 的區別。
1.都是MVC 的WEB 框架,
2 struts1 的老牌框架,應用很廣泛,有很好的羣衆基礎,使用它開發風險很小,成本更低!struts2雖然基於這個框架,但是 應用羣衆並多,相對不成熟,未知的風險和變化很多,開發人員相對不好招,使用它開發項目的風險係數更大,用人成本更高!
3.struts2 畢竟是站在前輩的基礎設計出來,它會改善和完善struts1 中的一些缺陷,struts1 中一些懸而未決問題在struts2 得到了解決。
4.struts1 的前端控制器是一個Servlet,名稱爲ActionServlet,struts2 的前端控制器是一個filter,在struts2.0 中叫FilterDispatcher,在struts2.1 中StrutsPrepareAndExecuteFilter。
5.struts1 的action 需要繼承Action 類,struts2 的action 可以不繼承任何類;struts1 對同一個路徑的所有請求共享一個Action 實例,struts2 對同一個路徑的每個請求分別使用一個獨立Action 實例對象,所有對於struts2 的Action 不用考慮線程安全問題。
6.在struts1 中使用formbean 封裝請求參數,在struts2 中直接使用action 的屬性來封裝請求參數。
7.struts1 中的多個業務方法放在一個Action 中時(即繼承DispatchAction 時),要麼都校驗,要麼都不校驗;對於struts2,可以指定只對某個方法進行校驗,當一個Action 繼承了ActionSupport且在這個類中只編寫了validateXxx()方法,那麼則只對Xxx()方法進行校驗。(一個請求來了的執行流程進行分析,struts2 是自動支持分模塊開發,並可以不同模塊設置不同的url 前綴,這是通過package 的namespace 來實現的;struts2 是支持多種類型的視圖;struts2的視圖地址可以是動態的,即視圖的名稱是支持變量方式的,舉例,論壇發帖失敗後回來還要傳遞boardid。視圖內容顯示方面:它的標籤用ognl,要el 強大很多,在國際化方面支持分模塊管理,兩個模塊用到同樣的key,對應不同的消息;)與Struts1 不同,Struts2 對用戶的每一次請求都會創建一個Action,所以Struts2 中的Action 是線程安全的。給我印象最深刻的是:struts 配置文件中的redirect 視圖的url 不能接受參數,而struts2 配置文件中的redirect 視圖可以接受參數。