栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

  1. 使用转发。这将使请求属性可以传递到视图,并且您可以以
    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的示例。

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

控制者

    //if request is not from HttpServletRequest, you should do a typecast beforeHttpSession session = request.getSession(false);//save message in sessionsession.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" />


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号