从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值)请参见