1.实现HandlerInterceptor的接口
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 自己编写的过滤器
*/
public class MyInterceptor implements HandlerInterceptor {
/**
* preHandle表示在请求之前进行操作
* 如果返回的是False表示请求结束
* 如果返回的是True表示进行发送请求
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return false;
}
/**
* 只用再perHandler返回为True的时候才能进行这个步骤
* 是在controller之后进行的但是在视图渲染之前执行的,是对ModelAndView数据进行操作
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/**
* 只用再preHandler为True才能进行这个步骤
* 请求结束之后,视图渲染之后执行,主要是进行资源的清理工作
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2.再配置类里面进行注册(配置类要实现WebMvcConfigurer)
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
/**
* 重写注册拦截器类
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()) //添加拦截器
.addPathPatterns("/**") //添加拦截路径
.excludePathPatterns("/hello"); //不拦截的路径
}
}