您好,登錄后才能下訂單哦!
這篇文章主要介紹“JavaWeb過濾器Filter怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JavaWeb過濾器Filter怎么使用”文章能幫助大家解決問題。
過濾器是處在客戶端和服務器資源之間的一到過濾網,我們可以根據具體的需求來對請求頭和數據就行預處理,也可以對響應頭和和數據進行后處理。例如Jsp, Servlet, 靜態圖片文件或靜態html文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能。
服務器的servlet容器接收到客戶端發送的請求后,服務器的servlet容器根據web.xml配置文件中配置的Filter攔截客戶端發送request,檢查客戶端request,如果不滿足過濾要求,Filter攔截對應request;如果滿足過濾要求,則在Filter中調用doFilter方法,執行request并對request進行處理并產生response,服務器將response發送給客戶端之前,Filter會攔截response是否滿足過濾要求,如果不滿足,Filter會攔截response;如果滿足過濾要求,則將response響應給客戶端。
1.初始化(init):filter的創建和銷毀都是有服務器負責的。服務器啟動的時候,web服務器創建Filter的實例對象,并調用其init方法,完成對象的初始化功能。filter對象只會創建一次,init方法也只會執行一次。
2.運行(doFilter):攔截到請求時,執行doFilter方法。可以執行多次。
3.銷毀(destroy):服務器關閉時,web服務器銷毀Filter的實例對象。
1.過濾器的快速入門
(1)定義一個類,實現接口Filter,并復寫Filter接口doFilter方法
package com.wedu.demo.servlet;import javax.servlet.*;import java.io.IOException;/** * 過濾器快速入門 */public class FilterDemo implements Filter { public void init(FilterConfig config) throws ServletException { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println("doFilter方法執行……"); chain.doFilter(req, resp); } public void destroy() { } }
(2)配置攔截路徑
以web.xml配置
filter com.wedu.demo.servlet.FilterDemo filter /* hello com.wedu.demo.servlet.HelloServlet hello /hello
使用注解的方式配置攔截路徑
2.過濾器的配置詳解
(1)配置攔截路徑具體資源路徑:只有訪問指定的資源時,過濾器才會被執行,如:/index.jsp
攔截目錄:訪問目錄下的所有資源時,過濾器都會被執行,如:/user/*
后綴名攔截:訪問所有指定后綴名的資源時,過濾器就會被執行,如:*.jsp
攔截所有資源:訪問所有資源時,過濾器都會被執行,如:/*
(2)攔截方式的配置過濾器的四種攔截方式:REQUEST(默認的)、FORWARD、INCLUDE、ERROR。REQUEST:直接訪問目標資源時執行過濾器 。包括:在地址欄中直接訪問、表單提交、超鏈接、重定向,只要在地址欄中可以看到目標資源的路徑,就是REQUEST;
FORWARD:轉發訪問執行過濾器。包括:RequestDispatcher#forward()方法、標簽都是轉發訪問;
INCLUDE:包含訪問執行過濾器。包括:RequestDispatcher#include()方法、標簽都是包含訪問;
ERROR:當目標資源在web.xml中配置為中時,并且真的出現異常,轉發到目標資源時,會執行過濾器;
使用web.xml方式配置:
filter com.wedu.demo.servlet.FilterDemo filter /* FORWARD REQUEST
使用注解的方式配置:
package com.wedu.demo.servlet;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.IOException;/** * 過濾器的攔截方式配置 */@WebFilter(value = "/*",dispatcherTypes = {DispatcherType.FORWARD,DispatcherType.REQUEST})public class FilterDemo implements Filter { public void init(FilterConfig config) throws ServletException { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println("FilterDemo……"); chain.doFilter(req, resp); } public void destroy() { } }
(3)多個過濾器的配置方式
web.xml配置
filter1 com.wedu.demo.servlet.FilterDemo filter1 /* filter2 com.wedu.demo.servlet.FilterDemo filter2 /*
注意:執行順序根據定義,誰定義在上面誰先先執行。
注解方式配置
在定義的每個過濾器上面加上對應的注解即可。
注意:執行的順序按照類名的字符串比較規則比較,值小的先執行。
關于“JavaWeb過濾器Filter怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。