使用两种方式,实现拦截http请求的后台运行时间。mvc
废话很少说直接上代码app
/** * Http请求时间统计 * 拦截全部请求 */ public class HttpRquestTimeInterceptor extends HandlerInterceptorAdapter { ThreadLocal<Long> localThread = new ThreadLocal<Long>(); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //线程方式 localThread.set(System.currentTimeMillis()); //request方式 request.setAttribute("_startTime", System.currentTimeMillis()); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { Long endTime = System.currentTimeMillis(); System.out.println(request.getServletPath() + " >> http请求结束线程:" + (endTime - localThread.get())); Long startTime = (Long)request.getAttribute("_startTime"); System.out.println(request.getServletPath() + " >> http请求结束:" + (endTime - startTime)); } }
Spring 配置ide
<mvc:interceptors> <!-- Http请求统计 --> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="HttpRquestTimeInterceptor" ></bean> </mvc:interceptor> </mvc:interceptors>
若是你有新的办法,请赐教线程