如何将文本输出流式传输到浏览器上的页面以显示可能需要大约 15 到 20 秒的操作的进度?我已尝试直接写入 HttpServletResponse
的输出流,但在整个过程完成后用户仍然看到完整的输出。
这是我目前尝试过的
@RequestMapping(value = "/test")
public void test(HttpServletResponse response)
throws IOException, InterruptedException {
response.getOutputStream().println("Hello");
response.getOutputStream().flush();
Thread.sleep(2000);
response.getOutputStream().println("How");
response.getOutputStream().flush();
Thread.sleep(2000);
response.getOutputStream().println("are");
response.getOutputStream().flush();
Thread.sleep(2000);
response.getOutputStream().println("you");
response.getOutputStream().flush();
}
最佳答案
我不是 Spring MVC 专家,但我认为你会做一些事情,比如发送一个“已接受”的 202 响应代码,这表明服务器已经收到请求并且将要进行一些异步处理。通常,服务器会提供一个 URL 以允许客户端发出有关操作状态的请求。您正在尝试做的事情违反了服务器/客户端关系工作的通常方式。客户端调用服务器,服务器响应,然后关闭连接。您在什么情况下尝试这样做以及出于什么原因?也许我可以提供更多见解或想出另一种方法?
关于java - 如何从 Java Spring MVC 3.0 Webapp 流式传输文本响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346789/