Filter
属于Servlet
规范内的组件,用于过滤请求。
其运行原理类似于AOP,可以在请求前后执行部分逻辑。
public class MyFilter implements javax.servlet.Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
// 请求处理之前
chain.doFilter(request, response);
// 请求处理之后
}
@Override
public void destroy() {
}
}
在普通的JAVA WEB
项目中可以在web.xml
中进行注册过滤器,但是在SpringBoot
项目中不存在web.xml
配置文件。
Servlet3
提供了通过注解的方式注册Filter。也可以通过SpringBoot
提供的方式注册Filter
Servlet 3 注解方式注册Filter
@javax.servlet.annotation.WebFilter(urlPatterns = "/*", filterName = "myFilter")
public class MyFilter implements javax.servlet.Filter {}
SpringBoot Bean 方式注册Filter
通过在Spring IOC
中注册FilterRegistrationBean
就可以自动注册过滤器。
@Bean
public FilterRegistrationBean<MyFilter> myFilter() {
FilterRegistrationBean<MyFilter> bean = new FilterRegistrationBean<>();
bean.setFilter(new MyFilter());
bean.addUrlPatterns("/*");
bean.setName("myFilter");
bean.setOrder(1);
return bean;
}