攔截器和過濾器區別,Struts2與SpringMVC的區別
攔截器和過濾器
1.攔截器是基於java反射機制的,而過濾器是基於函式回撥的;
2.攔截器不依賴於servlet容器,而過濾器依賴於servlet容器;
3.攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用;
4.攔截器可以訪問Action上下文、值棧裡的物件,而過濾器不能;
5.在Action的生命週期中,攔截器可以多次呼叫,而過濾器只能在容器初始化時被呼叫一次。
有多個攔截器和過濾器時,執行順序跟他們在xml中的配置檔案順序有關
Struts2與SpringMVC的區別
springMVC預設是單例的,Struts2預設是多例的;
Springmvc
Springmvc是基於方法開發(一個url對應一個方法),請求引數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基於類開發,傳遞引數是通過類的屬性,只能設計為多例;
Struts2採用值棧儲存請求和響應的資料,通過OGNL存取資料,Springmvc通過引數解析器是將request請求內容解析,並給方法形參賦值,將資料和檢視封裝成ModelAndView物件,最後又將ModelAndView中的模型資料通過reques域傳輸到頁面,Jsp檢視解析器預設使用JSTL。
儘量不要在controller裡面去定義屬性,如果在特殊情況需要定義屬性的時候,那麼就在類上面加上註解@Scope("prototype")