一、過濾器的編寫步驟
1、編寫一個類,實作javax.servlet.Filter接口
2、配置過濾哪些資源
修改web.xml,配置要過濾器的資源的映射位址
3、讓目标資源執行,放行
二、過濾器的生命周期
1、過濾器的執行個體由伺服器建立的,其中的方法也是由伺服器調用的
2、過濾器在應用被加載時執行個體化并初始化(調用init方法),隻有一次;使用者每次通路過濾範圍之内的資源,過濾器的doFIlter方法都會執行;應用被解除安裝或伺服器停止時會調用銷毀方法(destroy)。
3、特點:過濾器中的執行個體變量,注意線程安全問題;
過濾器的過濾順序采用責任鍊設計模式:
多個過濾器過濾相同的資源,過濾順序按照web.xml中filter-mapping的出現順序依次進行過濾的。
Servlet VS. Filter
1、Servlet能做的過濾器都能做;過濾器比Servlet多了一個是否放行的功能。
2、Servlet在開發中是作為控制器來用的;Filter也可以作為控制器來用。
3、Struts1架構:Servlet作為控制器
Struts2架構:FIlter作為控制器(Struts2架構)
過濾器可以實作的功能:
案例:
1、解決POST請求參數和響應輸出的編碼過濾器
2、動态資源不要緩存過濾器
3、控制靜态資源的緩存時間
4、自動登入過濾器
過濾器的進階配置