SpringMVC拦截器

自定义拦截器概述  

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

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

      <bean id="firstHandlerInterceptor"mvc

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

      </mvc:interceptors>post

    • 自定义拦截器类

      public class FirstHandlerInterceptor implements HandlerInterceptor {ui

       

      @Overridethis

      public void afterCompletion(HttpServletRequest arg0,spa

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

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

      }

       

      @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会执行

相关文章
相关标签/搜索