Struts2之過濾器和攔截器的區別


剛學習Struts2這個框架不久,心中依然有一個疑惑未解那就是過濾器和攔截器的區別,相信也有不少人跟我一樣對於這個問題沒有太多的深入了解

那么下面我們就一起來探討探討

 

 

      過濾器,是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然后再傳入servlet或者struts的 action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字符集,或者去除掉一些非法字符.

 

      攔截器,是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法后調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前打印出字符串(或者做其它業務邏輯的操作),也可以在你調用方法后打印出字符串,甚至在你拋出異常的時候做業務邏輯的操作。

 

    攔截器與過濾器的區別

 

  1. 攔截器是基於java的反射機制的,而過濾器是基於函數回調。
  2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
  3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
  4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
  5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

 

     執行順序:過濾前 - 攔截前 - Action處理 - 攔截后 - 

 

過濾器的主要特點在於:取你需要的東西,忽視那些不需要的東西!

攔截器的主要特點在於:針對你不要的東西進行攔截

過濾器和攔截器兩者最大的區別就是:過濾是一個正面的東西,而攔截是一個反面的東西!過濾是留下你想要的東西,而過濾是去除你不想要的東西!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM