Redis,一个基于内存的键值型NoSQL数据库
拦截器参数HttpServletRequest request
HttpServletResponse response (有这两个,可以使用原始ServletAPI)
Object handler (对反射技术中的Method对象进行了再包装)
ModelAndView modelAndView,和重定向有关
preHandle中返回 false,则控制器不再执行,前台得不到任何数据反馈,得到空白。
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String sq = request.getHeader("Content-Type");
System.out.println(sq);
return false;
}
前台发送请求后,后台这里只会打印:
application/json
前台收不到任何数据,也不会有报错
拦截器链
拦截器可以配置多个,形成链条
@Configuration
@ComponentScan("guet.controller")
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
@Autowired
private ProjectInterceptor PI;
@Autowired
private ProjectInterceptor2 PI2;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 进行拦截器配置, 在这里的配置顺序决定了 先执行哪个
registry.addInterceptor(PI).addPathPatterns("/users/*");
registry.addInterceptor(PI2).addPathPatterns("/users/*");
}
}
进去的时候先执行1,再执行2
出来的时候先执行2,再执行1
只要有一个return false了,postHandle一个都不会执行。
拦截器的底层就是AOP



