spring高级 之 拦截器

1 拦截器

    Spring Web MVC 的处理拦截器类似于Servlet开发中的过滤器filter,用于对处理器进行预处理和后处理。

 

1.1 拦截器定义

实现HandlerInterceptor接口,如下:

 

public class MyHanlerInterceptor implements HandlerInterceptor{

 

 

   /**

    * controller执行前调用此方法

    * 返回true表示继续执行,返回false中止执行

    *这里可以加入登录校验,权限拦截等    

   */

    @Override

    public boolean preHandle(HttpServletRequest request,HttpSerletReponse response ,Object handler) throws Exception{}

 

   /**

    * controller执行后但未返回试图前调用此方法

    * 这里可在返回用户前对模型数据进行加工处理,比如这里加入公用信息以便页面显示

   */

   @Override

   public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView)throws Exception{}

 

 

   /**

    * controller执行后且视图返回后调用此方法

    * 这里可得到执行controller时的异常信息

    *这里可以记录操作日志,资源清理等。

   */

   @Override

   public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception e)throws Exception{}

 

}

 

1.2拦截器配置

1.2.1 针对某种mapping配置拦截器

<bean

       class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">

       <property name="interceptors">

              <list>

                     <ref bean="myHandlerInterceptor"/>

              </list>

       </property>

</bean>

       <bean id=" myHandlerInterceptor "

 class="springmvc.intercapter. myHandlerInterceptor "/>

      

 

1.2.2针对所有mapping配置全局拦截器

!--拦截器 -->

<mvc:interceptors>

       <!--多个拦截器,顺序执行 -->

       <mvc:interceptor>

              <mvc:mapping path="/**"/>

              <bean class="cn.itcast.springmvc.filter.HandlerInterceptor1"></bean>

       </mvc:interceptor>

       <mvc:interceptor>

              <mvc:mapping path="/**"/>

              <bean class="cn.itcast.springmvc.filter.HandlerInterceptor2"></bean>

       </mvc:interceptor>

</mvc:interceptors>

 

 

你可能感兴趣的:(spring高级 之 拦截器)