2015-09-26 31 views
1

我知道標題有點混亂。我會形容我的任務:如何中斷加載網頁?

現在我正在寫一個網頁,這讓我下載一些數據或做一些其他的東西。前端是jsp,後端是java。所以每當我在這個頁面上做些什麼(例如對數據進行排序或者下載數據)時,就會向java發送請求,並且在數據處理之後,刷新並重新加載.jsp頁面(原因應該是刷新)。但我只是發現,如果我下載的數據用下面的代碼,刷新將被中斷:

OutputStream out = response.getOutputStream(); // response is HttpServletResponse 
doSomeOutput(out); // Just write something into OutputStream 

out.flush(); // **PAY ATTENTION**. The refreshing is interrupted here! 
out.close(); 

當我調試,網頁被加載保持到第三行。然後頁面不刷新,數據下載。

我希望你能明白我在說什麼:(

所以現在我有2個問題:1,我怎樣才能讓程序繼續工作了out.flush後();? 2.我在任務我需要相同的行爲(該過程被中斷),在其他一些模塊,但沒有什麼是下載。所以,我怎麼能中斷過程中,除了了out.flush();?

謝謝你們!

回答

0

1) https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html#getOutputStream%28%29 「關於ServletOutputStream的調用平齊()提交的響應」

,因爲我明白這一點:活躍的刷新停止,因爲我們得到了數據的主要部分。但即使在提交之後,您也可以發送數據。所以你可以在沖洗後繼續工作。 設置標題也會同時發送。

2)PLS解釋更徹底。致電「退貨」,或關閉?

+0

嗨Vovka!感謝您的回答!我們沒有「退貨」,剩餘的代碼也被執行。所以我猜「在ServletOutputStream上調用flush()提交響應」是正確的答案。由於響應已經提交,其餘的代碼對頁面沒有影響,對吧?對於第二個問題。我想要的只是具有相同的行爲,提交響應並停止刷新並停止對頁面的影響。但我的問題是,在不下載任何內容的情況下提交響應的最簡單方法是什麼?謝謝! –

+0

您是否在servlet「doGet」或「doPost」方法中工作?處理完成後,您的方法完成。所以你必須打電話給「返回」。 http://stackoverflow.com/tags/servlets/info – Vovka

+0

坦率地說,我只允許編輯在其內部處理不同的請求的「過程()」的方法,所述代碼。在正常情況下,處理完所有請求後,整個頁面將被刷新。但我發現,「下載」,沒有刷新頁面,甚至錯誤日誌中存在:錯誤調用continueProcess: java.lang.IllegalStateException:響應一直致力於無法前進了。我不關心這個錯誤,但只是想要相同的行爲:提交響應,停止刷新,而無需下載任何東西。 –