@Slf4j
public class RequestCostInterceptor implements HandlerInterceptor {
private static final String START_TIME = "startTime";
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o)
throws Exception {
long startTime = System.currentTimeMillis();
httpServletRequest.setAttribute(START_TIME, startTime);
System.err.println(httpServletRequest.getRequestURL());
log.info("startTime:{}", startTime);
log.info("getRequestURL:{}", httpServletRequest.getRequestURL());
log.info("getQueryString:{}", httpServletRequest.getQueryString());
log.info("getRequestURI:{}", httpServletRequest.getRequestURI());
log.info("getContextPath:{}", httpServletRequest.getContextPath());
log.info("getServletPath:{}", httpServletRequest.getServletPath());
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o,
ModelAndView modelAndView) throws Exception {
long startTime = (Long) httpServletRequest.getAttribute(START_TIME);
long endTime = System.currentTimeMillis();
long executeTime = endTime - startTime;
log.info("executeTime:{}", executeTime);
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
Object o, Exception e) throws Exception {
}
}
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(final InterceptorRegistry registry) {
registry.addInterceptor(new RequestCostInterceptor()).addPathPatterns("/**");
}
}