如何在 HttpSession 中存储 Java 对象?

2022-09-01 04:22:36

因此,当请求此 servlet 时,我尝试获取一个 servlet 以将 Java 对象添加到用户的会话中。但是在 servlet 重定向到下一页并且我尝试检索该对象后,我得到了一个对象。null

以下是我将对象添加到 HttpSession(在 servlet 中)执行的操作:

request.setAttribute("object", obj);

然后我尝试通过以下方式检索它(在JSP中):

 Object obj = request.getAttribute("object");

那么我怎样才能让 obj 不为 null 呢?

更新:我也尝试过这个,什么都没有:

HttpSession session = request.getSession();
session.setAttribute("object", obj);

在 JSP 中使用以下内容:

 Object obj = request.getSession().getAttribute("object");

这两种方式仍返回 null。


答案 1

您不是将对象添加到会话,而是将其添加到请求中。
您需要的是:

HttpSession session = request.getSession();
session.setAttribute("MySessionVariable", param);

在 Servlet 中,您有 4 个作用域,您可以在其中存储数据。

  1. 应用
  2. 会期
  3. 请求

确保您了解这些内容。欲了解更多信息,请看这里


答案 2

将其添加到会话,而不是请求

HttpSession session = request.getSession();
session.setAttribute("object", object);

另外,不要在 JSP 中使用脚本。使用EL代替;访问您所需要的只是.object${object}

JSP 技术 2.0 版的一个主要功能是它对表达式语言 (EL) 的支持。表达式语言可以方便地访问存储在 JavaBeans 组件中的应用程序数据。例如,JSP 表达式语言允许页面作者使用简单语法(如简单变量或嵌套属性)访问 Bean。${name}${name.foo.bar}