1、拦截器概念
【HandlerInterceptor接口与HandlerInterceptorAdapter实现类】
2、自定义拦截器
在springboot中如果我们想自定义一个拦截器,我们需要实现HandlerInterceptor接口,或者继承HandlerInterceptorAdapter类。
@Component
public class MyInterceptor implements HandlerInterceptor {
private static final Logger log = LoggerFactory.getLogger(MyInterceptor.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("---------------视图渲染之后的操作-------------------------0");
}
}
3、拦截器配置类
在配置拦截器配置类的配置时,我们需要继承WebMvcConfigurationSupport类;根据官方标注WebMvcConfigurerAdapter过时了,因为java8接口具有默认实现,然后想通过继承WebMvcConfigurationSupport实现。
@Configuration
public class WebAppConfig extends WebMvcConfigurationSupport{
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}