什麼是Filter
- Filter稱爲是過濾器,是Servlet技術中最實用的技術,web開發人員通過Filter技術,對web服務器所管理的資源(JSP、Servlet、html、靜態頁面等)進行攔截,從而實現一些特定的功能。
- Filter就是過濾從客戶端向服務器發送的請求。
Filter原理
類似於地鐵的安檢設備。
- 1、編寫一個類實現Filter接口
- 2、配置
FilterChain對象的概述
FilterChain過濾器鏈:在一個web應用中,可以開發編寫多個Filter,這些Filter組合起來稱爲一個FilterChain過濾器鏈。
- web服務器根據Filter在web.xml文件中的註冊順序(mapping的配置順序)決定先調用哪個Filter,依次調用後面的過濾器,如果沒有下一個過濾器,調用目標資源。
- FilterChain只有一個方法doFilter()
Filter的生命週期
Filter的創建和銷燬是由web服務器負責的。
- web應用程序啓動的時候,web服務器創建Filter的實例對象,並調用其init方法進行初始化(Filter對象只會創建一次,init方法也只會執行一次)。
- 每次Filter攔截的時候,都會執行doFilter方法。
- 當服務器關閉時,應用從服務器移除的時候,服務器會銷燬Filter對象。
Filter的相關配置
web.xml下的配置。
- < url-pattern >的配置
- < servlet-name >的配置
以servlet的配置的名稱攔截servlet。 - < dispatcher >的配置
默認的情況下過濾器會攔截請求,如果進行轉發(需要攔截這次轉發)。- dispatcher的取值
- REQUEST:默認值,默認過濾器攔截的就是請求。
- FORWARD:轉發。
- INCLUDE:頁面包含的時候進行攔截。
- ERROR:頁面出現全局錯誤頁面跳轉的時候進行攔截。
- dispatcher的取值