【问题标题】:how to send variables with sendRedirect() [duplicate]如何使用 sendRedirect() 发送变量 [重复]
【发布时间】:2014-10-01 16:10:54
【问题描述】:

通过使用forward() 方法,我可以使用request.setAttribute()“发送”变量。

如果我应该改用sendRedirect() 怎么办?如何将变量“发送”到目标页面?

我不喜欢做这样的事情:sendRedirect("page?varName=varValues"),我不喜欢在浏览器上看到变量名称和值。

使用sendRedirect()时有没有办法以隐藏的方式发送变量?

谢谢

【问题讨论】:

  • 您可能需要花时间阅读this

标签: java jsp servlets


【解决方案1】:

理论上,我们不能使用 sendRedirect() 发送 POST 请求。

但是如果你坚持通过 sendRedirect() 传递隐藏参数,有一个可能的解决方案。您可以在对象会话中设置这些参数。

例如:

HttpSession session = request.getSession(false);

session.setAttribute("parameter", "parameter");

response.sendRedirect("/page");

【讨论】:

    【解决方案2】:

    您可以在session 而不是request 上设置属性,以便您可以从重定向页面访问它。但是有多种解决方案。

    【讨论】:

      【解决方案3】:

      可能的方法是在会话中设置如下,

      session.setAttribute("varName", "value");
      response.sendRedirect("/resultPage");
      

      这将重定向到结果页面,您可以从会话中获取值,

      session.getAttribute("varName");
      

      session 对象将在整个应用程序中可用,直到您手动将其无效。

      RequestDispatcher forward() 方法之所以持有请求对象,是因为它转发的是同一个请求和sendRedirect() 不这样做,因为它每次都会创建新请求

      Learn More ..

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 2015-11-16
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 2013-08-07
        相关资源
        最近更新 更多