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

小编典典

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

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

控制器(您的servlet)

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

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

dispatcher.forward(request, response);

查看(您的JSP)

使用脚本:

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

%>

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

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

控制者

//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");

%>

2020-06-08

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值