2013-04-30 65 views
2

我有一個index.html我有一個表單。當我按提交表單向我的servlet發送POST請求時。這個servlet做了一些沉重的事情,然後轉發給一個jsp。我想要的是當我按下提交時,顯示一個加載器。 我知道如何通過javascript(preventDefault等)來做到這一點。我不想那樣。這可以通過servlet完成嗎?我試圖輸出一個只包含加載器的「頁面」,然後執行一些繁重的工作,最後轉發給一個jsp。這沒有用。由於某些原因,它甚至沒有離開index.html,只是一直呆在那裏,直到servlet完成,最後我被轉發到jsp。顯示加載器而等待servlet轉發到下一頁

謝謝您的幫助

+0

格式的問題,所以,這將是更具可讀性。 – 2013-04-30 13:23:41

+1

你需要一個進度條..只有當你使用Ajax進行POST時纔會發生這種情況。否則,當servlet正在處理時,瀏覽器不會執行任何動畫。 – 2013-04-30 13:27:25

+1

請參閱:http://www.onjava.com/pub/a/onjava/2003/06/11/jsp_progressbars.html – 2013-04-30 13:30:13

回答

2

這隻能使用AJAX來完成。

所以,點擊提交按鈕,顯示加載圖像,並對servlet進行ajax調用。所以,當servlet將被處理時,加載圖像將被顯示。 Uppon從ajax調用返回,您可以使用JavaScript來執行您需要的任何操作(將用戶轉發到另一頁/顯示錯誤..等)。

我強烈建議你看看JQuery Ajax(這是我用過的最簡單而有效的腳本)

$.ajax({ 
    type: 'POST', 
    url: '/myServlet', 
    data: { 
     name: $('#name').val() 
    }, 
    beforeSend:function(){ 
     // this is where we append a loading image 
    }, 
    success:function(data){ 
     // successful request; do something with the data    
    }, 
    error:function(){ 
     // failed request; give feedback to user 
    } 
}); 
+0

如果在顯示加載圖像時按下刷新按鈕,該怎麼辦?我的servlet中的代碼將被重新加載? – anonymous 2013-07-07 17:20:33

0

您可以使用Ajax .. 上form submit做出ajax callservlet將返回nedded顯示loading頁面things/html。您可以使用返回的page替換formcurrent page中的任何內容。

ajaxform submission將繼續ususal ......當其他Servlet結束processing,你將被重定向到result page

+0

我很清楚。我不想要ajax替代品。 – alkis 2013-04-30 13:32:29

+1

@alkis問題你從來沒有說過任何與ajax相關的東西。你說過「防止被忽視」。 另外'一個請求'可以在任何給定的時間只有'1響應'。如果你嘗試「多次提交/發送響應」,你會得到'ResponseAlreadyCommited異常' – 2013-04-30 13:41:01

+0

@rahul maindargi是對的。你從來沒有對阿賈克斯說過任何話。而這個你試圖做的只能用ajax btw來做... – MaVRoSCy 2013-04-30 13:52:53