作了個小功能,但願前臺能夠看到後臺的實時處理進度,首先想到的就是可以在頁面像後臺打印日誌同樣的輸出,前端
以下代碼:瀏覽器
- PrintWriter out = response.getWriter();
- while(true){
- try {
- out.print("輸出內容");
- out.flush();
- Thread.sleep(1000);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
在個人想象中,response會每隔一秒就向前端輸出一條內容,前端像打印日誌同樣實時顯示。可實際狀況是這些內容在請求結束後是同時被輸出到頁面的。tomcat
網上查了一下,大體是說這樣輸出沒給瀏覽器響應的機會,只有等方法結束後瀏覽器才能響應讀取到數據。貌似tomcat7以後的能夠支持,行不通啊。併發
後來發現,若是向頁面輸出js腳本的話,瀏覽器是能夠實時讀取到的,見下面代碼:spa
out.println("<script>");日誌
out.println("document.write('<div>" + message + "</div>');");ip
out.println("</script>");資源
out.flush();get
這樣作,若是輸出內容不少的話貌似會使頁面內容過多而消耗一些資源,不事後臺的系統沒什麼併發,內容也不是不少,將就了。it