自定义拦截器开发过程
自定义拦截器需要实现HandlerInterceptor接口 ```java //自定义拦截器需要实现HandleInterceptor接口 public class MyInterceptor implements HandlerInterceptor { //处理器运行之前执行 @Override public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,Object handler) throws Exception {System.out.println("前置运行----a1");//返回值为false将拦截原始处理器的运行//如果配置多拦截器,返回值为false将终止当前拦截器后面配置的拦截器的运行return true;
}
//处理器运行之后执行 @Override public void postHandle(HttpServletRequest request,
HttpServletResponse response,Object handler,ModelAndView modelAndView) throws Exception {System.out.println("后置运行----b1");
}
//所有拦截器的后置执行全部结束后,执行该操作 @Override public void afterCompletion(HttpServletRequest request,
HttpServletResponse response,Object handler,Exception ex) throws Exception {System.out.println("完成运行----c1");
}
}
注意:- 拦截器实现先进先出的原则比如1,2,3号拦截器出去就是3,2,1- 三个方法的运行顺序为 preHandle -> postHandle -> afterCompletion- 如果preHandle返回值为false,三个方法仅运行preHandle2. 配置拦截器```java<mvc:interceptors><!--开启具体的拦截器的使用,可以配置多个--><mvc:interceptor><!--设置拦截器的拦截路径,支持*通配--><!--/** 表示拦截所有映射--><!--/* 表示拦截所有/开头的映射--><!--/user/* 表示拦截所有/user/开头的映射--><!--/user/add* 表示拦截所有/user/开头,且具体映射名称以add开头的映射--><!--/user/*All 表示拦截所有/user/开头,且具体映射名称以All结尾的映射--><mvc:mapping path="/*"/><mvc:mapping path="/**"/><mvc:mapping path="/handleRun*"/><!--设置拦截排除的路径,配置/**或/*,达到快速配置的目的--><mvc:exclude-mapping path="/b*"/><!--指定具体的拦截器类--><bean class="MyInterceptor"/></mvc:interceptor></mvc:interceptors>
