免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Filter過濾器-JavaWeb三大組件之一

Servlet、Filter、Listener是JavaWeb的三大組件,給Web開發(fā)提供了很大的便利。

  • 什么是Filter?

Filter,過濾器。類似與生活中的凈水器、空氣凈化器。

JavaWeb中Filter的作用:當(dāng)瀏覽器請(qǐng)求訪問服務(wù)器的資源時(shí),過濾器可以將請(qǐng)求攔截下來,完成一下特殊的功能。例如:登錄驗(yàn)證、統(tǒng)一編碼處理、敏感字符過濾等。

?

  • Filter的基本使用

(1)定義一個(gè)類,實(shí)現(xiàn)接口Filter。

(2)實(shí)現(xiàn)Filter接口的方法

(3)配置攔截路徑??梢杂脀eb.xml進(jìn)行配置;Servlet 3.0以后還可以用注解進(jìn)行配置。

示例1(注解配置):

@WebFilter("/index.jsp")public class FilterDemo1 implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }    @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        System.out.println("過濾請(qǐng)求req的代碼");        filterChain.doFilter(servletRequest,servletResponse);    // 放行請(qǐng)求        System.out.println("增強(qiáng)響應(yīng)resp的代碼");    }    @Override    public void destroy() {    }}

示例2(web.xml配置):

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">    <filter>        <filter-name>filter1</filter-name>        <filter-class>com.chichung.web.filter.FilterDemo1</filter-class>    </filter>    <filter-mapping>        <filter-name>filter1</filter-name>        <url-pattern>/index.jsp</url-pattern>    </filter-mapping></web-app>

上面兩個(gè)示例的輸出結(jié)果都是:

過濾請(qǐng)求req的代碼
index...
增強(qiáng)響應(yīng)resp的代碼

說明,F(xiàn)ilter的執(zhí)行順序是:

(1)執(zhí)行過濾器放行代碼上邊的代碼

(2)執(zhí)行放行代碼 filterChain.doFilter(servletRequest,servletResponse)

(3)執(zhí)行放行后的資源 index.jsp

(4)回來執(zhí)行過濾器放行代碼下邊的代碼

所以Filter可以對(duì)請(qǐng)求對(duì)象進(jìn)行過濾,還可以對(duì)響應(yīng)對(duì)象進(jìn)行功能上的增強(qiáng),再返回給客戶端。

?

  • 關(guān)于攔截的配置

上面講了一下兩種配置攔截的兩種方式。

下面是攔截路徑的幾種方式:

(1)具體資源路徑: /index.jsp?? 只有訪問index.jsp資源時(shí),過濾器才會(huì)被執(zhí)行

(2)攔截目錄: /user/*?? ?訪問/user下的所有資源時(shí),過濾器都會(huì)被執(zhí)行

(3)后綴名攔截: *.jsp?? ??? ?訪問所有后綴名為jsp資源時(shí),過濾器都會(huì)被執(zhí)行

(4)攔截所有資源:/*?? ??? ?訪問所有資源時(shí),過濾器都會(huì)被執(zhí)行

還有就是攔截方式的配置。什么是攔截方式呢?我們有些請(qǐng)求是直接訪問jsp文件,有些請(qǐng)求是先訪問Servlet,然后Servlet通過請(qǐng)求轉(zhuǎn)發(fā)到到j(luò)sp顯示。直接訪問jsp文件我們可以用上面的示例代碼解決,但是請(qǐng)求轉(zhuǎn)發(fā)或者其他方式呢?

* 注解配置:
?? ??? ??? ??? ?* 設(shè)置dispatcherTypes屬性
?? ??? ??? ??? ??? ?1. REQUEST:默認(rèn)值。瀏覽器直接請(qǐng)求資源
?? ??? ??? ??? ??? ?2. FORWARD:轉(zhuǎn)發(fā)訪問資源
?? ??? ??? ??? ??? ?3. INCLUDE:包含訪問資源
?? ??? ??? ??? ??? ?4. ERROR:錯(cuò)誤跳轉(zhuǎn)資源
?? ??? ??? ??? ??? ?5. ASYNC:異步訪問資源
* web.xml配置
?? ??? ??? ??? ?* 設(shè)置<dispatcher></dispatcher>標(biāo)簽即可

?

  • 過濾器的生命周期

Filter接口的三個(gè)方法:

1. init:在服務(wù)器啟動(dòng)后,會(huì)創(chuàng)建Filter對(duì)象,然后調(diào)用init方法。只執(zhí)行一次。用于加載資源

2. doFilter:每一次請(qǐng)求被攔截資源時(shí),會(huì)執(zhí)行。執(zhí)行多次

3. destroy:在服務(wù)器關(guān)閉后,F(xiàn)ilter對(duì)象被銷毀。如果服務(wù)器是正常關(guān)閉,則會(huì)執(zhí)行destroy方法。只執(zhí)行一次。用于釋放資源

?

  • 過濾器鏈(配置多個(gè)過濾器)

執(zhí)行順序:如果有兩個(gè)過濾器:過濾器1和過濾器2
?? ??? ??? ?1. 過濾器1
?? ??? ??? ?2. 過濾器2
?? ??? ??? ?3. 資源執(zhí)行
?? ??? ??? ?4. 過濾器2
?? ??? ??? ?5. 過濾器1

過濾器先后順序問題:

1. 注解配置:按照類名的字符串比較規(guī)則比較,值小的先執(zhí)行。例如: AFilter 和 BFilter,AFilter就先執(zhí)行了。

2. web.xml配置: <filter-mapping>誰定義在上邊,誰先執(zhí)行。

?

來源:http://www.icode9.com/content-1-109251.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
filter總結(jié) javaweb
網(wǎng)站過濾器Filter
java過濾器的范圍
【JavaWeb】93:web中的過濾器
JavaWeb——Servlet
Apache Shiro 使用手冊(五)Shiro 配置說明
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服