在每个项目中,拦截器都是我们经常会去使用的东西,基本上任一一个项目都缺不了拦截器的使用。
如日志记录、登录验证,session验证等,都需要拦截器来拦截URL请求,那springboot中的拦截器是如何去使用的呢,我们一起试试。
首先,我们去创建一个名为LoginInterceptor的拦截器,来过滤请求,我们创建的拦截器要去实现HandlerInterceptor接口,然后定义我们的方法
public class LoginInterceptor implements HandlerInterceptor {
private static final Logger log = LoggerFactory.getLogger(LoginInterceptor.class);
/**
-
进入controller层之前拦截请求
-
@param httpServletRequest
-
@param httpServletResponse
-
@param o
-
@return
-
@throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {log.info("---------------------开始进入请求地址拦截----------------------------");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
log.info(“处理请求完成后视图渲染之前的处理操作”);
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
log.info(“视图渲染之后的操作”);
}
这里,我们不去写过多的业务逻辑,只需要知道拦截器是否生效即可
接下来我们需要将LoginInterceptor拦截器添加到SpringBoot的配置中,让SpringBoot项目有这么一个拦截器存在,我们新创建一个WebAppConfig,
将拦截器的配置以及拦截路径配置好
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter{
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**");
}
}
这个方法将我们之前写好的登录拦截器添加到了配置中去,接下来,我们去发送请求,观察控制台
发现请求确实被拦截器拦截成功了,然后我们就可以根据业务需要去在拦截器中写我们想要的方法了