【问题标题】:How to write response.sendRedirect() method with paramters in JSP如何在 JSP 中编写带参数的 response.sendRedirect() 方法
【发布时间】:2021-01-27 13:57:03
【问题描述】:

我的一个 JSP 中有以下代码:

<c:redirect url="someFile.jsp">
    <c:param name="source" value="${param.source}" />
    <c:param name="target" value="${param.target}" />
    <c:param name="value" value="${param.value}" />
</c:redirect>

请求的JSP [someFile.jsp]通过以下方式访问参数:

String source = request.getParameter("source");
String target = request.getParameter("target");
String value  = request.getParameter("value");

但是我需要使用response.sendRedirect("someFile.jsp") 方法而不是&lt;c:redirect url。 但是我不确定如何在sendRedirect方法中使用上述参数以及jsp文件名。

有人可以帮我看看我应该如何编写重定向方法吗?我们可以这样做吗:

response.sendRedirect("someFile.jsp?source=" + source +  "?target=" +target + "?value=" +value); 

session.setAttribute("source",source)
session.setAttribute("target",target)
session.setAttribute("value",value)

response.sendRedirect("someFile.jsp")

【问题讨论】:

  • 我认为这可以解释为什么你不能达到你想要的。 stackoverflow.com/a/14020288/7237884
  • @PanagiotisBougioukos : response.sendRedirect("someFile.jsp?source=" + source + "?target=" +target + "?value=" +value);我们可以这样做吗?

标签: java jsp redirect request-response


【解决方案1】:

您不能使用response.sendRedirect 来做到这一点,因为response.sendRedirect 只是要求浏览器向指定路径发送 请求,这意味着新请求不会从旧请求中获取任何信息请求。

您可以使用RequestDispatcher#forward 来执行此操作,它将来自 servlet 的请求转发到服务器上的另一个资源(servlet、JSP 文件或 HTML 文件)。

RequestDispatcher dispatcher = request.getRequestDispatcher("someFile.jsp");
dispatcher.forward(request, response);

【讨论】:

  • response.sendRedirect("someFile.jsp?source=" + source + "?target=" +target + "?value=" +value);我们可以这样吗?
  • @Som - 不,不是这样;但有一个解决方法。您可以在重定向前将值放入session 对象中,然后在重定向后从session 对象中检索它们。
  • 就像我在 OR 部分给出的一样?
  • @Som - 是的,就像您在编辑后添加到问题中的内容一样。
  • 是的,实际上我正在寻找一种解决方法..您的建议可能会奏效..让我测试一下...
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 2013-09-14
  • 1970-01-01
  • 2016-04-02
  • 2015-07-13
  • 1970-01-01
相关资源
最近更新 更多