我知道標題有點混亂。我會形容我的任務:如何中斷加載網頁?
現在我正在寫一個網頁,這讓我下載一些數據或做一些其他的東西。前端是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();?
謝謝你們!
嗨Vovka!感謝您的回答!我們沒有「退貨」,剩餘的代碼也被執行。所以我猜「在ServletOutputStream上調用flush()提交響應」是正確的答案。由於響應已經提交,其餘的代碼對頁面沒有影響,對吧?對於第二個問題。我想要的只是具有相同的行爲,提交響應並停止刷新並停止對頁面的影響。但我的問題是,在不下載任何內容的情況下提交響應的最簡單方法是什麼?謝謝! –
您是否在servlet「doGet」或「doPost」方法中工作?處理完成後,您的方法完成。所以你必須打電話給「返回」。 http://stackoverflow.com/tags/servlets/info – Vovka
坦率地說,我只允許編輯在其內部處理不同的請求的「過程()」的方法,所述代碼。在正常情況下,處理完所有請求後,整個頁面將被刷新。但我發現,「下載」,沒有刷新頁面,甚至錯誤日誌中存在:錯誤調用continueProcess: java.lang.IllegalStateException:響應一直致力於無法前進了。我不關心這個錯誤,但只是想要相同的行爲:提交響應,停止刷新,而無需下載任何東西。 –