前臺進度條,實時監測後臺數據處理進度

作了個小功能,但願前臺能夠看到後臺的實時處理進度,首先想到的就是可以在頁面像後臺打印日誌同樣的輸出,前端

以下代碼:瀏覽器

  1. PrintWriter out = response.getWriter();
  2. while(true){
  3. try {
  4. out.print("輸出內容");
  5. out.flush();
  6. Thread.sleep(1000);
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. }
  10. }

在個人想象中,response會每隔一秒就向前端輸出一條內容,前端像打印日誌同樣實時顯示。可實際狀況是這些內容在請求結束後是同時被輸出到頁面的。tomcat

網上查了一下,大體是說這樣輸出沒給瀏覽器響應的機會,只有等方法結束後瀏覽器才能響應讀取到數據。貌似tomcat7以後的能夠支持,行不通啊。併發

後來發現,若是向頁面輸出js腳本的話,瀏覽器是能夠實時讀取到的,見下面代碼:spa

out.println("<script>");日誌

out.println("document.write('<div>" + message + "</div>');");ip

out.println("</script>");資源

out.flush();get

這樣作,若是輸出內容不少的話貌似會使頁面內容過多而消耗一些資源,不事後臺的系統沒什麼併發,內容也不是不少,將就了。it

相關文章
相關標籤/搜索