与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。
在 Spring MVC 框架中定义一个拦截器需要对拦截器进行定义和配置,定义一个拦截器可以通过两种方式:一种是通过实现 HandlerInterceptor 接口或继承 HandlerInterceptor 接口的实现类来定义;另一种是通过实现 WebRequestInterceptor 接口或继承 WebRequestInterceptor 接口的实现类来定义。
l 实现 HandlerInterceptor 接口
preHandle 方法:该方法在控制器的处理请求方法前执行,其返回值表示是否中断后续操作,返回 true 表示继续向下执行,返回 false 表示中断后续操作。
postHandle 方法:该方法在控制器的处理请求方法调用之后、解析视图之前执行,可以通过此方法对请求域中的模型和视图做进一步的修改。
afterCompletion 方法:该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此方法实现一些资源清理、记录日志信息等工作
1.<!-- 配置拦截器 --> 2.<mvc:interceptors> 3.<!-- 配置一个全局拦截器,拦截所有请求 --> 4.<bean class="interceptor.TestInterceptor" /> 5.<mvc:interceptor> 6.<!-- 配置拦截器作用的路径 --> 7.<mvc:mapping path="/**" /> 8.<!-- 配置不需要拦截作用的路径 --> 9.<mvc:exclude-mapping path="" /> 10.<!-- 定义<mvc:interceptor>元素中,表示匹配指定路径的请求才进行拦截 --> 11.<bean class="interceptor.Interceptor1" /> 12.</mvc:interceptor> 13.</mvc:interceptors>