你的浏览器不支持canvas

做你害怕做的事情,然后你会发现,不过如此。

Spring Boot配置使用Filter过滤器

时间: 作者: 黄运鑫

本文章属原创文章,未经作者许可,禁止转载,复制,下载,以及用作商业用途。原作者保留所有解释权。


创建过滤器

  • 创建过滤器并继承Filter,覆写initdoFilterdestroy三个方法
public class TestFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //TestFilter 初始化
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //拦截到的请求
        //处理请求和响应
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        
        //执行下一个过滤器或者servelt
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        //TestFilter 销毁
    }
}

配置过滤器使过滤器生效

  • 配置过滤器有两种方法,一种是通过FilterRegistrationBean配置,另一种是通过Servlet 3.0提供的@WebFilter注解配置。
  • 通过FilterRegistrationBean配置:
@Configuration
public class MyFilterConfig {
    @Bean
    public FilterRegistrationBean registFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new TestFilter());
        //过滤的地址
        registration.addUrlPatterns("/*");
        registration.setName("TestFilter");
        //过滤器顺序
        registration.setOrder(1);
        return registration;
    }
}
  • 通过@WebFilter配置:
@WebFilter(urlPatterns = "/*", filterName = "TestFilter")
public class TestFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //TestFilter 初始化
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //拦截到的请求
        //处理请求和响应
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        
        //执行下一个过滤器或者servelt
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        //TestFilter 销毁
    }
}

  • @WebFilter的常用属性:
属性名 类型 描述
filterName String 指定过滤器的 name 属性,等价于
value String[] 该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
urlPatterns String[] 指定一组过滤器的 URL 匹配模式。等价于 标签。
servletNames String[] 指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 的取值。
dispatcherTypes DispatcherType 指定过滤器的转发模式。具体取值包括:ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
initParams WebInitParam[] 指定一组过滤器初始化参数,等价于 标签。
asyncSupported boolean 声明过滤器是否支持异步操作模式,等价于 标签。
description String 该过滤器的描述信息,等价于 标签。
displayName String 该过滤器的显示名,通常配合工具使用,等价于 标签。

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。