一 .拦截器简介

拦截器的几个处理阶段

二 . 拦截器快速入门
2.1 实现拦截器接口
java
public class MyInterceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor1...preHandle");
return true; //是否放行 true放行
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor1...postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("MyInterceptor1...afterCompletion");
}
}
2.2 在spring-mvc.xml里配置
XML
<!-- 配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!--对哪些请求路径进行拦截 -->
<mvc:mapping path="/**"/>
<bean class="com.itheima.interceptors.MyInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
三. 拦截器的执行顺序
第一种情况

第二种情况

来解释一下 : 当任意一个preHandle不执行时 , Handle处理器(即@contrller)就不执行了 , 所以postHandle就不执行了 , (可以认为Handler与PostHandlder绑定)
后面只执行前面已经执行过的preHandle对应的afterCompletion .