過濾器 Filter
簡單介紹
java.servlet.Filter 並不是 Servlet,而是依賴於 Servlet 。
是一種可以轉換 request 或 response 的 Java 物件。
可以在 request 進入 servlet 前 或 response 離開 servlet 後,做一些前置或後置處理。
使用方式又可區分為 鏈狀 Filter 或 模組化 Filter :
鏈狀 Filter 依照 設定的順序 執行。
模組化 Filter 依照 指定的請求 或 Servlet 註冊名稱 套用。
運作方式

基本 API
初始 init
只在第一次啟動時執行,通常是 servlet container 建立時,可以在這邊設定 FilterConfig 參數。
過濾 doFilter
實際的過濾動作,依照綁定的執行順序(堆疊)執行。
在執行完成後透過 FilterChain
,透過此物件繼續執行其他 Filter,直到最後進入 servlet 。
//執行方式
System.out.println("進入 Servlet對象 執行前!");
chain.doFilter(request, response);
System.out.println("進入 Servlet對象 執行後!");
銷毀 destroy
Filter 通常在servlet container 關閉時銷毀,並在銷毀 Filter 前呼叫。
Servlet 規格書使用時機建議
資安
Authentication Filter (統一身份驗證)
Encryption Filter (防止資料隱碼攻擊)
tokenizing Filter
紀錄
logging and auditing Filter (對使用者最請求紀錄與日後查核)
優化
Image conversion Filter (改變圖檔格式)
Data compression Filter (對回應做壓縮)
MIME-type chain Filter (對回應做編碼)
XSL/T Filter that transform XML content (對XML呈現使用XMLT進行轉換)
Last updated
Was this helpful?