首頁  >  文章  >  Java  >  Spring中Filter和Interceptor有什麼差別?

Spring中Filter和Interceptor有什麼差別?

不言
不言轉載
2019-04-03 16:50:2711216瀏覽

這篇文章帶給大家的內容是關於Spring中Filter和Interceptor有什麼差別?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Spring中Filter和Interceptor有什麼差別?

Interceptor

主要作用:攔截使用者要求,進行處理,例如判斷使用者登入狀況、權限驗證,只要針對Controller請求進行處理,是透過HandlerInterceptor。

Interceptor分成兩種情況,一種是對會話的攔截,實作spring的HandlerInterceptor介面並註冊到mvc的攔截佇列中,其中preHandle()方法在呼叫Handler之前進行攔截(上圖步驟3),postHandle()方法在視圖渲染前呼叫(上圖步驟5),afterCompletion()方法在返回對應之前執行;另一種是對方法的攔截,需要使用@Aspect註解,在每次呼叫指定方法的前、後進行攔截。

Filter

主要作用:過濾字元編碼、做一些業務邏輯判斷,主要用於對使用者請求進行預處理,同時也可進行邏輯判斷。

Filter在請求進入servlet容器執行service()方法之前就會經過filter過濾(上圖步驟1),不像Intreceptor一樣依賴springmvc框架,只需要依賴servlet 。 Filter啟動是隨WEB應用的啟動而啟動,只需要初始化一次,以後都可以進行攔截。

Filter有以下幾個種類:

使用者授權Filter:檢查使用者請求,根據請求過濾使用者非法請求;

日誌Filter:記錄某些特殊的使用者請求;

解碼Filter:對非標準編碼的請求解碼。

Filter和Interceptor的區別

1、Filter是基於函數回呼(doFilter()方法)的,而Interceptor則是基於Java反射的(AOP思想) 。

2、Filter依賴Servlet容器,而Interceptor不依賴Servlet容器。

3、Filter對幾乎所有的請求都起作用,而Interceptor只能對action請求起作用。

4、Interceptor可以存取Action的上下文,值堆疊裡的對象,而Filter不能。

5、在action的生命週期裡,Interceptor可以被多次調用,而Filter只能在容器初始化時調用一次。

6、Filter在過濾是只能對request和response進行操作,而interceptor可以對request、response、handler、modelAndView、exception進行操作。

【相關推薦:Java影片教學

以上是Spring中Filter和Interceptor有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除