SpringMVC第六讲:SpringMVC拦截器

十一、SpringMVC拦截器

拦截器(Interceptor)是 Spring MVC 提供的一种强大的功能组件。它可以对用户请求进行拦截,并在请求进入控制器(Controller)之前、控制器处理完请求后、甚至是渲染视图后,执行一些指定的操作。在 Spring MVC 中,拦截器的作用与 Servlet 中的过滤器类似,它主要用于拦截用户请求并做相应的处理。Spring MVC 拦截器使用的是可插拔式的设计,如果我们需要某一拦截器,只需在配置文件中启用该拦截器即可;如果不需要这个拦截器,则只要在配置文件中取消应用该拦截器即可。

Spring拦截器类

//自定义类实现HandlerInterceptor接口
public class MyHandlerInterceptor implements HandlerInterceptor {

  //在Controller控制器方法之前执行,其返回值用来表示是否中断后续操作。返回true则继续执行,返回false则终止执行
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    return false;
  }

  //在Controller控制器方法调用之后,解析式图之前执行
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

  }

  //在整个请求完成后,即视图渲染结束之后执行
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

  }
}

SpringMVC配置拦截器,拦截器配置有两种方式,第一种方式为全局拦截器,即所有请求方法都会被拦截;第二种方式为局部拦截器,即根据配置路径进行部分拦截

<!--mvc:interceptors标签设置拦截器,配置bean,通过ref引入拦截器,实现全局拦截-->
<bean id="myHandlerInterceptor" class="com.manage.charging.controller.MyHandlerInterceptor"/>
<mvc:interceptors>
  <ref bean="myHandlerInterceptor"/>
</mvc:interceptors>
<!--设置局部拦截器,根据配置路径进行拦截,bean和ref可以替换,引入外部bean和在拦截器中声明的效果相同-->
<mvc:interceptors>
  <!--拦截器1-->
  <mvc:interceptor>
    <!--拦截器要拦截的路径-->
    <mvc:mapping path="/**"/>
    <!--拦截器不拦截的路径-->
    <mvc:exclude-mapping path="/findAll"/>
    <!--拦截器要应用的拦截器-->
    <!--<ref bean="myHandlerInterceptor"/>-->
    <bean id="myHandlerInterceptor" class="com.manage.charging.controller.MyHandlerInterceptor"/>
  </mvc:interceptor>
</mvc:interceptors>

注意:在mvc:interceptor拦截器中,子元素必须按照上述代码的配置顺序进行编写,即 <mvc:mapping><mvc:exclude-mapping><bean> 的顺序,否则就会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值