首先,我们需要创建一个拦截器器的类,并且需要继承自HandlerInterceptor这一父类,这里我们假设我们需要做一个校验功能的拦截器
创建完成之后,我们可以给该类加一个注解:@Component
,方便后续进行代码注入
我们就可以实现父类的方法了,下面我们来介绍三种方法
这里出现了一个新词,叫做目标方法,那么接下来,我们就来了解一下,什么是目标方法
想要灵活正确的使用拦截器,我们就需要知道,拦截器的使用需要有目标方法
和执行方法
要知道,我们程序猿的代码中会有很多形形色色的方法,我们的拦截器的作用,就是这些方法执行的前后进行校验以及执行相应的代码,那么我们就称这些方法为目标方法,而拦截器需要完成的任务就被称为执行方法
了解上面的知识过后,我们就可以理解上述三个方法的作用了,我们可以在上述三个方法中实现各自要完成的功能后,拦截器的功能也就基本实现了
可以看到,我们实现的各个拦截器的返回值都是布尔类型,这不正合了拦截器的字面含义吗,拦截拦截,如果拦截器校验失败,程序肯定就执行失败了,就不能继续执行下面的功能了,就会被拦截,如果拦截器校验成功则会被拦截器放行.
虽然我们已经成功的创建了一个拦截器,但是这样还不能让拦截器生效,我们还需要在项目中注册你的拦截器
现在,我们需要再次创建一个类,并且继承WebMvcConfigurer
这个父类,然后实现addInterceptors
这个方法
除此之外,我们还需要给当前类添加一个注解:@Configuration
接下来,将我们之前创建的拦截器注入进来
然后进行拦截器的注册,也就是将其当作参数传递给registry,这里的registry也就是addInterceptors中的参数
这样,我们也就可以在项目中正常使用拦截器了
想要正确的使用拦截器,我们还得了解一些其他的知识点
也就是registry.addInterceptor
的两个方法
.addPathPatterns()
的功能是添加实现拦截器的网络路径
.excludePathPatterns();
的功能是添加屏蔽拦截器的网络路径
这里给大家附上路径的使用方法:
拦截路径 | 含义 | 举例 |
---|---|---|
/* | ⼀级路径 | 能匹配/user,/book,/login,不能匹配/user/login |
/** | 任意级路径 | 能匹配/user,/user/login,/user/reg |
/book/* | /book下的⼀级路径 | 能匹配/book/addBook,不能匹配/book/addBook/1,/book |
/book/** | /book下的任意路径 | 能匹配/book,/book/addBook,/book/addBook/2不能匹配/user/login |