1.先看源码
package javax.servlet;
public interface Filter{
init
destroy
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
}
2. doFilter里需要执行
before
filterChain.doFilter(request,servletResponse);
after
执行这个方法将请求交给下一个Filter,没有Filter了就给Servlet. Servlet里执行结束会将请求和相应交给 filterChain.doFilter(request,servletResponse); 后的代码继续执行.
在spring boot中
1. 给实现类添加注解
@Component
@WebFilter
@Order(1)//这个注解指定执行顺序,但是如果前面的filterChanin没有dofilter,那么流程也不会来到这里
public class MyFilter implements Filter {
2. WebFilter注解还可以设置参数
//重要的是 urlPatterns这个key,
@WebFilter(urlPatterns ={"/test/**","/"})
//但是使用Component注解会导致urlPatterns无效,可以选用启动类上加注解加载Filter
@ServletComponentScan(basePackages = {"com.example.demo.test1"})