Java基礎(chǔ)之Filter的實(shí)例詳解
Java基礎(chǔ)之Filter的實(shí)例詳解
定義: Filter,是Servlet的一種,接口類(lèi)為javax.servlet.Filter,以一種模塊化或者可重用的方法封裝公共行為,本質(zhì)是可復(fù)用的代碼片段。
職責(zé):在請(qǐng)求到達(dá)Servlet之前對(duì)請(qǐng)求頭作預(yù)處理,或者在服務(wù)器響應(yīng)完成之后對(duì)響應(yīng)內(nèi)容作后處理。分界線(xiàn)為chain.doFilter的調(diào)用。該調(diào)用是將請(qǐng)求處理權(quán)交給其Filter列表鏈上的其它Filter。
生命周期: Filter在Web容器啟動(dòng)時(shí)被容器實(shí)例化,并調(diào)用其init方法完成初始化,每一個(gè)請(qǐng)求到達(dá)Servlet之前先經(jīng)過(guò)Filter的doFilter方法,容器停止時(shí)調(diào)用destroy方法。生命周期與Servlet類(lèi)似。
常見(jiàn)應(yīng)用:權(quán)限校驗(yàn)、特殊日志、修改請(qǐng)求信息(如中文亂碼處理)
web.xml中配置Filter的url-pattern
1)/*和*過(guò)濾效果一樣,可以對(duì)所有的請(qǐng)求進(jìn)行過(guò)濾
2)*.xxx后綴過(guò)濾
3)/這種配置過(guò)濾不了任何請(qǐng)求:tomcate的matchFilterUrl方法可以解釋過(guò)濾原理。
Filter的url-pattern與Servlet的url-pattern前兩種用法一樣,但第三種不一樣,對(duì)Servlet來(lái)說(shuō)配置url-pattern為/說(shuō)明將該Servlet作為項(xiàng)目的默認(rèn)的Servlet,當(dāng)某個(gè)請(qǐng)求路徑無(wú)法匹配時(shí)會(huì)由默認(rèn)Servlet來(lái)處理該請(qǐng)求。而Filter,則對(duì)/的urlpattern,攔截不到任何請(qǐng)求的。
在web.xml中,容器啟動(dòng)時(shí)加載的順序是context-param,其次是Listener,然后是Filter,最后是Servlet。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Java中的FilterOutputStream 簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- JavaWeb之Filter過(guò)濾器詳解
- Java Filter 過(guò)濾器詳細(xì)介紹及實(shí)例代碼
- java 過(guò)濾器模式(Filter/Criteria Pattern)詳細(xì)介紹
- java 過(guò)濾器filter防sql注入的實(shí)現(xiàn)代碼
- Java中FilterInputStream和FilterOutputStream的用法詳解
- JavaEE Filter敏感詞過(guò)濾的方法實(shí)例詳解
- javaweb中Filter(過(guò)濾器)的常見(jiàn)應(yīng)用
相關(guān)文章
Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP軟件本地窗口實(shí)現(xiàn)(5)
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件,F(xiàn)TP軟件本地窗口的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Spring應(yīng)用中使用acutator/refresh刷新屬性不生效的問(wèn)題分析及解決
在Spring應(yīng)用收到/actuator/refresh的POST請(qǐng)求后,標(biāo)注了@RefreshScope以及@ConfiguratioinProperties的bean會(huì)被Spring容器重新加載,但是,在實(shí)際應(yīng)用中,并沒(méi)有按照預(yù)期被Spring容器加載,本文將討論導(dǎo)致這種未按預(yù)期刷新的一種原因,感興趣的朋友可以參考下2024-01-01
如何解決java:找不到符號(hào)符號(hào):類(lèi)__(使用了lombok的注解)
在使用IntelliJ IDEA開(kāi)發(fā)Java項(xiàng)目時(shí),可能遇到通過(guò)@lombok注解自動(dòng)生成get和set方法不生效的問(wèn)題,解決這一問(wèn)題需要幾個(gè)步驟,首先,確認(rèn)Lombok插件已在IDEA中安裝并啟用,其次,確保項(xiàng)目中已添加Lombok的依賴(lài),對(duì)于Maven和Gradle項(xiàng)目2024-10-10
Java實(shí)現(xiàn)簡(jiǎn)單推箱子游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)推箱子游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
Java大數(shù)運(yùn)算BigInteger與進(jìn)制轉(zhuǎn)換詳解
這篇文章主要介紹了Java大數(shù)運(yùn)算BigInteger與進(jìn)制轉(zhuǎn)換詳解,Java 提供了 BigInteger(大整數(shù))類(lèi)和 BigDecimal(大浮點(diǎn)數(shù))類(lèi)用于大數(shù)運(yùn)算,這兩個(gè)類(lèi)都繼承自 Number 類(lèi)(抽象類(lèi)),由于 BigInteger 在大數(shù)運(yùn)算中更常見(jiàn),需要的朋友可以參考下2023-09-09
使用ShardingSphere-Proxy實(shí)現(xiàn)分表分庫(kù)
這篇文章介紹了使用ShardingSphere-Proxy實(shí)現(xiàn)分表分庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

