通常拦截器类可以通过两种方式来定义:
1.实现HandlerInterceptor接口或继承HandlerInterceptor接口的实现类(如HandlerInterceptorAdapter)来定义
2.通过实现WebRequestInterceptor接口,或继承WebRequestInterceptor接口的实现类来定义。
以实现HandlerInterceptor接口方式为例
a.preHandle():在控制器方法前执行,其返回值表示是否中断后续操作。当其返回值为true时,表示继续向下执行,当其 返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。
b.postHandle():在控制器方法调用之后解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。
c.afterCompletion():在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等
自定义注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Login {
/**
* 登录校验
* @return true 校验 false 不校验
*/
boolean value() default true;
}
自定义拦截器处理规则
@Slf4j
@Component
public class UserLoginInterceptor implements HandlerInterceptor {