gpt4 book ai didi

java - .forward() 然后 resp.sendRedirect() 与 servlet

转载 作者:行者123 更新时间:2023-12-02 07:30:52 25 4
gpt4 key购买 nike

我正在使用 servlet 来制作一个基于 java 的网站。我将计算数据发送到服务器,然后该服务器进行计算并将结果存储在数据库中。

我想要的是显示一个加载页面,所以我应该得到1/表单提交2/加载页面3/结果页

为此,我的提交表单将我发送到一个显示加载页面的 servlet,然后在数据库中检查数据是否存在,如果存在,则将我重定向到结果页面。

这是我的加载服务

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: 响应已提交

有解决办法吗?

谢谢

最佳答案

响应已提交表示您已经在响应上写入了一些内容,并且您正在尝试转发或重定向。

您应该在响应上使用“转发”或“重定向”,而不是同时使用两者,您的代码同时执行这两种操作。您需要首先决定是转发还是重定向,然后根据您的决定提交响应

关于java - .forward() 然后 resp.sendRedirect() 与 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com