我将一个对象设置为HttpSession
. 该对象是类的一个实例User
。然后,在另一堂课中,我试图做这样的事情:
User user = session.getAttribute("userObject");
我读过Serializable
但我不明白它是如何工作的。有没有更直接和更简单的方法来做到这一点?
我将一个对象设置为HttpSession
. 该对象是类的一个实例User
。然后,在另一堂课中,我试图做这样的事情:
User user = session.getAttribute("userObject");
我读过Serializable
但我不明白它是如何工作的。有没有更直接和更简单的方法来做到这一点?
把会话想象成一个简单的、类型不安全的Map
。你可以在里面放任何东西,也可以把它拿出来,只要你知道你期望的类型。因此,如果您放置了一个User
对象,请使用:
User user = (User) session.getAttribute("userObject");
如果你放了一个Long
(userId)
Long id = (Long) session.getAttribute("userObject");
User user = getUserById(id);
你的代码看起来不错,你只需要一个演员:
User user = (User) session.getAttribute("userObject");
阅读有关序列化的内容:
我们假设您在其他地方执行此操作。
session.setAttribute("userObject", user);
仅当您尝试在集群会话环境中运行时,Serializable 才真正重要。如果是这样,应用程序容器(tomcat 或其他)将需要将会话中的所有对象转换为字节数据,以便它可以流式传输到其他服务器以复制会话。在这种情况下,您的所有会话值都需要实现 Serializable 并且只包含本身实现 Serializable 的属性。