本篇主要介绍Spring Boot的统一功能处理中的拦截器。
目录
一、拦截器的基本使用
在一般的学校或者社区门口,通常会安排几个保安大爷来进行身份验证,只有身份符合要求的人才会被放行,否则则会被大爷拦住,而拦截器就像我们程序的保安大爷,只有通过我们自己定义的拦截规则,请求才能被放行到目标接口上。
下面我们来看看如何在Spring Boot中使用拦截器
在项目中设置拦截,我们需要先自己定义一些拦截器,里面包含一些具体的拦截规则,定义拦截器的代码如下:
(1)首先创建一个拦截类,通常以“Interceptor”作为类名的后半部分,这里我们定义一个LoginInterceptor类,意为与登录相关的拦截器,然后让该类实现一个HandlerInterceptor接口,具体如下:
@Component
public class LoginInterceptor implements HandlerInterceptor {
}
(2)重写三个方法:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
其中preHandle为在目标方法执行前要执行的方法,其返回值如果为true,则会被放行去执行目标方法,为false则拦截,我们可以在这个方法里根据需求定义拦截规则。postHandle为目标方法执行后要执行的方法。afterCompletion为最后视图渲染完后最后执行的方法(由于现在都是前后端分离了,后端一般不处理视图,因此这个方法不需要过多了解)。
定义好拦截器后我们还需要配置拦截器,具体配置流程如下:
(1)创建配置类(一般以Config结尾,这里以为WebConfig),实现WebMvcConfigurer接口:
public class WebConfig implements WebMvcConfigurer {
}
(2)然后重写addInterceptor方法
@Override
public void addInterceptors(InterceptorRegistry registry) {
}
(3)然后我们在里面添加我们需要配置的拦截器,具体如下: