使用response.sendRedirect()传递隐藏参数

如何传递隐藏参数?我想调用一个页面(test.jsp),但还要传递2个隐藏的参数,如post。

response.sendRedirect("/content/test.jsp");

回答:

TheNewIdiot的答案成功说明了问题以及无法通过重定向发送请求中的属性的原因。可能的解决方案:

  1. 使用转发。这将使请求属性可以传递到视图,并且您可以以ServletRequest#getAttribute或通过使用Expression Language和JSTL的形式使用它们。简短示例(重用TheNewIdiot的答案)代码。

    request.setAttribute("message", "Hello world");

RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);

dispatcher.forward(request, response);

使用脚本:

    <%

out.println(request.getAttribute("message"));

%>

这仅供 。 使用小脚本:如何避免JSP文件中的Java代码?。下面是使用EL和JSTL的示例。

    <c:out value="${message}" />

  1. 如果您不能使用转发(因为您不喜欢它,或者您不喜欢这种方式,或者因为必须使用重定向),则可以选择将消息另存为会话属性,然后重定向到您的视图,请在您的视图中恢复会话属性 从会话中 。切记始终仅使用相关数据进行用户会话。代码示例

    //if request is not from HttpServletRequest, you should do a typecast before

HttpSession session = request.getSession(false);

//save message in session

session.setAttribute("helloWorld", "Hello world");

response.sendRedirect("/content/test.jsp");

再次,使用scriptlet和EL + JSTL进行显示:

    <%

out.println(session.getAttribute("message"));

session.removeAttribute("message");

%>

<c:out value="${sessionScope.message}" />

<c:remove var="message" scope="session" />

以上是 使用response.sendRedirect()传递隐藏参数 的全部内容, 来源链接: utcz.com/qa/433280.html

回到顶部