如何將文本輸出流式傳輸到瀏覽器中的頁面以顯示可能需要大約15-20秒的操作進度?我試過直接寫入HttpServletResponse
的輸出流,但用戶仍然看到完整輸出後整個過程完成。如何從Java Spring MVC 3.0 Web應用流文本響應
這是我到目前爲止已經試過
@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();
}
您是否在每次發送數據卡片後嘗試刷新輸出流? – Luciano 2012-07-05 14:49:31
@Luciano我已經添加了我到現在爲止所嘗試的問題。當我從Chrome查看頁面時,這不起作用 – Danish 2012-07-05 14:59:13
我認爲你最好的選擇是一種不同的方法:在JavaScript中使用計時器,每隔1秒(或半秒)從/測試數據,使用ajax和/測試會返回到被調用點之前未發送的內容。 – Luciano 2012-07-05 15:04:02