なぜセッション無効化後も、セッション情報は残存するのか。
Javaでは、session.invalidate()メソッドを呼び出しても、セッションはすぐに破棄されずに無効状態としてマークされる。これは、invalidate()メソッドの呼び出し後も、セッションが他のスレッドやプログラムの一部で使用されている可能性があるためである。
セッションを無効化するには、session.invalidate()メソッドを使用します。これにより、セッションのフラグが無効に設定され、セッションの終了時にセッション関連のリソースが解放されます。ただし、セッションが終了するまではセッションオブジェクトは存続し、他の参照からアクセスできる可能性があります。
セッションの完全な破棄を確実にするには、invalidate()メソッドを呼び出した後にsession.removeAttribute()メソッドを直ちに呼び出して、セッション内の全ての属性を削除します。これにより、セッション終了前にセッションオブジェクトにアクセスする他の参照がなくなるため、セッションが完全に破棄されることになる。