SpringMVC拦截器

SpringMVC拦截器

 

一.拦截器:Interceptor

在SpringMVC中,可以使用“拦截器”组件,使得所配置的若干个请求路径都会被要求先执行拦截器中的代码,再执行控制器中处理请求的代码,并且,拦截器具有“阻止”和“放行”的权力,如果拦截器选择执行“阻止”,则原本应该执行的控制器中的代码将不会被执行。

注意:使用拦截器的目的不一定是要将某些请求“阻止”,只要是多个请求都需要在处理之前或之后执行相同的代码,就可以使用拦截器!

 

第一步:自定义类,实现HandleInterceptor接口,并重写preHandle方法,例如:

SpringMVC拦截器

重写的三个方法中:preHandle/postHandle/afterCompletion,preHandle使用频率最高.

 

第二步:每个拦截器都必须经过配置之后才可以生效,关于配置,需要自定义类,添加@Configuration注解,实现WebMvcConfigurer接口,重写其中的addInterceptors()方法,例如:

SpringMVC拦截器

然后,在addInterceptor()方法中配置拦截器,例如:

SpringMVC拦截器

 

二.使用拦截器

1.拦截器的3个方法:

  • preHandle():在处理请求的控制器之前执行的方法,是真正具有“拦截”意义的方法,该方法返回true表示“放行”,返回false表示“阻止”;

  • postHandle():在控制器处理完请求之后执行的方法;

  • afterCompletion():在SpringMVC框架处理完请求,临近向客户端响应之前执行的方法。

2.拦截器的配置

先添加"黑名单",再添加"白名单"

SpringMVC拦截器