0

我将一个对象设置为HttpSession. 该对象是类的一个实例User。然后,在另一堂课中,我试图做这样的事情:

User user = session.getAttribute("userObject");

我读过Serializable但我不明白它是如何工作的。有没有更直接和更简单的方法来做到这一点?

4

4 回答 4

4

把会话想象成一个简单的、类型不安全的Map。你可以在里面放任何东西,也可以把它拿出来,只要你知道你期望的类型。因此,如果您放置了一个User对象,请使用:

User user = (User) session.getAttribute("userObject");

如果你放了一个Long(userId)

Long id = (Long) session.getAttribute("userObject");
User user = getUserById(id);
于 2012-07-04T21:11:42.703 回答
1

你的代码看起来不错,你只需要一个演员:

User user = (User) session.getAttribute("userObject");
于 2012-07-04T21:05:58.433 回答
1

阅读有关序列化的内容:

为什么以及如何在 Java Web 应用程序中使用序列化?

我们假设您在其他地方执行此操作。

session.setAttribute("userObject", user);  
于 2012-07-04T21:07:48.943 回答
0

仅当您尝试在集群会话环境中运行时,Serializable 才真正重要。如果是这样,应用程序容器(tomcat 或其他)将需要将会话中的所有对象转换为字节数据,以便它可以流式传输到其他服务器以复制会话。在这种情况下,您的所有会话值都需要实现 Serializable 并且只包含本身实现 Serializable 的属性。

于 2012-07-04T23:35:34.997 回答