前端发送数据的整个过程
首先,前端web页面发送请求后,会被tomcat服务器拦截下来,请求分为静态和动态,静态的包括html,css,js,image等,那如果是动态的就会交给过滤器,然后经过过滤后交给Spring,然后再交给Controller进行处理,

拦截器有什么用呢?
比如某人想通过Controller操作一个行为,但是这个行为只开放给管理员,所以我们就有必要在Controller控制器前面操作一些行为,既然在前面操作了一些东西,那么也再Controller后面也进行一个操作行为吧,由此就有了拦截器,拦截器就是作用在这个环节的,这几个???就是拦截器作用的地方

拦截器概念:

拦截器与过滤器的区别:

拦截器入门案例:

首先建议把拦截器所在包放在Controller包下,

我们在这个包下创建一个类用来做拦截器,假如这个类名就叫做ProjectInterceptor,
怎么做拦截器呢?我们创建好这个类后,实现一个接口,这个接口叫做:HandlerInterceptor,
实现后发现一个方法都不需要实现,我们去覆盖它的三个方法,

覆盖这三个方法

覆盖后:

注意,这个拦截器是服务于SpringMvc的,所以要受SpringMvc控制,所以一定要在类上面加注解:@compnent,刚好这个bean在Controller下面,SpringMvc刚好可以扫描它
拦截器写好了怎么用呢?
和之前写SpringMvcSupport一样,在SpringMvcSupport里写,之前写这个是为了让SpringMvc对那些静态资源放行,现在我们还在这个类里写,这个类要继承WebMvcConfigurationSupport

注意上次那个是覆盖方法addResourceHandlers,

这次我们覆盖的是addInterceptors

别忘了注入拦截器
@Autowired
private ProjectInterceptor projectInterceptor

来看看效果:
我们拦截器覆盖了三个方法对吧

然后我们看看效果:

可以看出,这个三个方法分别在拦截器前,后,后,执行了,并且after那个方法是在post方法的后面
最后一个方法是可变参数,也就是说可以写多个

拦截器第一个方法里如果return false,就会终止原始操作


小结:

定义配置类:

这一步还是在配置类里:

也可以使用简化配置:使用WebMvcConfigurer,让SpringMvc去实现这个类,然后去覆盖addInterceptors这个方法,

依然可用:

小结简化配置:

拦截器执行流程:

如果return false直接跳过pass掉