溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java Web的Filter怎么使用

發(fā)布時間:2021-12-20 15:47:29 來源:億速云 閱讀:142 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“Java Web的Filter怎么使用”,在日常操作中,相信很多人在Java Web的Filter怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java Web的Filter怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

##Servlet 過濾器概述

  1. Servlet過濾器本身并不生成請求和響應(yīng)對象,它只提供過濾作用。

  1. Servlet過濾器能夠在Servlet被調(diào)用之前檢查Request對象,修改RequestHeader和Request內(nèi)容;

  1. 在、servlet被調(diào)用之后檢查Response對象,修改Response Header和Response內(nèi)容。Servlet過濾器負(fù)責(zé)過濾的web組件可以是Servelt、jsp、或html文件。

Filter API

方法說明
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>

向AI問一下細(xì)節(jié)

免責(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)容。

AI