定義:
web容器的組件之一,主要用於請求到Servlet之前處理和servlet返回信息到client 之前處理
應用:
- 認證(shiro、Spring security)
- 授權(shiro、Spring security)
- 信息過濾(xss)
- 統一信息(編碼)
聲明週期
工作原理圖,假設有三個過濾器符合請求規則
以 chain.doFilter(request,response); 爲界限,每個filter分爲前、後兩部分、
攔截類型: DispatcherType
public enum DispatcherType { FORWARD,//轉發請求 INCLUDE,//轉發請求類型爲include REQUEST,//直接請求 ASYNC,//異步請求,servlet3.0後纔有的 ERROR //聲明式異常處理機制 }
關於異步請求的處理流程,補充一下:
直接調用異步請求 :
既會觸發 REQUEST類型的Filter,也會觸發ASYNC 類型的Filter,下面針對同時存在的REQUEST、ASYNC類型的Filter進行模擬