单击 "OK" 后重定向到特定页面

Redirect to certain page upon clicking "OK"

我的 Servlet - “ImportFile”:

        doPost(){
        ...
        ...
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        
        if(status.equals("Fail")) {
            out.println("<script type=\"text/javascript\">");  
            out.println("alert('Import Failed !');");  
            out.println("</script>");
        }else {
            out.println("<script type=\"text/javascript\">");  
            out.println("alert('Import Sucessfull !');");  
            out.println("</script>");
        }
        
        
        //response.sendRedirect(request.getContextPath());
        out.flush();
        }

在成功或失败后,这将登陆 /ImportFile 页面,但该页面不存在。 我该怎么做才能将它重定向到 ContextPath?

sendRedirect 添加一个 HTTP header“位置”,由浏览器解释,因此它会自动重定向到给定位置。

所以如果你在发送数据后调用该方法,header已经发送了,无法工作。

尝试在任何输出之前调用该方法。

但是重定向响应不应该有任何 body,因为如果指定了重定向,浏览器可能会忽略它。如果您想首先在 javascript 中显示您的消息,请在 javascript 中执行重定向,例如:

out.println("location.href = \"" + request.getContextPath() + "\";");

就在你的警报之后:

        PrintWriter out = response.getWriter();
        response.setContentType("text/html");

        out.println("<html><body>");  
        out.println("<script type=\"text/javascript\">");  
        if(status.equals("Fail")) {
            out.println("alert('Import Failed !');");  
        }else {
            out.println("alert('Import Sucessfull !');");  
        }
        out.println("location.href = \"" + request.getContextPath() + "\";");
        out.println("</script>");
        out.println("</body></html>");
        out.flush();