【问题标题】:How to pass variables from one jsp to other without making them session variable?如何在不使它们成为会话变量的情况下将变量从一个 jsp 传递到另一个?
【发布时间】:2014-03-19 00:04:10
【问题描述】:

我有一个网站,每个用户大约有 15 个会话变量。我最近读到一篇文章,上面说“会话变量是邪恶的,它们会影响应用程序的性能”。阅读那篇文章我真的很失望,因为我找不到任何其他方法可以访问其他页面上的变量。

考虑以下场景,

我有一个论坛网站,当用户单击特定问题时,ForumSingleQuesitonController 被调用,该网站将问题、答案、问题和答案的 cmets 都存储在 ArrayList<ForumSingleQuestionBean> 的对象中,并且该对象被存储由我在会话中。

现在我使用resonse.sendRedirect("pages/forum_single_question.jsp"); 转到forum_single_question.jsp 页面,从中访问会话变量并打印出它的值。 现在我的问题是如何执行此过程,即在不使用会话变量的情况下将变量从 Controller(Servlet) 传递到 JSP

提前致谢

【问题讨论】:

  • 从控制器传递变量?您使用的是 Spring 还是 servlet?
  • @KevinBowersox 我的意思是 Servlet
  • 你有什么理由不使用前锋?
  • 不,这根本不正确。成功发布后重定向更好,以避免在刷新或导航回历史记录时重新发布请求。但是重定向应该转到控制器,而不是 JSP。永远不要直接访问 JSP。它们是模型-视图-控制器中的视图。请求进入控制器,控制器将模型存储到请求中,然后转发到视图。
  • @SaumilSoni 不相信您在网络上阅读的所有内容 ;-)

标签: java jsp session jakarta-ee


【解决方案1】:

我建议从 servlet 执行 forward。这会将所有请求参数传递给 JSP。

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/forum_single_question.jsp");
dispatcher.forward(request,response);

如果您需要包含其他属性,请在转发之前设置它们:

request.setAttribute("attributeName", value);

【讨论】:

  • 该死,我想我必须做很多工作才能将所有这些重定向转换为转发;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
相关资源
最近更新 更多