自定义拦截器

springmvc配置文件中

1 <!-- 自定义拦截器 -->
2     <mvc:interceptors>
3         <mvc:interceptor>
4             <!-- 2个*代表包含子目录 -->
5             <mvc:mapping path="/**/*.action"/>
6             <bean class="cn.study.springmvc.interceptor.MyHandlerInterceptor" />
7         </mvc:interceptor>
8     </mvc:interceptors>

拦截器代码

自动以我们的拦截器,要实现org.springframework.web.servlet.HandlerInterceptor

 1 public class MyHandlerInterceptor implements HandlerInterceptor{
 2 
 3     /**
 4      * 前置方法,会在handler执行之前执行
 5      */
 6     @Override
 7     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
 8             throws Exception {
 9         System.out.println("前置方法 执行 。。。。。。。。");
10         return true;
11     }
12 
13     /**
14      * 后置方法,会在handler执行之后执行
15      */
16     @Override
17     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
18             ModelAndView modelAndView) throws Exception {
19         System.out.println("后置方法 执行 。。。。。。。。");
20     }
21 
22     /**
23      * 完成方法
24      */
25     @Override
26     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
27             Exception ex) throws Exception {
28         System.out.println("完成方法 执行 。。。。。。。。");
29     }
30 
31 }

总结:

l 拦截器的执行过程和Struts2的拦截器执行过程类似;

l 拦截器的前置方法是正序执行,如果其中一个返回false则请求返回;

l 拦截器的后置方法是倒序执行,后置方法只有在前置方法全部执行后才能被执行;

l 拦截器的完成方法是倒序执行,完成方法不仅是在最后执行,而且如果前置方法返回false也会被执行(已经通过执行的拦截器的完成方法)。

posted @ 2016-01-13 11:58  heyLuer  阅读(770)  评论(0编辑  收藏  举报