我将对象设置为HttpSession
。该对象是类User
的实例。然后,在另一个课程中我试图做这样的事情:
User user = session.getAttribute("userObject");
我读到Serializable
,但我无法理解它是如何运作的。有没有直接而简单的方法来做到这一点?
答案 0 :(得分:4)
想象一下这个会话是一个简单的,类型不安全的Map
。您可以在其中放置任何内容,只要您知道所期望的类型,就可以将其取出。因此,如果您放置了User
对象,请使用:
User user = (User) session.getAttribute("userObject");
如果你放了一个Long
(userId)
Long id = (Long) session.getAttribute("userObject");
User user = getUserById(id);
答案 1 :(得分:1)
您的代码似乎没问题,您只需要演员:
User user = (User) session.getAttribute("userObject");
答案 2 :(得分:1)
在序列化上阅读:
Why and how is serialization used in Java web applications?
我们假设你正在其他地方这样做。
session.setAttribute("userObject", user);
答案 3 :(得分:0)
如果您尝试在群集会话环境中运行,则Serializable在此非常重要。如果是这样,app容器(tomcat或其他)将需要将会话中的所有对象转换为可以流式传输到其他服务器的字节数据,以便复制会话。在这种情况下,所有会话值都需要实现Serializable,并且只包含自身实现Serializable的属性。