您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java Web的Filter怎么使用”,在日常操作中,相信很多人在Java Web的Filter怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java Web的Filter怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
##Servlet 過濾器概述
Servlet過濾器本身并不生成請求和響應(yīng)對象,它只提供過濾作用。
Servlet過濾器能夠在Servlet被調(diào)用之前檢查Request對象,修改RequestHeader和Request內(nèi)容;
在、servlet被調(diào)用之后檢查Response對象,修改Response Header和Response內(nèi)容。Servlet過濾器負(fù)責(zé)過濾的web組件可以是Servelt、jsp、或html文件。
方法 | 說明 |
public void init(FilterConfig filterConfig) | web 應(yīng)用程序啟動時,web 服務(wù)器將創(chuàng)建Filter 的實例對象,并調(diào)用其init方法,讀取web.xml配置,完成對象的初始化功能,從而為后續(xù)的用戶請求作好攔截的準(zhǔn)備工作(filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次)。開發(fā)人員通過init方法的參數(shù),可獲得代表當(dāng)前filter配置信息的FilterConfig對象。 |
public void doFilter (ServletRequest, ServletResponse, FilterChain) | 用于完成實際的過濾操作,當(dāng)客戶請求訪問與過濾器相關(guān)聯(lián)的URL時,Servlet容器將先調(diào)用過濾器的這個方法,F(xiàn)ilterChain參數(shù)用于訪問后續(xù)過濾器 |
void destroy() | 過濾器在被取消前執(zhí)行這個方法,釋放過濾器申請的資源 |
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配置各節(jié)點說明
指定一個過濾器。
用于為過濾器指定一個名字,該元素的內(nèi)容不能為空。
元素用于指定過濾器的完整的限定類名。
元素用于為過濾器指定初始化參數(shù),它的子元素指定參數(shù)的名字,指定參數(shù)的值。
在過濾器中,可以使用FilterConfig接口對象來訪問初始化參數(shù)。
元素用于設(shè)置一個 Filter 所負(fù)責(zé)攔截的資源。一個Filter攔截的資源可通過兩種方式來指定:Servlet 名稱和資源訪問的請求路徑
子元素用于設(shè)置filter的注冊名稱。該值必須是在元素中聲明過的過濾器的名字
設(shè)置 filter 所攔截的請求路徑(過濾器關(guān)聯(lián)的URL樣式)
指定過濾器所攔截的Servlet名稱。
指定過濾器所攔截的資源被 Servlet 容器調(diào)用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認(rèn)REQUEST。用戶可以設(shè)置多個子元素用來指定 Filter 對資源的多種調(diào)用方式進行攔截。
子元素可以設(shè)置的值及其意義
REQUEST:當(dāng)用戶直接訪問頁面時,Web容器將會調(diào)用過濾器。如果目標(biāo)資源是通過RequestDispatcher的include()或forward()方法訪問時,那么該過濾器就不會被調(diào)用。
INCLUDE:如果目標(biāo)資源是通過RequestDispatcher的include()方法訪問時,那么該過濾器將被調(diào)用。除此之外,該過濾器不會被調(diào)用。
FORWARD:如果目標(biāo)資源是通過RequestDispatcher的forward()方法訪問時,那么該過濾器將被調(diào)用,除此之外,該過濾器不會被調(diào)用。
ERROR:如果目標(biāo)資源是通過聲明式異常處理機制調(diào)用時,那么該過濾器將被調(diào)用。除此之外,過濾器不會被調(diào)用。
到此,關(guān)于“Java Web的Filter怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。