2013-08-19 18 views
0

我對AJAX非常陌生,我遇到了一個問題。我的JSP中有一個<div>。我有另一個JSP,使用<jsp:include>包含在上面的JSP中。問題在於所包含的JSP執行數據庫操作,並且需要大量時間才能呈現。我希望先前加載的是前一個JSP,然後再將後一個JSP加載到DIV中。我搜索,但無法理解如何解決它。基本上,我希望顯示前一個JSP,然後在完成操作後顯示後者。目前,前者的JSP需要很多時間才能加載,因爲後者包含在前一個JSP中,並且只有在後一個JSP完成加載時纔會呈現。完成後使用AJAX重定向到JSP

感謝您的幫助。 :)

回答

0

我相信這不是正確的做法。數據庫交互部分應該由某個Servlet觸發的DAO類完成。使用JSP進行數據庫交互是不好的。說到你目前的問題可以通過以下方法解決:

  1. 從JSP中刪除所有數據庫操作。
  2. 在主JSP內部保留div
  3. 加載時,觸發對Servlet的AJAX調用。
  4. Servlet/DAO類執行數據庫操作並返回結果。如果需要,將結果存儲在session中。
  5. 在AJAX請求函數的成功處理函數中,編寫一個加載其他JSP文件的回調函數。

檢查答案Load a jsp page using AJAX load method

0

流行的方法是使用JavaScript庫如jQuery和用ajax

$.ajax('/longrunningop', { 
    type: 'POST', 
    data: 'a=1&b=2'}).done(function(data) { 
    // code to display data to div here.. 
    }); 

良好做法調用長時間運行的操作是你的代碼的長時間運行的操作返回而不是JSP

JSON