web.xml filter配置


filter介紹:

filter主要用於對用戶請求request進行預處理,和對Response進行后處理,是個典型的處理鏈。

詳細解析起來就是:Filter對用戶請求進行預處理,接着將請求HttpServletRequest交給Servlet進行處理並生成響應,最后Filter再對服務器響應HttpServletResponse進行后處理。

其實Filter也可以看做是Servlet的加強版,Filter與Servlet具有完全相同的生命周期,且Filter也可以通過<init-param>來配置初始化參數,獲取Filter的初始化參數則使用FilterConfig的getInitParameter()。

Filter可負責攔截多個請求或響應;一個請求或響應也可被多個Filter攔截。

 

常用場合:

(1)認證Filter

(2)日志和審核Filter

(3)圖片轉換Filter

(4)數據壓縮Filter

(5)密碼Filter

(6)令牌Filter

(7)觸發資源訪問事件的Filter

(8)XSLT Filter

(9)媒體類型鏈Filter

 

如何創建Filter?

類似於servlet,需兩步

第一步:創建Filter處理類(一般我們都用現有的)

Filter必須實現javax.servlet.Filter接口,在該接口中定義了三個方法:

(1) void init(FilterConfig config):用於Filter的初始化。FilteConfig用於訪問Filter的配置信息。

(2) void destroy():Filter銷毀前的操作,例如完成某些資源的回收

(3) void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):

實現過濾功能的核心方法,實現對請求request進行預處理,也可以實現對服務器響應response進行后處理---它們的分界線為是否調用了chain.doFilter(request,response),執行該方法之前,即對用戶

請求request進行預處理,執行該方法之后,即對服務器響應response進行后處理。

 

第二步:Web.xml文件中配置Filter

Filter配置與Servlet的配置非常相似,區別在於Servlet通常只配置一個URL,而Filter可以同時配置多個請求的URL。配置Filter有兩種方式:

(1). 在Filter類中通過Annotation進行配置。

(2). 在web.xml文件中通過配置文件進行配置。

 

這里我們使用web.xml這種配置方式,下面重點介紹<filter>內包含的一些元素。

(1).<filter-name>用來定義過濾器的名稱,該名稱在整個程序中都必須唯一。

(2).<filter-class>元素指定過濾器類的完全限定的名稱,即Filter的實現類

(3). <init-param>為Filter配置參數,與<context-param>具有相同的元素描述符<param-name>和<param-value>。

(4). <filter-mapping>元素用來聲明Web應用中的過濾器映射,過濾器被映射到一個servlet或一個URL 模式。這個過濾器的<filter>和<filter-mapping>必須具有相同的<filter-name>,指定該Filter所攔截的URL。過濾是按照部署描述符的<filter-mapping>出現的順序執行的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM