Bla*_*man 2 java performance spring servlets spring-mvc
我想知道渲染一个特定页面需要多长时间,Spring MVC框架中我可以启动和停止计时器的各个部分在哪里?
顺便说一句,我应该使用什么java类来获得最准确的时间(以毫秒为单位)?
Boz*_*zho 10
创建一个javax.servlet.Filter并在web.xml中将其映射到所有其他过滤器之上.在doFilter(..)你的coutner代码的地方chain.doFilter(request, response)
使用System.currentTimeMillis,或System.nanoTime()(更准确)或perf4j.
这将显示服务器生成响应所需的时间.如果您想在客户端看到页面的完整加载时间,请在Firefox上安装FireBug.
关于如何Filter运作的说明.请求进来,并作为参数传递给传递第一过滤器中的链.现在过滤器可能决定继续执行,或者停止执行.如果它选择继续,它会调用.chain.doFilter(..).现在,对于该资源的所有已定义过滤器也会发生相同的情况,并且最终流到达目标Servlet(在本例中为 - DispatcherServlet).当doGet(..)/ doPost(..)方法完成时,程序流在逻辑上返回到调用者 - 即链中的最后一个过滤器.当它完成时 - 程序流程返回到上面的程序流程,直到它们到达已调用的第一个过滤器chain.doFilter(..).这是您进行计时计算的行.当第一个过滤器返回时,流程将转到servlet容器内部,很快响应就会发送到浏览器.所以,你的代码将是:
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain) {
long start = System.nanoTime();
chain.doFilter(request, response);
long end = System.nanoTime();
// log end-start
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2859 次 |
| 最近记录: |