[java面試] Java面試之struts1與struts2的區別
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是執行緒安全的。
struts1配置檔案中的redirect檢視的url不能接受引數,而struts2配置檔案中的redirect檢視可以接受引數。