【问题标题】:Data is not pushed to the browser?数据不推送到浏览器?
【发布时间】:2013-03-09 13:40:30
【问题描述】:

我有一个带有 while (true) 的 JSP,其中数据被发送到浏览器。

while (true) {
    out.print("pushing some data to browser");
    out.flush();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
}

它大部分时间都可以工作,但很少会以 1 秒的间隔将数据发送到浏览器。

而不是排队,同时抛出所有数据。

【问题讨论】:

  • 所以你正在尝试使用某种计时器?
  • 你能显示一些更相关的代码吗?出了什么问题?
  • 你是什么trying to do
  • while (true) 永远不会停止,因此您的文档永远不会被渲染。
  • @RomanC 你当然是对的,这就是它不起作用的原因,但鉴于 OP 的评论,这 完全是错误的方法,修复它不会真正为 OP 试图完成的任务提供解决方案。这是经典的XYProblem

标签: java jsp


【解决方案1】:

尝试添加

response.setBufferSize(0);

在代码块的开头。默认情况下,响应总是被缓冲。您可以添加此行以禁用缓冲区。

【讨论】:

    【解决方案2】:

    罗马 C 是正确的,它不会像发布的那样编译。但如果你修复它,你会发现它在 Firefox 和 Chrome 中确实有效。 但是,IE 不同。它一直等到获得大量文本才开始渲染。

    IE needs some text here. zzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzz
    zzzzzz I guess this enough for IE to start to render now.
    <%
      int x = 0;
      while (x < 10) {
         out.print("pushing some data to browser");
         out.flush();
         try {
              Thread.sleep(1000);
         } catch (InterruptedException e) {
      }
      x++;
    }
    %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-15
      • 2010-12-29
      • 1970-01-01
      • 2017-04-10
      • 2021-07-12
      • 2020-01-14
      • 2016-04-15
      • 1970-01-01
      相关资源
      最近更新 更多