gpt4 book ai didi

java - Tomcat 不刷新响应缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:24 25 4
gpt4 key购买 nike

我在下面的 Tomcat 7 上测试了 HttpResponse#flushBufferPrintWriter#flush,但似乎响应忽略了它们而不是刷新了尽快通过网络发送内容。

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

PrintWriter pw = response.getWriter();
pw.println("say hi now");
pw.flush();
response.flushBuffer();
try {
Thread.sleep(5000);
} catch (Exception e) {
}
pw.println("say bye in 5 seconds");

}

}

延迟后,浏览器同时显示“hi”和“bye”。这是不当行为还是故意的?

@编辑

根据@Tomasz Nurkiewicz的建议,我用curl再次测试,问题解决了。似乎标准浏览器和 tcp/ip 监视器 从同一个 http 响应中打包小块内容 以将它们一起呈现。

@编辑 2

还观察到HttpResponse#flushBufferPrintWriter#flush都驱动Tomcat 7向客户端发送chunked data .

最佳答案

我刚刚遇到了同样的问题。要阻止浏览器等待页面完成加载后再进行任何渲染,您需要开始:

response.setContentType("text/html;charset=UTF-8");

关于java - Tomcat 不刷新响应缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9921242/

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