版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/84574887
过滤器的顺序由 web.xml 文件中 <filter-mapping>
的顺序决定,从上到下
现有三个过滤器
<filter>
<filter-name>AFilter</filter-name>
<filter-class>com.jerry.filter.AFilter</filter-class>
</filter>
<filter>
<filter-name>BFilter</filter-name>
<filter-class>com.jerry.filter.BFilter</filter-class>
</filter>
<filter>
<filter-name>CFilter</filter-name>
<filter-class>com.jerry.filter.CFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>BFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
逻辑如下
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 过滤器预处理逻辑代码。。。
System.out.println(this.getClass().getName() + " 预处理");
// 调用下一个过滤器
chain.doFilter(request, response);
// 过滤器后处理逻辑代码。。。
System.out.println(this.getClass().getName() + " 后处理");
}
输出如下
com.jerry.filter.AFilter 预处理
com.jerry.filter.BFilter 预处理
com.jerry.filter.CFilter 预处理
调用:service
调用:doGet
com.jerry.filter.CFilter 后处理
com.jerry.filter.BFilter 后处理
com.jerry.filter.AFilter 后处理