Spring 拦截器 学习笔记

owo

  • Spring Boot 定义了HandlerInterceptor接口来实现自定义拦截器的功能
  • HandlerInterceptor接口定义了preHandle、postHandle、afterCompletion三种方法
    • 前端请求经过preHandle逐层调入控制器(从浅到深)
    • 控制器的响应依次调用postHandle方法返回(从深到浅)
    • 页面渲染完毕之后依次调用afterCompletion方法(从深到浅)

拦截器的定义

就是一个实现了 HandlerInterceptor 接口的类

com.hxy.helloworld/interceptor/LoginInterceptor.java

1
2
3
4
5
6
7
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{
System.out.println("LoginInterceptor");
return true;
}
}

拦截器的注册

  • 只定义没用,需要配置里注册

  • com.hxy.helloworld/config/Webconfig.java

  • 可以指定拦截路径

1
2
3
4
5
6
7
8
9
@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor());
//registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");
}
}
img_show