JAVA全系列 教程
3762个小节阅读:7090.6k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
如果一个URL能够被多个拦截器所拦截,全局拦截器最先执行,其他拦截器根据配置文件中配置的从上到下执行,接下来我们再配置一个拦截器:
编写拦截器类
xxxxxxxxxx
public class MyInterceptor2 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
System.out.println("拦截器2:请求到达Controller前");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
System.out.println("拦截器2:跳转到JSP前");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println("拦截器2:跳转到JSP后");
}
}
配置拦截器链
xxxxxxxxxx
<!-- 配置拦截器 -->
<mvc:interceptors>
<!-- 拦截器1 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.itbaizhan.interceptor.MyInterceptor"/>
</mvc:interceptor>
<!-- 拦截器2 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.itbaizhan.interceptor.MyInterceptor2"/>
</mvc:interceptor>
</mvc:interceptors>
访问控制器方法后输出如下:
结论:
- preHandle()顺序执行,postHandle()、afterComletion()逆序执行。
- 只要有一个preHandle()拦截,后面的preHandle(),postHandle()都不会执行。
- 只要相应的preHandle()放行,afterComletion()就会执行。
1. 在SpringMVC中,关于拦截器链的执行顺序,以下说法正确的是?
A preHandle()
顺序执行,postHandle()
顺序执行。
B preHandle()
逆序执行,postHandle()
逆序执行。
C preHandle()
顺序执行,postHandle()
逆序执行。
D preHandle()
逆序执行,postHandle()
顺序执行。
2. 在SpringMVC中,只要相应的preHandle()
放行,
A postHandle()
就会执行。
B postHandle()
不会执行。
C afterComletion()
不会执行。
D afterComletion()
就会执行。
1=>C 2=>D