spring mvc拦截器,实现统计http请求的后台运行时间

使用两种方式,实现拦截http请求的后台运行时间。

废话不多说直接上代码

/**
 * 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 配置

<mvc:interceptors>
		<!-- Http请求统计 -->
		<mvc:interceptor>
			<mvc:mapping path="/**" />
			<bean class="HttpRquestTimeInterceptor" ></bean>
		</mvc:interceptor>
	</mvc:interceptors>

如果你有新的办法,请赐教

猜你喜欢

转载自my.oschina.net/u/1019754/blog/2987074