詳解Servlet之過濾器(Filter)
過濾器
1.為什么使用它?
有很多全站性的東西需要處理,例如亂碼問題,通過過濾器統(tǒng)一進(jìn)行過濾更簡單
2.有什么用?
實(shí)現(xiàn)用戶在訪問某個(gè)目標(biāo)資源之前,對訪問的請求和響應(yīng)進(jìn)行攔截。簡單說,就是可以實(shí)現(xiàn)web容器對某資源的訪問前截獲進(jìn)行相關(guān)的處理,還可以在某資源向web容器返回響應(yīng)前進(jìn)行截獲進(jìn)行處理。
3.怎么用?
步驟1:先寫一個(gè)類實(shí)現(xiàn)javax.servlet.Filter接口
步驟2:重寫抽象方法
步驟3:在doFilter()方法中寫處理代碼,最后用FilterChain調(diào)用FilterChain.doFilter(req, resp)方法,表示可以執(zhí)行后面的攔截器(如果有的話)
步驟3:進(jìn)行配置,web.xml配置如下
<!-- 優(yōu)先配置過濾器 ,過濾器應(yīng)該在Servlet前面配置,并且過濾器之間有順序 --> <filter> <filter-name>firstfilter</filter-name> <filter-class>cn.hk.filter.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>firstfilter</filter-name> <!-- 攔截訪問資源 *表示攔截所以資源 --> <url-pattern>/*</url-pattern> </filter-mapping>
4運(yùn)用的場景?
1)實(shí)現(xiàn)URL級別的權(quán)限訪問控制;
2)處理全站中文亂碼問題;
3)實(shí)現(xiàn)自動登錄;
4)過濾敏感詞匯;
5) 壓縮網(wǎng)頁;
6)選擇性讓瀏覽器緩存;等等。
這幾種功能的實(shí)現(xiàn)采用同樣的原理,那就是使用包裝模式或動態(tài)代理增強(qiáng)request或response對象的功能。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MybatisPlus:使用SQL保留字(關(guān)鍵字)的操作
這篇文章主要介紹了MybatisPlus:使用SQL保留字(關(guān)鍵字)的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11如何利用Map與函數(shù)式接口來實(shí)現(xiàn)去除if else
這篇文章主要介紹了如何利用Map與函數(shù)式接口來實(shí)現(xiàn)去除if else問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07關(guān)于SpringBoot中controller參數(shù)校驗(yàn)的使用
本文主要介紹了關(guān)于SpringBoot中controller參數(shù)校驗(yàn)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Java中的ArrayList、LinkedList、HashSet等容器詳解
這篇文章主要介紹了Java中的ArrayList、LinkedList、HashSet等容器詳解,集合表示一組對象,稱為其元素,有些集合允許重復(fù)元素,而另一些則不允許,有些是有序的,有些是無序的,需要的朋友可以參考下2023-08-08關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法
這篇文章主要介紹了關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08