攔截器和過濾器的區別

 很多人都瞭解過濾器也聽說過攔截器,但是要是區分它們的不同點還真是真的說不清楚,一下可以簡要的說明:

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

--------------------------------------------------------------------------------

攔截器是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法。是基於JAVA的反射機制。


public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
Object result = null;

System.out.println("before invoke method :" + method.getName());

result = method.invoke(this.targetObj, args);

System.out.println("after invoke method : " + method.getName());

return result;
}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章