首先说一下使用WebRequestInterceptor的拦截器。他是属于spring的而HandlerInterceptor是servlet的。两者实现的方法基本一样,但是使用HandlerInterceptor实现的拦截器中的preHandle可以控制之后的逻辑,在这可以做的操作更多。
实现HandlerInterceptor并重写方法
@Component
public class ValidInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//可以使用request获取参数,或者使用response设置返回的配置
System.out.println("请求执行之前");
return true; //这个方法是我们的方法执行之前的拦截 返回true代表可以进入执行
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("请求执行之后"); //这里是方法执行结束之后才执行
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("请求已经返回,视图渲染");
}
}
将我们的拦截器注册
@Configuration
public class WebConfig implements WebMvcConfigurer { //实现了WebMvcConfigurer并重写addInterceptors方法注册拦截器
@Autowired
ValidInterceptor validInterceptor; //引入写好的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(validInterceptor); //加入拦截器 这里可以对拦截器走一些配置
}
}
简单的拦截器已经完成了,在继续深入的配置看自己的业务需求