一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - springboot中filter的用法詳解

springboot中filter的用法詳解

2021-02-22 10:50小寶不乖 Java教程

本篇文章主要介紹了springboot中filter的用法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一、在spring的應(yīng)用中我們存在兩種過(guò)濾的用法,一種是攔截器、另外一種當(dāng)然是過(guò)濾器。我們這里介紹過(guò)濾器在springboot的用法,在springmvc中的用法基本上一樣,只是配置上面有點(diǎn)區(qū)別。

二、filter功能,它使用戶可以改變一個(gè) request和修改一個(gè)response. Filter 不是一個(gè)servlet,它不能產(chǎn)生一個(gè)response,它能夠在一個(gè)request到達(dá)servlet之前預(yù)處理request,也可以在離開(kāi) servlet時(shí)處理response.換種說(shuō)法,filter其實(shí)是一個(gè)”servlet chaining”(servlet 鏈).

一個(gè)Filter包括:

1)、在servlet被調(diào)用之前截獲;
2)、在servlet被調(diào)用之前檢查servlet request;
3)、根據(jù)需要修改request頭和request數(shù)據(jù);
4)、根據(jù)需要修改response頭和response數(shù)據(jù);
5)、在servlet被調(diào)用之后截獲.

1、Filter的應(yīng)用場(chǎng)景

通過(guò)對(duì)filter過(guò)濾器的了解,可以得知在以下三種情況下可以做些處理:

1> 通過(guò)控制對(duì)chain.doFilter的方法的調(diào)用,來(lái)決定是否需要訪問(wèn)目標(biāo)資源。

比如,可以在用戶權(quán)限驗(yàn)證等等。判斷用戶是否有訪問(wèn)某些資源的權(quán)限,有權(quán)限放行,沒(méi)權(quán)限不執(zhí)行chain.doFilter方法。

2> 通過(guò)在調(diào)用chain.doFilter方法之前,做些處理來(lái)達(dá)到某些目的。

比如,解決中文亂碼的問(wèn)題等等??梢栽赿oFilter方法前,執(zhí)行設(shè)置請(qǐng)求編碼與響應(yīng)的編碼。甚至可以對(duì)request接口進(jìn)行封裝裝飾來(lái)處理get請(qǐng)求方式的中文亂碼問(wèn)題(重寫(xiě)相應(yīng)的request.getParameter方法)。

3> 通過(guò)在調(diào)用chain.doFilter方法之后,做些處理來(lái)達(dá)到某些目的。

比如對(duì)整個(gè)web網(wǎng)站進(jìn)行壓縮。在調(diào)用chain.doFilter方法之前用類(lèi)A對(duì)response對(duì)象進(jìn)行封裝裝飾,重寫(xiě)getOutputStream和重寫(xiě)getWriter方法。在類(lèi)A內(nèi)部中,將輸出內(nèi)容緩存進(jìn)ByteArrayOutputStream流中,然后在chain.doFilter方法執(zhí)行后,獲取類(lèi)A中ByteArrayOutputStream流緩存數(shù)據(jù),用GZIPOutputStream流進(jìn)行壓縮下。

2、Filter實(shí)現(xiàn)攔截的原理

Filter接口中有一個(gè)doFilter方法,當(dāng)開(kāi)發(fā)人員編寫(xiě)好Filter類(lèi)實(shí)現(xiàn)doFilter方法,并配置對(duì)哪個(gè)web資源進(jìn)行攔截后,WEB服務(wù)器每次在調(diào)用web資源的service方法之前(服務(wù)器內(nèi)部對(duì)資源的訪問(wèn)機(jī)制決定的),都會(huì)先調(diào)用一下filter的doFilter方法。

3、過(guò)濾規(guī)則

?
1
2
3
4
5
6
7
8
//過(guò)濾應(yīng)用程序中所有資源,當(dāng)前應(yīng)用程序根下的所有文件包括多級(jí)子目錄下的所有文件,注意這里*前有“/”
registration.addUrlPatterns("/*");
//過(guò)濾指定的類(lèi)型文件資源, 當(dāng)前應(yīng)用程序根目錄下的所有html文件,注意:*.html前沒(méi)有“/”,否則錯(cuò)誤
registration.addUrlPatterns(".html");
//過(guò)濾指定的目錄下的所有文件,當(dāng)前應(yīng)用程序根目錄下的folder_name子目錄(可以是多級(jí)子目錄)下所有文件
registration.addUrlPatterns("/folder_name/*");
//過(guò)濾指定文件
registration.addUrlPatterns("/index.html");

三、應(yīng)用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Component
@ServletComponentScan
@WebFilter(urlPatterns = "/login/*",filterName = "loginFilter")
public class LoginFilter implements Filter{
 
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
 
  }
 
  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 
  }
 
  @Override
  public void destroy() {
 
  }
}

四、解釋?zhuān)?/strong>

1、@Component 這個(gè)注解的目的是將LoginFilter交給容器來(lái)處理。也就是讓LoginFilter起作用

2、@ServletComponentScan 這個(gè)使用來(lái)掃描@WebFilter 的讓@WebFilter起作用。當(dāng)然對(duì)于servlet線管注解也是可以的。這個(gè)@ServletComponentScan最好卸載Apllication這個(gè)上面,通用配置。我這里因?yàn)橹挥幸粋€(gè)Filter所以沒(méi)有寫(xiě)在Application上面。

3、@WebFilter 這個(gè)用處顯而易見(jiàn),針對(duì)于什么鏈接做過(guò)濾,filter的名稱(chēng)是為什么。

五、簡(jiǎn)單介紹一下springmvc中的Filter的用法

1、寫(xiě)的方法還是一樣的都是繼承Filter,來(lái)實(shí)現(xiàn)3個(gè)方法處理

2、丟入容器:這個(gè)需要配置在web.xml里面

?
1
2
3
4
5
6
7
8
<filter>
  <filter-name>loginFilter</filter-name>
  <filter-class>com.troy.boot.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loginFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

3、具體的用法可以自己研究。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/ll409546297/p/7422833.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 3x免费高清视频 | 国产综合色在线视频区色吧图片 | 欧美成人精品第一区二区三区 | 恩不要好大好硬好爽3p | 门房秦大爷小说 | 爱欲荡漾在线观看 | 欧美人做人爱a全程免费 | 欧美一级特黄刺激大片视频 | 日本欧美强乱视频在线 | 国产 日韩 欧美 综合 | 毛片a级放荡的护士hd | 1717she精品视频在线观看 | 午夜AV亚洲一码二中文字幕青青 | 四虎最新永久在线精品免费 | 丝袜兔女郎被啪在线观看91 | 天堂在线免费观看 | 成品人视频w免费观看w | 欧美日韩在线观看一区二区 | 狠狠婷婷综合缴情亚洲 | 99精品久久99久久久久久 | 冰山美人调教耻辱h | 日本不卡1卡2卡三卡网站二百 | www.91在线播放| 饭冈加奈子黑人解禁在线播放 | 亚洲毛片基地4455ww | 含羞草传媒每天免费一次破解 | 扒开胸流出吃奶 | 高中生放荡日记高h娜娜 | 污斗罗大陆 | 男人的天堂在线观看免费 | 亚洲高清一区二区三区四区 | 岛国a香蕉片不卡在线观看 荡女淫春2古装 | 和岳m的小说 | 日本一区二区视频免费播放 | 国产馆精品推荐在线观看 | 日本漫画大全之工之口 | 青青青在线免费 | 好男人社区www影院在线观看 | 四虎影院永久在线 | 办公室强行丝袜秘书啪啪 | 99热99在线|