从HttpSessions(Java)设置/获取对象

从HttpSessions(Java)设置/获取对象,java,servlets,casting,httpsession,Java,Servlets,Casting,Httpsession,我将一个对象设置为HttpSession。此对象是类User的实例。然后,在另一节课上,我试着做这样的事情: User user = session.getAttribute("userObject"); 我读过有关可序列化的的文章,但我不明白它是如何工作的。有没有一种直接而简单的方法可以做到这一点?您的代码似乎还可以,您只需要一个演员阵容: User user = (User) session.getAttribute("userObject"); 您的代码似乎还可以,您只需要一个演员阵容

我将一个对象设置为
HttpSession
。此对象是类
User
的实例。然后,在另一节课上,我试着做这样的事情:

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

我读过有关可序列化的
的文章,但我不明白它是如何工作的。有没有一种直接而简单的方法可以做到这一点?

您的代码似乎还可以,您只需要一个演员阵容:

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

您的代码似乎还可以,您只需要一个演员阵容:

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

请阅读以下有关序列化的内容:

我们假设你在别的地方做这件事

session.setAttribute("userObject", user);  

请阅读以下有关序列化的内容:

我们假设你在别的地方做这件事

session.setAttribute("userObject", user);  

将会话想象成一个简单的、类型不安全的
Map
。你可以把任何东西放进去,也可以拿出来,只要你知道你想要的类型。因此,如果您放置了
用户
对象,则使用:

User user = (User) session.getAttribute("userObject");
如果您放置了一个
长的
(用户ID)


将会话想象成一个简单的、类型不安全的
Map
。你可以把任何东西放进去,也可以拿出来,只要你知道你想要的类型。因此,如果您放置了
用户
对象,则使用:

User user = (User) session.getAttribute("userObject");
如果您放置了一个
长的
(用户ID)


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

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

我以前尝试过这一点,但我采用了java.lang.ClassCastException,我将验证您使用的用户对象的类型是否正确。检查导入。另外,请验证您是否放置了session.setAttribute提供的正确类型。我以前尝试过此操作,但我使用了java.lang.ClassCastException,我将验证您使用的用户对象是否是正确的类型。检查导入。另外,验证您是否放置了提供的正确类型session.setAttribute.session.addAttribute(“userObject”,user);void setAttribute(java.lang.String名称,java.lang.Object值)见session.addAttribute(“userObject”,user);void setAttribute(java.lang.String名称、java.lang.Object值)请参见