gpt4 book ai didi

java - HttpServletResponseWrapper捕获java web中静态资源的响应?

转载 作者:行者123 更新时间:2023-11-30 06:13:37 29 4
gpt4 key购买 nike

我想测量 javaweb servlet 过滤器中响应的“内容长度”

所以我创建了一个类,它扩展HttpServletResponseWrapper覆盖方法“getOutputStream”“getWriter” .

除了静态资源的响应,比如请求.jpg文件之外,它的效果很好。

<小时/>

我使用 Tomcat 8.5 进行研究,代码如下:

public class TestFilter implements Filter {

@Override
public void destroy() {
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
TestResponse tRes = new TestResponse((HttpServletResponse) res) ;

System.out.println(request.getMethod() +" "+ request.getRequestURI());
chain.doFilter(req, tRes);
}

@Override
public void init(FilterConfig config) throws ServletException {
}
}
<小时/>
public class TestResponse extends HttpServletResponseWrapper {


public TestResponse(HttpServletResponse response) {
super(response);
}

@Override
public ServletOutputStream getOutputStream() throws IOException {
System.out.println("in getOutputStream...");
return super.getOutputStream();
}

@Override
public PrintWriter getWriter() throws IOException {
System.out.println("in getWriter...");
return super.getWriter();
}

@Override
public void setStatus(int sc) {
System.out.println("in setStatus...");
super.setStatus(sc);
}

@Override
public void setHeader(String name, String value) {
System.out.println("in setHeader...");
super.setHeader(name, value);
}

@Override
public void setContentType(String type) {
System.out.println("in setContentType...");
super.setContentType(type);
}
}

测试结果如下:

GET  /testWeb/
in setContentType...
in getWriter...
GET /testWeb/spider.jpg
in setStatus...
in setHeader...
<小时/>

所以我想知道是否可以使用HttpServletResponseWrapper捕获静态资源的响应?

如果可以的话,如何实现?

最佳答案

使用HttpServletResponseWrapper捕获静态资源就可以了。问题在于缓存。

关于java - HttpServletResponseWrapper捕获java web中静态资源的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49725022/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com