首页 > 编程语言 > 详细

SpringBoot 过滤器总结

时间:2020-08-26 19:21:47      阅读:78      评论:0      收藏:0      [点我收藏+]

一、创建过滤器的方式

  (1)   对过滤器使用@Component注解或者在配置类中使用@Bean注解,但这种方式有个弊端就是拦截所有请求

     (2)使用@WebFilter注解可以指定拦截url,但此方式也存在弊端多个过滤器无法指定优先级

     (3)使用FilterRegistrationBean方式创建过滤器可以指定过滤器优先级

二、三种方式的实现

  (1)、基于@Component 或者@Bean实现     

@Component
public class TestFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {    
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("过滤器111");
    }
    @Override
    public void destroy() {        
    }
}


配置类中@Configuration

 @Bean("myFilter1")
 public Filter estFilter() {
   return new TestFilter();
 }

 

(2)、基于WebFilter(注意启动类要加@ServletComponentScan注解)

  

@WebFilter(filterName = "test1", urlPatterns = { "/page/*" })
public class TestFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {        
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("过滤器111");
    }
    @Override
    public void destroy() {
        
    }

}

(3)基于FilterRegistrationBean

    @Bean
    public FilterRegistrationBean uploadFilterRegistration1() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new DelegatingFilterProxy(new TestFilter()));
        registration.addUrlPatterns("/*");
        registration.setName("MyFilter1");
        registration.setOrder(5);//优先级数字越大优先级越小
        return registration;
    }

 

SpringBoot 过滤器总结

原文:https://www.cnblogs.com/kjcc/p/13566727.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!