我已经搜索并看到了关于这个问题的几个答案,但仍然不知道它是如何可能的......
我被要求在响应头中实现一个返回HTTP请求响应时间的过滤器,例如。 response-header:XX 以便通过网站分析客户端库收集。
这是我的代码:
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修改响应,但没有成功设置响应头。
谢谢,杰
答案 0 :(得分:0)
扩展包装器实用程序类,如HttpServletResponseWrapper(使用自定义输出流),并将其传递给链式doFilter()方法。如果你不这样做,在链doFilter()返回后,原始(未包装)响应将消失,你将没有机会修改它。
您可以在此处找到一个示例:Looking for an example for inserting content into the response using a servlet filter