攔截器與過濾器 – JAVA編程語言程序開發技術文章

Java代碼 
很多人都瞭解過濾器也聽說過攔截器,但是要是區分它們的不同點還真是真的說不清楚,一下可以簡要的說明: 
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前統一設置字符集,或者去除掉一些非法字符(聊天室經常用到的,一些罵人的話)。 
 

發佈留言