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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot注冊Filter的兩種實現方式

SpringBoot注冊Filter的兩種實現方式

2020-08-05 23:35user_MzerKbEl Java教程

這篇文章主要介紹了SpringBoot注冊Filter的兩種實現方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

springboot版本:2.2.5

一、filter注冊

springboot中添加filter有兩種方式:

1、實現方法一

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.example.demo.filter1;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
import org.springframework.stereotype.Component;
 
/**
 * Springboot實現filter的方式一:
 * 實現Filter接口,并使用@Component注解
 * 需要注意的是:這個方式注冊的filter的執行順序優先級較低
 * @author Administrator
 *
 */
@Component
public class FilterSample1 implements Filter {
 
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("這里是"+this.getClass().getName()+"的init");
    
  }
 
  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
    System.out.println("這里是"+this.getClass().getName()+"的doFilter");
    chain.doFilter(request,response);
  }
 
  @Override
  public void destroy() {
    System.out.println("這里是"+this.getClass().getName()+"的doFilter");
    
  }
}

2、實現方法二

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example.demo.filter2;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class FilterSample2 implements Filter{
 
  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
    System.out.println("這里是"+this.getClass().getName()+"的doFilter");
    chain.doFilter(request,response);
    
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.example.demo.filter2;
 
import java.util.ArrayList;
 
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * Springboot注冊filter方法二:
 * 同樣要實現filter接口,但filter注冊使用@Bean的方式進行注冊,可以設置filter順序
 * @author Administrator
 *
 */
@Configuration
public class WebConfig {
  @Bean
  public FilterRegistrationBean<FilterSample2> filterSample2() {
    FilterRegistrationBean<FilterSample2> registrationBean = new FilterRegistrationBean<FilterSample2>();
    FilterSample2 myFilter = new FilterSample2();
    registrationBean.setFilter(myFilter);
    ArrayList<String> urls = new ArrayList<>();
    urls.add("/*");//配置過濾規則
    registrationBean.setUrlPatterns(urls);
    registrationBean.setOrder(3);
    return registrationBean;
  }
}

二、Springboot自帶filter

Springboot默認啟用了三個filter,他們是requestContextFilter,characterEncodingFilter,formContentFilter,可以通過在application.yml中設置debug: true來驗證如下:

2020-03-17 22:13:17.254 DEBUG 2700 --- [           main] o.s.b.w.s.f.OrderedRequestContextFilter  : Filter 'requestContextFilter' configured for use
2020-03-17 22:13:17.255 DEBUG 2700 --- [           main] s.b.w.s.f.OrderedCharacterEncodingFilter : Filter 'characterEncodingFilter' configured for use
2020-03-17 22:13:17.255 DEBUG 2700 --- [           main] o.s.b.w.s.f.OrderedFormContentFilter     : Filter 'formContentFilter' configured for use

三、查看應用中注冊了哪些filter

?
1
2
#application.yml
debug: true

如上圖,啟用debug模式,查看日志可得:

SpringBoot注冊Filter的兩種實現方式

標藍部分詳細內容如下:

2020-03-17 22:13:17.244 DEBUG 2700 --- [           main] o.s.b.w.s.ServletContextInitializerBeans :
Mapping filters:
filterRegistrationBean urls=[/*] order=3,
characterEncodingFilter urls=[/*] order=-2147483648,
formContentFilter urls=[/*] order=-9900,
requestContextFilter urls=[/*] order=-105,
filterSample1 urls=[/*] order=2147483647

可以看出,該應用注冊了五個filter,執行順序由order決定

到此這篇關于SpringBoot注冊Filter的兩種實現方式的文章就介紹到這了,更多相關SpringBoot注冊Filter內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://segmentfault.com/a/1190000023501017

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 慢慢娇淫 | 99热精品在线免费观看 | 国产精品露脸国语对白手机视频 | 日韩高清成人毛片不卡 | 公翁的舌尖研磨她的花蒂小说 | 男人午夜视频在线观看 | 亚洲人成高清毛片 | 扒开双腿羞辱调教play视频 | 国产成人精品曰本亚洲78 | 九九99精品 | 男人曰女人| 果冻传媒第一二三专区 | 美女张开腿让我了一夜 | 99久久综合精品免费 | 99久久综合精品免费 | 天天色一色 | 婚前试爱免费观看 | 国内视频一区二区 | 日韩免费在线视频观看 | 四虎影音 | 二次元美女扒开内裤露尿口 | 青青青久热国产精品视频 | 男女爆操 | 天天干狠狠操 | 日韩成本大片35分钟免费播放 | 久久久WWW免费人成精品 | 大叔在线观看 | 午夜精品网 | 午夜在线观看免费完整直播网页 | 国产卡一卡二卡三卡四 | 欧洲另类一二三四区 | 免费成年网| 日韩一级片在线观看 | 桃色综合网 | 国产免费一区二区三区免费视频 | 日韩人成免费网站大片 | 亚洲国产韩国欧美在线不卡 | 男生操女生的漫画 | 手机在线免费观看视频 | 国产成人无精品久久久久国语 | 高h巨肉play 高h短篇辣肉各种姿势bl |