オブジェクトを に設定しましたHttpSession
。このオブジェクトは class のインスタンスですUser
。次に、別のクラスで次のようなことをしようとしています:
User user = session.getAttribute("userObject");
について読んだSerializable
が、それがどのように機能するのか理解できない。これを行うための直接的で簡単な方法はありますか?
オブジェクトを に設定しましたHttpSession
。このオブジェクトは class のインスタンスですUser
。次に、別のクラスで次のようなことをしようとしています:
User user = session.getAttribute("userObject");
について読んだSerializable
が、それがどのように機能するのか理解できない。これを行うための直接的で簡単な方法はありますか?
セッションを単純な type-unsafe と想像してください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");
シリアライゼーションでこれを読んでください:
Java Web アプリケーションでシリアル化が使用される理由と方法は?
他の場所でこれを行っていると想定しています。
session.setAttribute("userObject", user);
クラスター化されたセッション環境で実行しようとしている場合にのみ、ここでシリアライズ可能が本当に重要になります。その場合、アプリ コンテナー (Tomcat など) は、セッションをレプリケートするために、セッション内のすべてのオブジェクトを他のサーバーにストリーミングできるバイト データに変換する必要があります。この場合、すべてのセッション値は Serializable を実装する必要があり、それ自体が Serializable を実装するプロパティのみを含む必要があります。