【问题标题】:Redirect to certain page upon clicking "OK"单击“确定”后重定向到特定页面
【发布时间】:2021-03-15 18:59:32
【问题描述】:

我的 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?

【问题讨论】:

    标签: javascript java servlets


    【解决方案1】:

    sendRedirect 添加一个 HTTP 标头“Location”,由浏览器解释,以便自动重定向到给定位置。

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

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

    但是重定向响应不应该有任何正文,因为如果指定了重定向,浏览器可能会忽略它。如果您想首先在 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();
    

    【讨论】:

    • 感谢您的回答。在暗示您的回答后,我像以前一样被重定向到空白页面[/ImportFile],它没有发出任何警报。
    • 您的浏览器控制台有错误吗?
    • out.println("location.href = " + request.getContextPath() + ";");有'"'在这里我调整了,它工作了!!!新的变化:out.println("location.href = \"" + request.getContextPath() + "\";");
    • 是的,对不起,我编辑了我的答案
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多