SpringMVC拦截器介绍

前言

  拦截器是SpringMVC非常重要的一个功能,主要作用是拦截用户的请求并进行相应的处理。
  
  SpringMVC拦截器是可插拔式的设计,需要使用哪个拦截器,在配置文件配置就可以。不管是是否使用某个拦截器,对SpringMVC框架都不会有影响。

拦截器核心接口HandlerInterceptor

  在SpringMVC中定义拦截器需要实现HandlerInterceptor接口,或者继承HandlerInterceptorAdapter抽象类,就可以。

public interface HandlerInterceptor {
    boolean preHandle(HttpServletRequest var1, HttpServletResponse var2, Object var3) throws Exception;

    void postHandle(HttpServletRequest var1, HttpServletResponse var2, Object var3, ModelAndView var4) throws Exception;

    void afterCompletion(HttpServletRequest var1, HttpServletResponse var2, Object var3, Exception var4) throws Exception;
}

可以看到HandlerInterceptor 接口中有3个需要实现的方法。

  • perHandle

    SpringVC的拦截器实行的是链式调用,对于每个请求可以存在多个拦截器,每个拦截器会根据声明顺序调用。每个拦截器中最先被调用的方法是perHandle方法,可以在该方法中进行一些请求预处理操作。如果返回值是false,请求就会被拦截,后续的请求操作不会进行。在多个拦截器的时候,前一个返回true,后面的拦截器才会被调用,直到最后一个。

  • postHandle

    只有在perHandle方法返回值为true的时候才会被调用。此方法在DispaServlet在处理请求之后,渲染视图之前被调用。所以这个方法可以对Controler处理后的视图对象进行操作。

  • afterCompletion

    同样只是在perHandle反法返回为true后才能被调用。该方法在整个请求结束后会被调用。就是在DispaServlet对视图渲染之后被调用。所以该方法适合对资源进行清理。

我实现的一个用户权限拦截器

猜你喜欢

转载自blog.csdn.net/weijifeng_/article/details/81032091