Springmvc中的拦截器interceptor及与过滤器filter的区别

一.Springmvc中的拦截器概述及与过滤器filter的区别

   1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术;

   2).可以定义拦截器链,拦截器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。

   3).拦截器interceptor与过滤器filter的区别

         1.过滤器是servlet中的,任何框架都可以使用过滤器技术;

           2.拦截器是Springmvc所独有的

           3.过滤器设置/*可以拦截任何资源

           4.拦截器只对控制器controller中的方法进行拦截

     4).拦截器利用的是AOP思想;

     5).自定义拦截器,需要实现HandlerInterceptor接口

二.拦截器的使用:自定义拦截器类实现HandlerInterceptor接口,重写其中三个方法之一的preHandle()方法

1 public class MyInterceptor implements HandlerInterceptor {
2     @Override
3     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
4         System.out.println("拦截器执行了");
5         return true;//返回true代表放行,返回false代表不放行程序到此就不会向下走了
6     }
7 }

  在springmvc.xml中配置拦截器

  <!--配置拦截器interceptor-->
     <mvc:interceptors>
         <mvc:interceptor>
             <mvc:mapping path="/account/*"/>   <!--拦截的路径,路径都是controller中的方法路径-->
             <mvc:exclude-mapping path="/account/testSpringmvc"/>  <!--不拦截的路径-->
             <bean class="cn.itcast.interceptor.MyInterceptor"/>
         </mvc:interceptor>
     </mvc:interceptors>

三.HandlerInterceptor接口中的三个方法分析

    1.preHandler()  拦截在controller中方法执行之前,执行,这是拦截器主要用到的方法

        可以使用request或者response跳转到指定的页面

       return true 代表放行   return false 代表不放行

    2.postHandler()  在controller中方法执行后,返回jsp视图执行之前执行此方法

        1). 可以使用request或者response跳转到指定的页面
        2). 如果指定了跳转的页面,那么controller方法跳转的页面将不会显示。

    3.afterCompletion() 在跳转页面后执行此方法

        无法通过request或response跳转页面了

四.可以编写配置多个拦截器,拦截顺序按照在springmvc.xml中配置顺序

     拦截器执行顺序:

   

posted on 2018-10-16 10:50  雨后黄昏  阅读(341)  评论(0编辑  收藏  举报

导航