spring mvc 拦截器(Interceptor)详解

定义

Spring MVC 的拦截器(Interceptor)与 asp.net的管道过滤器类似,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等。

拦截器的定义

在 Spring MVC 框架中定义一个拦截器需要对拦截器进行定义和配置,主要有以下 2 种方式。
通过实现 HandlerInterceptor 接口或继承 HandlerInterceptor 接口的实现类(例如 HandlerInterceptorAdapter)来定义;

  1. 通过实现 WebRequestInterceptor 接口或继承 WebRequestInterceptor 接口的实现类来定义。
  2. 本节以实现 HandlerInterceptor 接口的定义方式为例讲解自定义拦截器的使用方法。示例代码如下。

image

springmvc配置文件配置自定义拦截器

image

控制器

image

浏览器访问结果

image

控制台输出

image

详细解析
  1. 浏览器访问http://localhost:8080/Login/main 前端控制器DispatchServlet处理请求,通过处理映射器HandlerMapping获取handler(也就是我们后台的Controller里的方法,返回给DispatchServlet。

  2. DispatchServlet请求适配器处理器HandlerAdapter

  3. HandlerAdapter根据handler配置执行对应的handler(也就是控制器里的方法Index)

  4. 执行控制器方法Index前,就会被TestInterceptor拦截器截获,执行preHandle方法,

  5. index方法调用后,在视图还未解析的时候,执行postHandle方法

  6. index方法执行完成后执行,即视图渲染结束后执行afterCompletion方法

image

posted @ 2021-10-22 16:03  语梦·添香  阅读(909)  评论(0编辑  收藏  举报