天天看點

Java Web總結十九Filter過濾器

一、Filter簡介

  Filter也稱之為過濾器,它是Servlet技術中最激動人心的技術,Web開發人員通過Filter技術,對Web伺服器管理的所有Web資源:例如Jsp,Servlet,靜态圖檔檔案或靜态HTML檔案等進行攔截,進而實作一些特殊的功能。例如實作URL級别的權限通路控制、過濾敏感詞彙、自動登入、壓縮響應資訊等一些進階功能。

  Servlet

API中提供了一個Filter接口,開發Web應用時,如果編寫的Java類實作了這個接口,則把這個Java類稱之為過濾器Filter。通過Filter技術,開發人員可以實作使用者在通路某個目标資源之前,對通路的請求和響應進行攔截,如下所示:

Java Web總結十九Filter過濾器

二、Filter開發步驟

  1、編寫Java類實作Filter接口,并實作doFilter方法。

  2、在Web.xml檔案中使用<filter>和<filter-mapping>元素對編寫的Filter類進行注冊,并設定它所能攔截的資源。

三、Filter鍊

  1、在一個Web應用中,可以開發編寫多個Filter,這些Filter組合起來稱之為Filter鍊。

  2、Web伺服器根據Filter在web.xml檔案中的注冊順序,決定先調用哪個Filter,當第一個Filter的doFilter方法被調用時,web伺服器會建立一個代表Filter的FilterChain對象傳遞給該方法。在doFilter方法中,開發人員如果調用了FilterChain對象的doFilter方法,則web伺服器會檢查FilterChain對象中是否還有Filter,如果有,則調用第2個Filter,如果沒有,則調用目标資源。

四、過濾器生命周期

  空參構造() 1次

  init() 1次

  doFilter(請求,響應,過濾器鍊) N次,與請求次數有關

  destory() 1次

  Filter是一個單例

五、使用Filter讀取配置檔案資訊

  1、web.xml

  2、FilterDemo4.java

五、Filter應用

1、統一Post請求中文字元編碼的過濾器。(通過配置參數encoding指明使用何種字元編碼,以處理表單form請求參數的中文問題)

(1)web.xml

(2)FilterDemo5.java

2、禁止浏覽器緩存所有動态頁面的過濾器

(1)web.xml

(2)FilterDemo6.java