2012-07-04 36 views
0

我將對象設置爲HttpSession。此對象是類User的一個實例。然後,在另一個類我試圖做這樣的事情:從HttpSessions(Java)設置/獲取對象

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

我讀到Serializable,但我不明白它是如何工作的。有沒有一種直接和簡單的方法來做到這一點?

回答

4

想象會議作爲一個簡單的,類型不安全Map。你可以放入任何東西,只要你知道你期望的類型,就可以把它拿出來。所以,如果你已經把一個User對象,然後使用:

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

如果你已經把一個Long(在用戶id)

Long id = (Long) session.getAttribute("userObject"); 
User user = getUserById(id); 
1

您的代碼似乎確定,你只需要一個轉換:

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

我以前試過,但我採取了一個java.lang.ClassCastException –

+0

我會驗證用戶對象你鑄造是正確的類型。檢查導入。另外,請確認您提供的session.setAttribute類型正確。 – tjg184

0

序列化是唯一真正重要的位置,如果你想運行在集羣會話環境中。如果是這樣,應用程序容器(tomcat或其他)將需要將會話中的所有對象轉換爲字節數據,以便可以將數據流傳輸到其他服務器以便複製會話。在這種情況下,所有的會話值都需要實現Serializable並且只包含自己實現Serializable的屬性。