Tomcat.Filter


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"})