springmvc拦截器的说明和使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_royi/article/details/80482157

1.springmvc拦截器的说明和使用

1.1拦截器的说明:
Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于进行预处理和后处理。

1.1.1使用简介:定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。(面试问题)

拦截器的机制基于aop 面向切面编程

public classHandlerInterceptor1 implements HandlerInterceptor {
   //进入 Handler方法之前执行
   //用于身份认证、身份授权
   //比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
   @Override
   public booleanpreHandle(HttpServletRequest request,
        HttpServletResponseresponse, Object handler) throws Exception {
      //return false表示拦截,不向下执行
      //return true表示放行
      return false;
   }

   //进入Handler方法之后,返回modelAndView之前执行
   //应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
   @Override
   public voidpostHandle(HttpServletRequest request,
        HttpServletResponseresponse, Object handler,
        ModelAndViewmodelAndView) throwsException {
   }
   //执行Handler完成执行此方法
   //应用场景:统一异常处理,统一日志处理
   @Override
   public voidafterCompletion(HttpServletRequest request,
        HttpServletResponseresponse, Object handler, Exception ex)
        throws Exception {
   }
}

1.2 拦截器配置
1.2.1 针对HandlerMapping配置
springmvc拦截器针对HandlerMapping(处理器映射器)进行拦截设置,如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler最终使用该 拦截器。

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
   <property name="interceptors">
      <list>
        <ref bean="handlerInterceptor1"/>
       <ref bean="handlerInterceptor2"/>
      </list>
   </property>
</bean>
  <bean id="handlerInterceptor1"class="springmvc.intercapter.HandlerInterceptor1"/>
   <bean id="handlerInterceptor2" class="springmvc.intercapter.HandlerInterceptor2"/>
<!--一般不推荐使用。-->

猜你喜欢

转载自blog.csdn.net/c_royi/article/details/80482157