一、简介
SpringMVC的处理器拦截类似于servlet开发中的过滤器Filter,用于对请求进行拦截处理。拦截器是基于SpringAOP实现的,它是AOP编程思想的典型应用。
二、常见应用场景
- 权限检验:检测请求是否具有登录权限,如果没有直接返回登录页面。
- 性能监控:用请求处理前和请求处理后的时间差计算整个请求相应完成所消耗的时间。
- 日志记录:记录请求信息的日志,以便进行信息监控、信息统计等。
三、使用方法
SpringMVC实现拦截的功能,主要有两个途径,第一种实现是实现HandleIntercepter接口(在Spring框架中,还提供了另外一个接口和抽象类实现了对HandleIntercepter接口的功能拓展,分别为:AsyncHandlerInterceptor和 HandlerInterceptorAdapter) ,第二种是实现WebRequestIntercepter接口。
A,HandlerIntercepter接口详解:
在接口中定义了3个方法,分别为:preHandle(),postHandle和afterCompletion(),通过复写这3个方法可以实现用户的请求进行拦截处理。AsyncHandlerInterceptor接口,其在继承HandlerInterceptor接口的同时,又声明了一个新的方法afterConcurrentHandlingStarted();而HandlerInterceptorAdapter抽象类,则是更进一步,在其继承AsyncHandlerInterceptor接口的同时,又复写了preHandle方法。因此,AsyncHandlerInterceptor更像是一个过渡的接口。
在实际应用中,咱们一般都是通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类,复写preHandle()、postHandle()和afterCompletion()这 3 个方法来对用户的请求进行拦截处理的。
B,WebRequ