在java过滤器中计算响应时间 [英] calculating response time in java filter

查看:132
本文介绍了在java过滤器中计算响应时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道 java 过滤器中 doFilter() 方法的生命周期.我想知道我是否要在方法开始时在请求中设置开始时间,有没有办法或地方可以在方法中设置停止时间,这会给我从请求开始到的总经过时间给出响应的时间?我见过一个带有 finally 块的 doFilter() 方法,我想知道在那里设置响应中的停止时间是否合适?

I don't know the lifecycle of the doFilter() method in a java filter. I am wondering if I were to set a start time in the request at the beginning of the method, is there a way or place to set a stop time in the method that would give me the total elapsed time from the beginning of the request to the time the response is given? I've seen a doFilter() method with a finally block in it, and I was wondering if setting a stop time in the response in there would be appropriate?

推荐答案

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class ResponseTimerFilter implements Filter {
  protected FilterConfig config;

  public void init(FilterConfig config) throws ServletException {
    this.config = config;
  }

  public void destroy() {
  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws ServletException, IOException {
    long startTime = System.currentTimeMillis();
    chain.doFilter(request, response);
    long elapsed = System.currentTimeMillis() - startTime;
    String name = "servlet";
    if (request instanceof HttpServletRequest) {
      name = ((HttpServletRequest) request).getRequestURI();
    }

    config.getServletContext().log(name + " took " + elapsed + " ms");
  }
}

web.xml

<filter>
  <filter-name>Timing Filter</filter-name>
  <filter-class>com.omh.filters.ResponseTimerFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>Timing Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

这篇关于在java过滤器中计算响应时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆