0

sessionDestroyedそこでCookie を取得する必要があるため、メソッドに Request オブジェクトが必要です。

public void sessionDestroyed(HttpSessionEvent httpSessionEvent) 
{
// Here I need to get Request object so that I can retrieve Cookies.
}

requestそこでCookieを取得できるようにオブジェクトを取得することはできますか?

4

2 に答える 2

1

いいえ。セッションが破棄された場合、必ずしも HTTP リクエストの手段があるとは限りません。つまり、クライアントが 30 分間リクエストを送信していないため、タイムアウト中に破棄される可能性があります。HTTP リクエストが使用できる唯一のケースはHttpSession#invalidate()、ログアウト ボタンが押されたときに明示的に自分自身を呼び出す場合です。しかし、そのメソッドを呼び出した時点で、すでに HTTP リクエストが手元にあります。セッションリスナーではなく、同じ瞬間にクッキージョブを実行できます。

これが正しい解決策であると誤って考えた具体的な機能要件が明確ではないため、それを適切に解決する方法について適切な答えを出すことはできません。しかし、方法の 1 つは、Cookie に保存されている情報のコピーをセッションの属性として保存することです。たとえば、Cookie の値がクライアント側の JS によって操作される可能性があるため、リクエストごとにそれを行う必要がある場合は、これにサーブレット フィルターを使用できます。

于 2013-03-28T13:32:19.377 に答える
0

いやいや。

セッションの破棄は、リクエストのライフサイクルの範囲外で非同期に発生する可能性があるものです。

リクエスト ライフ サイクルの範囲外でリクエスト オブジェクトへの参照を取得するのは、あなたの考えでは正しくありません。

于 2013-03-28T13:40:15.120 に答える