版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou6282610/article/details/87994585
自定义 Filter 有两种实现方式
- 使用 @WebFilter
- 使用 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;
}
}
最后,我们启动项目,发起请求,就会在控制台看到我们的打印结果。