创建过滤器
- 创建过滤器并继承Filter,覆写
init
、doFilter
、destroy
三个方法
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 | 该过滤器的显示名,通常配合工具使用,等价于 |