filter的执行类似于栈,执行顺序是按照在配置文件中配置的顺序执行的,比如定义两个filter(f1,f2),过滤的对象为index.jsp,则客户的请求(req)和响应(res)顺序是req->f1->f2>index.jsp->f2->f1->res。
总结:filter的调用顺序:按照web.xml中的映射配置顺序按照配置条件从后向前调用。层次调用doFilter()方法中FilterChain.doFilter()之前的内容(filter-mapping的name先调用doFilter方法,但是每个dofilter方法的内部存在chain.dofilter会调用下一个filter-mapping,一直到不存在下一个filter后在返回,执行chain.dofilter()后面的代码)(相当于递归调用)
参考: filter的执行顺序