【问题标题】:Java Servlet, Send a redirect with html tagsJava Servlet,使用 html 标签发送重定向
【发布时间】:2017-05-18 18:50:08
【问题描述】:

我正在寻找一种方法,使用我的 servlet 从我的第一页发送重定向到第二页,在第二页中添加在此 servlet 中制作的脚本标记。

例如:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    System.out.println("Received a get request");
    response.getWriter().append("<script>alert(\"I'm here!\")</script>");
    response.sendRedirect("testRedirect.html");
}

此代码不起作用。我该如何解决? 谢谢!

【问题讨论】:

  • 您遇到什么错误?在浏览器或服务器控制台中!

标签: javascript java html servlets


【解决方案1】:

response.sendRedirect 将重定向标头写入输出流。标头必须在任何输出之前发送,这就是您的代码不起作用的原因。

尝试交换两个语句,先重定向,然后附加:

response.sendRedirect("testRedirect.html");
response.getWriter().append("<script>alert(\"I'm here!\")</script>");

【讨论】:

  • 感谢您的回答,但我试过了,但无事可做。这种方式也不行。还有什么想法吗??谢谢
【解决方案2】:

您不能在重定向响应中发送第二页的内容。实际上有两个请求。

第一个请求由您的 servlet 通过发送重定向来处理。此响应中不应有其他内容。

浏览器接收到重定向并向“testRedirect.html”发出第二个请求。如果您想在第二个响应中包含脚本标记,那么正确的位置是处理第二个请求的 servlet 或 JSP。

【讨论】:

    【解决方案3】:

    感谢您使用此代码解决的问题:

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("received a get message");
        PrintWriter out = response.getWriter();
        out.println("<script>alert(\"I'm here\");</script>");
        request.getRequestDispatcher("testRedirect.html").include(request, response);
        out.close();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多