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 視圖可以接受參數。