filterchain
过滤器拦截到请求之后,首先是执行doFilter()方法中chain.doFilter()之前的代码,然后放弃权限给下一个过滤器或者serverlet等等,最后才执行chain.doFilter()之后的代码。
测试场景:
1.新建一个index.html,配置连接调整到一个test.jsp页面
2.对test.jsp做两层过滤,查看过滤器代码中chain.doFilter()之前和之后代码的执行顺序。
过滤器一:(使用注解控制过滤器执行顺序,此处先执行过滤器一,在执行过滤器2)
@WebFilter(filterName="firstFilter0",urlPatterns="/test.jsp")
public class FirstFilter implements Filter {
@Override
public void destroy() {
System.out.println("first destroy...");
}
@Override
public void doFilter(Servletrequest arg0, Servletresponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("1. first doFilter...");
arg2.doFilter(arg0, arg1);
System.out.println("2. first