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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产女王女m视频vk 国产农村一级特黄α真人毛片 | 97色吧| 国产拍拍视频一二三四区 | 好大用力深一点视频 | 国产日本免费 | 成人欧美一区二区三区 | 精品视频一区在线观看 | 欧美丝袜foot job | 亚洲激情视频在线 | 精品国产人成亚洲区 | 日韩高清在线免费观看 | 青青草成人在线 | 51午夜| 800精品国产导航 | 99视频全部看免费观 | 欧美人妖另类性hd | 鬼吹灯天星术在线高清观看 | 亚洲精品日韩专区在线观看 | 34看网片午夜理 | 国产a毛片在线 | 日日碰碰| 日本xx高清视频免费观看 | 欧美一区二区三区四区在线观看 | 色综合视频一区二区三区 | 青草草视频在线观看 | 天天性综合 | 国产精品免费视频能看 | 乖女的嫩奶水h文孕妇 | 欧美日韩一区二区综合在线视频 | 欧美腐剧mm在线观看 | free哆拍拍免费永久视频 | 黄色cc| 免费网站看v片在线香蕉 | 色悠久久久| 国产精品福利一区二区亚瑟 | 天堂69亚洲精品中文字幕 | 国产成人精品一区二区阿娇陈冠希 | 日韩欧美国产成人 | 精品无码国产污污污免费网站2 | bnb998八度免费影院丫意浓 | 2021最新国产成人精品免费 |