SpringBoot自定义Filter拦截器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou6282610/article/details/87994585

自定义 Filter 有两种实现方式

  1. 使用 @WebFilter
  2. 使用 FilterRegistrationBean

自定义 Filter 两个步骤:

  • 实现 Filter 接口,实现其中的 doFilter() 方法;
  • 添加 @Configuration 注解,将自定义 Filter 加入过滤链。

自定义拦截器的使用

首先,创建一个MyFilter类,实现Filter接口。对doFilter进行重写。

public class MyFilter implements Filter {

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

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        System.out.println("This is MyFilter,Url:" + request.getRequestURI());
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

然后,将自定义拦截器加入过滤链。

@Configuration
public class WebConfiguration {

    @Bean
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new MyFilter());
        //过滤所有请求
        registration.addUrlPatterns("/*");
        registration.setName("MyFilter");
        //设置优先级,值越小优先级越高
        registration.setOrder(6);
        return registration;
    }
}

最后,我们启动项目,发起请求,就会在控制台看到我们的打印结果。

猜你喜欢

转载自blog.csdn.net/zhou6282610/article/details/87994585