2014-01-27 59 views
0

我想獲得輸出首先作爲蘋果,然後香蕉一些時間間隔2秒和香蕉再次。 ..但是在頁面等待10secs(5 * 2secs)之後,我在網頁上獲得的實際輸出。我是servlets新手。試圖在網頁上打印一段時間的間隔,但它一直在等待和打印一次

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    try { 
     response.setContentType("text/html"); 
     PrintWriter pw = response.getWriter(); 
     pw.println("apple"); 
     pw.println("<br>"); 

     for(int i = 0 ; i < 5; i++){ 
      Thread.sleep(2000); 
      pw.println("banana"); 
      pw.println("<br>"); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

您無法知道瀏覽器是否會用部分內容更新頁面,或者等待閱讀所有內容。 –

+0

您需要禁用緩衝。 – SLaks

+0

如果在每次寫入後刷新輸出('pw.flush();'),該怎麼辦? –

回答

2

服務器代碼在服務器上運行獨佔地,您看到的輸出是運行servlet的結果。該代碼不在瀏覽器中運行。

0

您正在嘗試對servlet執行一些異步支持,但是您做錯了,(thread.sleep將休眠當前線程,並在刷新操作後寫入任何內容將導致IllegalStateException),則應使用新的servlet3。 0 api如果你想發送給客戶端的異步響應,我的意思是等待一段時間發送另一部分響應。你應該閱讀Servlet3.0(不知道是否可以使用以前的API來完成,但我敢肯定,這個工程與Servlet3.0異步支持)

http://docs.coreservlets.com/servlet-3.0-api/ \

異步詢問服務需要在網絡被啓用。 xml或使用@WebServlet註釋。

這tuto是一個很好的起點。 http://www.journaldev.com/2008/async-servlet-feature-of-servlet-3