大家好,又见面了,我是你们的朋友全栈君。
过滤器的顺序由 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 后处理
web.xml 并不是必须的,现在使用SpringBoot也就再没配置过它了 Spring MVC 学习笔记 7《拦截器(Interceptor)》 Servlet、Filter、Listener 注册方式演变
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128713.html原文链接:https://javaforall.cn