拦截器详解
什么是拦截器?
Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。
例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
spring boot使用拦截器步骤
-
按照Spring MVC的方式编写一个拦截类
创建一个类实现HandlerInterceptor接口
HandlerInterceptor接口有3个方法,这里只是简单的实现一下使用拦截器的步骤。preHandle() 方法:该方法会在控制器(Handler)方法前执行,其返回值表示是否中断后续操作。当其返回值为true时,表示继续向下执行;当其返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。
postHandle()方法:该方法会在控制器方法调用之后,且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。
afterCompletion()方法:该方法会在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。
-
编写一个配置类继承WebMvcConfigurationSupport方法,然后注册拦截器。
因为此类是配置类所以需要添加@Configuration注解。
注册拦截器的方法中需要new拦截类,然后利用addInterceptors方法点出添加需要拦截的类和不需要拦截的类,addPathPatterns和excludePathPatterns。
WebMvcConfigurationSupport的addInterceptors方法作用是添加拦截器,然后使用InterceptorRegistry点出addInterceptor注册拦截器。 -
运行一个被拦截的方法,如果出现了preHandle方法中添加的语句,就说明添加拦截器成功了。