第一步: 定义自己的Interceptor
实现HandlerInterceptor 接口,或者是继承实现了HandlerInterceptor 接口的类,例如HandlerInterceptorAdapter;
@Slf4j
public class HttpInterceptor implements HandlerInterceptor {
private final String START_TIME = "start_time" ;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 请求之前 记录请求时候的时间
long start_time = System.currentTimeMillis();
request.setAttribute(START_TIME,start_time);
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 访问结束执行的方法
long end_time = System.currentTimeMillis();
long start_time = (long) request.getAttribute(START_TIME);
String url = request.getRequestURL().toString();
log.info("结束访问url:{},所用时间:{}毫秒",url,end_time-start_time);
}
}
第二步: 将自己的Interceptor 配置给spring
@Configuration
public class MyAdapter implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration interceptor = registry.addInterceptor(new HttpInterceptor());
interceptor.excludePathPatterns("/**/fonts/*","/**/*.css","/**/*.js","/**/*.png","/**/*.gif",
"/**/*.jpg","/**/*.jpeg");
interceptor.addPathPatterns("/**");
}
}
以上,spring就会对静态资源以外的请求进行拦截..