SpringMVC拦截器

自定义拦截器概述  

  1. Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器可以实现HandlerInterceptor接口,也可以继承HandlerInterceptorAdapter 适配器类  
    • preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。
    • postHandle():这个方法在业务处理器处理完请求后,但是DispatcherServlet 向客户端返回响应前被调用,在该方法中对用户请求request进行处理。
    • afterCompletion():这个方法在 DispatcherServlet 完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。
    • xml配置拦截器
    • <mvc:interceptors>

      <!-- 声明自定义拦截器 -->

      <bean id="firstHandlerInterceptor"

            class="com.atguigu.springmvc.interceptors.FirstHandlerInterceptor"></bean>

      </mvc:interceptors>

    • 自定义拦截器类

      public class FirstHandlerInterceptor implements HandlerInterceptor {

       

      @Override

      public void afterCompletion(HttpServletRequest arg0,

      HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {

      System.out.println(this.getClass().getName() + " - afterCompletion");

      }

       

      @Override

      public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,

      Object arg2, ModelAndView arg3) throws Exception {

      System.out.println(this.getClass().getName() + " - postHandle");

      }

    •  

      @Override

      public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,

      Object arg2) throws Exception {

      System.out.println(this.getClass().getName() + " - preHandle");

      return true;

      }

    • 当有多个拦截器时,
           * preHandle:按照拦截器数组的正向顺序执行
           * postHandle:按照拦截器数组的反向顺序执行
           * afterCompletion:按照拦截器数组的反向顺序执行
           * 
           * 当多个拦截器的preHandle有不同的值时
           * 第一个返回false,第二个返回false:只有第一个preHandle会执行
           * 第一个返回true,第二个返回false:两个(全部)拦截器的preHandle都会执行
           * 但是(全部)postHandle都不会执行,而afterCompletion只有第一个(返回false的拦截器之前的所有afterCompletion)会执行
           * 第一个返回false,第二个返回true:只有第一个的preHandle会执行

转载于:https://my.oschina.net/u/4151492/blog/3064463

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值