Filter 可認爲是 Servlet 的一種 “ 加強版“,它主要用於對用戶請求進行預處理,也可以對 HttpServletResponse 進行後處理,是個典型的處理鏈。 Filter 也可對用戶請求生成響應,這一點與 Servlet相同,但實際上很少會使用
Filter 向用戶請求生成響應。 使用 Filter 完整的流程是Filter 對用戶請求進行預處理, 接着將請求交給 Servlet 進行處理並生成響應, 最後 Filter 再對服務器進行後處理。
Filter 有如下幾個用處:
- 在 HttpServletRequest 到達 Servlet 之前,攔截客戶的 HttpServletRequest。
- 根據需要檢查 HttpServletRequest,也可以修改 HttpServletRequest 頭和數據。
- 在 HttpServletResponse 到達客戶端之前,攔截 HttpServletResponse。
- 根據需要檢查 HttpServletResponse,也可以修改 HttpServletResponse 頭和數據。
Filter 有如下幾個種類:
- 用戶授權的 Filter: Filter 負責檢查用戶請求, 根據請求過濾用戶非法請求。
- 日誌 Filter:詳細記錄某些特殊的用戶請求。
- 負責解碼的 Filter:包括對非標準編碼的請求解碼。
- 能改變 XML 內容的 XSLT Filter 等。
- Filter 可負責攔截多個請求或響應;一個請求或響應也可被多個 Filter 攔截。
創建一個 Filter 只需兩個步驟:
- 創建 Filter 處理類。
- web.xml 文件中配置 Filter。