java - 如何从 Java Spring MVC 3.0 Webapp 流式传输文本响应

标签 java servlets spring-mvc

如何将文本输出流式传输到浏览器上的页面以显示可能需要大约 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/

相关文章:

java - 如何在点击警报后获得相同的JSP页面

Java Spring MVC + Jetty Websocket 不兼容的方法签名

java - Spring 安全: NoSuchBeanDefinitionException

java - 字符串的正确日期格式

java - PHP 与 Java 是否存在能耗差异?

java - 如何在 jar 归档中调用 perl 脚本?

java - 如何绘制形状

java - 在测试 servlet 时在我的浏览器输出中获取字符串

java - 自动生成 PDF 格式的内容 - Java

spring-mvc - 有没有办法在不返回字符串的情况下自定义 Spring MVC 使用的 ObjectMapper?