Filter的详解与配置应用
1.filter概念與用處:
????????? filter 直譯為過濾器,是servlet中的重點對象,是web應用組件,是個典型的處理鏈
????????? 主用用于: Jsp, Servlet, 靜態圖片文件或靜態 html 文件等進行攔截,從而實現一些特殊的功能。
?????????????????????? 例如實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能。
2.filter的生命周期: (init方法與destroy方法只會執行一次)
????????? 創建: 由WEB服務器負責,服務器啟動及創建,與servlet中的load-on-startup配置為1時效果相同 (只創建一次)
????????? 初始化:創建Filter對象實例后及會調用init()方法,接著被Web容器保存進應用級的集合容器中去了等待著,用戶訪問資源 (只初始化一次)
????????? 攔截: 當用戶訪問的url被Filter的url-pattern攔截時,Filter調用doFilter方法(多次攔截也不會再初始化filter)
????????? 消亡: 當web應用服務被停止或重新裝載了,Filter調用destroy方法,Filter銷毀
3.filter的攔截原理:
?????????? Filter接口中有一個doFilter方法,當開發人員編寫好Filter類實現doFilter方法,并配置對哪個web資源進行攔截后,
?????????? WEB服務器每次在調用web資源的service方法之前(服務器內部對資源的訪問機制決定的),都會先調用一下filter的doFilter方法。
4.filter的應用注意事項:
??????????? 1> filter-mapping標簽中servlet-name與url-pattern。
??????????????? Filter不僅可以通過url-pattern來指定攔截哪些url匹配的資源。
??????????????? 而且還可以通過servlet-name來指定攔截哪個指定的servlet(專門為某個servlet服務了,servlet-name對應Servlet的相關配置)。
??????????? 2> filter-mapping標簽中dispatcher。
??????????????? 指定過濾器所攔截的資源被 Servlet 容器調用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認REQUEST。
??????????????? 用戶可以設置多 個<dispatcher> 子元素用來指定 Filter 對資源的多種調用方式進行攔截。
REQUEST:
當用戶直接訪問頁面時,Web容器將會調用過濾器。
????????????????????? 如果目標資源是通過RequestDispatcher的include()或forward()方法訪問或ERROR情況時,那么該過濾器就不會被調用。
INCLUDE:
????? 如果目標資源是通過RequestDispatcher的include()方法訪問時,那么該過濾器將被調用。除此之外,該過濾器不會被調用。
?????????????? FORWARD:
?????????????????????? 如果目標資源是通過RequestDispatcher的forward()方法訪問時,那么該過濾器將被調用,除此之外,該過濾器不會被調用。
ERROR:
?????????????????????? 如若在A.jsp頁面page指令中指定了error屬性=examError.jsp,那么A.jsp中若出現了異常,會跳轉到examError.jsp中處理。
?????????????????????? 而在跳轉到examError.jsp時,若過濾器配置了ERROR的dispather那么則會攔截,否則不會攔截。
5.filter的實例入門:
??????????????? 1、新建一個類,實現Filter接口
2、實現doFilter()方法,打印一句話,來證明能夠進行攔截
3、在web.xml中進行配置(參照Servlet配置)
4、訪問一個頁面,看看能不能攔截
????????????
轉載于:https://www.cnblogs.com/yiyongyao/p/4501059.html
總結
以上是生活随笔為你收集整理的Filter的详解与配置应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 6.5源码包安装MySQL
- 下一篇: Socket编程基本流程实践