您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java Web的Filter怎么使用”,在日常操作中,相信很多人在Java Web的Filter怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java Web的Filter怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
##Servlet 過濾器概述
Servlet過濾器本身并不生成請求和響應對象,它只提供過濾作用。
Servlet過濾器能夠在Servlet被調用之前檢查Request對象,修改RequestHeader和Request內容;
在、servlet被調用之后檢查Response對象,修改Response Header和Response內容。Servlet過濾器負責過濾的web組件可以是Servelt、jsp、或html文件。
方法 | 說明 |
public void init(FilterConfig filterConfig) | web 應用程序啟動時,web 服務器將創建Filter 的實例對象,并調用其init方法,讀取web.xml配置,完成對象的初始化功能,從而為后續的用戶請求作好攔截的準備工作(filter對象只會創建一次,init方法也只會執行一次)。開發人員通過init方法的參數,可獲得代表當前filter配置信息的FilterConfig對象。 |
public void doFilter (ServletRequest, ServletResponse, FilterChain) | 用于完成實際的過濾操作,當客戶請求訪問與過濾器相關聯的URL時,Servlet容器將先調用過濾器的這個方法,FilterChain參數用于訪問后續過濾器 |
void destroy() | 過濾器在被取消前執行這個方法,釋放過濾器申請的資源 |
public class LoginFilter implements Filter { public void init(FilterConfig config) throws ServletException { String site = config.getInitParameter("Site"); System.out.println(site); } public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println(req.getServerName()+req.getServerPort()); chain.doFilter(req,resp); }}
web.xml
<filter> <filter-name>LoginFilter</filter-name> <filter-class>cn.java.servlet.LoginFilter</filter-class> <init-param> <param-name>Site</param-name> <param-value>www.google.com</param-value> </init-param> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
web.xml配置各節點說明
指定一個過濾器。
用于為過濾器指定一個名字,該元素的內容不能為空。
元素用于指定過濾器的完整的限定類名。
元素用于為過濾器指定初始化參數,它的子元素指定參數的名字,指定參數的值。
在過濾器中,可以使用FilterConfig接口對象來訪問初始化參數。
元素用于設置一個 Filter 所負責攔截的資源。一個Filter攔截的資源可通過兩種方式來指定:Servlet 名稱和資源訪問的請求路徑
子元素用于設置filter的注冊名稱。該值必須是在元素中聲明過的過濾器的名字
設置 filter 所攔截的請求路徑(過濾器關聯的URL樣式)
指定過濾器所攔截的Servlet名稱。
指定過濾器所攔截的資源被 Servlet 容器調用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認REQUEST。用戶可以設置多個子元素用來指定 Filter 對資源的多種調用方式進行攔截。
子元素可以設置的值及其意義
REQUEST:當用戶直接訪問頁面時,Web容器將會調用過濾器。如果目標資源是通過RequestDispatcher的include()或forward()方法訪問時,那么該過濾器就不會被調用。
INCLUDE:如果目標資源是通過RequestDispatcher的include()方法訪問時,那么該過濾器將被調用。除此之外,該過濾器不會被調用。
FORWARD:如果目標資源是通過RequestDispatcher的forward()方法訪問時,那么該過濾器將被調用,除此之外,該過濾器不會被調用。
ERROR:如果目標資源是通過聲明式異常處理機制調用時,那么該過濾器將被調用。除此之外,過濾器不會被調用。
到此,關于“Java Web的Filter怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。