我已经搜索并看到了关于这个问题的几个答案,但仍然不知道它是如何可能的……
我被要求实现一个过滤器,在响应头中返回HTTP请求的响应时间,例如。response-header: XX,以便由web分析客户端库收集。
下面是我的代码:
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResp = (HttpServletResponse)response;
long startTime = System.nanoTime();
chain.doFilter(request, response);
long endTime = System.nanoTime();
httpResp.addHeader("response-time",endTime-startTime);
}此外,我还尝试使用HttpServletResponseWrapper
我设法使用OutputStream修改了响应,但没有成功设置响应头。
谢谢,杰伊
发布于 2015-12-04 18:01:38
扩展包装器实用程序类,如HttpServletResponseWrapper (使用自定义输出流),并将其传递给链doFilter()方法。如果不这样做,则在chain doFilter()返回后,原始(未包装的)响应将消失,并且您将没有机会修改它。
在这里你可以找到一个例子:Looking for an example for inserting content into the response using a servlet filter
https://stackoverflow.com/questions/34085468
复制相似问题