1. 程式人生 > 其它 >Spring過濾器和攔截器的區別

Spring過濾器和攔截器的區別

兩者的作用

 

過濾器:

是在javaweb中,你傳入的request、response提前過濾掉一些資訊,或者提前設定一些引數,然後再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果使用者沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設定字符集,或者去除掉一些非法字元.。

 

攔截器 :

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

細節區別

①攔截器是基於Java的反射機制的,而過濾器是基於函式回撥。

②攔截器不依賴於servlet容器,過濾器依賴於servlet容器。

③攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。

④攔截器可以訪問action上下文、值棧裡的物件,而過濾器不能訪問。

⑤在action的生命週期中,攔截器可以多次被呼叫,而過濾器只能在容器初始化時被呼叫一次。

⑥攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器裡注入一個service,可以呼叫業務邏輯。