SpringMVC拦截器
SpringMVC拦截器
一.拦截器:Interceptor
在SpringMVC中,可以使用“拦截器”组件,使得所配置的若干个请求路径都会被要求先执行拦截器中的代码,再执行控制器中处理请求的代码,并且,拦截器具有“阻止”和“放行”的权力,如果拦截器选择执行“阻止”,则原本应该执行的控制器中的代码将不会被执行。
注意:使用拦截器的目的不一定是要将某些请求“阻止”,只要是多个请求都需要在处理之前或之后执行相同的代码,就可以使用拦截器!
第一步:自定义类,实现HandleInterceptor接口,并重写preHandle方法,例如:
重写的三个方法中:preHandle/postHandle/afterCompletion,preHandle使用频率最高.
第二步:每个拦截器都必须经过配置之后才可以生效,关于配置,需要自定义类,添加@Configuration
注解,实现WebMvcConfigurer
接口,重写其中的addInterceptors()
方法,例如:
然后,在addInterceptor()
方法中配置拦截器,例如:
二.使用拦截器
1.拦截器的3个方法:
-
preHandle()
:在处理请求的控制器之前执行的方法,是真正具有“拦截”意义的方法,该方法返回true
表示“放行”,返回false
表示“阻止”; -
postHandle()
:在控制器处理完请求之后执行的方法; -
afterCompletion()
:在SpringMVC框架处理完请求,临近向客户端响应之前执行的方法。
2.拦截器的配置
先添加"黑名单",再添加"白名单"