0
我使用servlet來創建基於java的網站。 我正在將計算數據發送到服務器,然後該服務器正在進行計算並將結果存儲在數據庫中。.forward()然後用servlet resp.sendRedirect()
我要的是顯示加載頁面,所以我應該得到 1 /表單提交 2 /加載頁面 3 /結果頁面
這樣做,我提交表單給我一個servlet至極顯示器上加載頁面,然後在數據庫中檢查數據是否存在,如果是,則將結果頁面重定向到我。
這是我的裝載servle
public class AffichageChargementServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//recuperation de la clé de l'entité qui contiadra les resultats
String key = req.getParameter("key");
//affichage de la page de chargement
try {
getServletContext().getRequestDispatcher("/loading.html").forward(req, resp);
} catch (ServletException e) {
System.out.println("problemme dans la servlet AffichageChargementServlet lors du chargement de /loading.html");
e.printStackTrace();
}
//verification de la disponibilité de l'entité
Key resultatKey = KeyFactory.createKey("Resultat", key);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity result = null;
while(true){
try {
result = datastore.get(resultatKey);
} catch (EntityNotFoundException e) {
System.out.println("pas encore prete");
//ne rien faire, la data n'est pas encore disponible
}
if(result != null){
System.out.println("redirection vers /affichageResults?key="+key);
resp.sendRedirect("/affichageResults?key="+key);
}
}
}
}
正如我剛纔瞭解到,這是不可能做到多重定向在Servlet,所以我得到一個java.lang.IllegalStateException:響應已經提交
是否有解決方法?
感謝
我知道,我在問什麼如何才能獲得與2個servlet相同的行爲。 – Eildosa
我想你的源代碼需要兩個獨立的servlet。一個將轉發到加載,然後你會發送來自該頁面的請求到另一個重定向的servlet。 –
問題是一旦servlet已轉發到加載頁面,它不能重定向到其他servlet(在加載頁面上沒有用戶輸入) – Eildosa