JavaベースのWebサイトを作成するためにサーブレットを使用しています。計算データをサーバーに送信すると、このサーバーが計算を実行し、結果をデータベースに保存します。
読み込みページを表示したいので、1/フォーム送信2/読み込みページ3/結果ページを取得する必要があります
これを行うには、送信フォームからサーブレットに送信し、読み込みページを表示してから、データベースにデータが存在するかどうかを確認します。存在する場合は、結果ページにリダイレクトします。
これは私のローディングサーバーです
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);
}
}
}
}
先ほど学習したように、サーブレットで複数のリダイレクトを実行することはできないため、java.lang.IllegalStateExceptionが発生します:応答はすでにコミットされています
回避策はありますか?
ありがとう