javax.servlet.http.HttpSessionのドキュメントについて混乱しています。
それは言います:
セッションは、複数のページ要求にわたって状態とユーザー ID を維持するために使用されます。セッションは、Cookie を使用するか、URL を書き換えることによって維持できます。
現在、Cookie と URL 書き換えの両方が、サーバー内のアプリケーション コード (つまり、私たちのコード) によって処理されます。
次に、セッションがいつと見なされるかについて次のように述べていますnew
。
サーバーは、クライアントがセッションに参加するまで、そのセッションを新しいものと見なします。クライアントがセッションに参加するまで、isNew メソッドは true を返します。true の値は、次の 3 つのケースのいずれかを示している可能性があります
。1. クライアントがまだセッションについて認識していない
2. セッションがまだ開始されていない
3. クライアントが選択していないセッションに参加します。このケースは、クライアントが Cookie のみをサポートし、サーバーから送信された Cookie を拒否することを選択した場合に発生します。サーバーが URL 書き換えをサポートしている場合、このケースは通常発生しません。
client has joined the session
. _
つまり、Web アプリケーション (または URL 書き換え) から Cookie を使用せず、次のようにします。
- IP A からサーバーへの POST
- サーバーから A への 200 OK
- IP A からサーバーへの POST
ステップ 3 では、session.isNew()
true または false が返されますか? ドキュメントからはわかりません。
false (つまり、セッションが新しくない) が返さsession.invalidate()
れ、新しいセッションを作成するために呼び出す必要がありますか?
これが私をさらに混乱させる理由は、クライアントが HTTP アプリケーションであり、Web ブラウザーではないコードをデバッグしているためです。ステップ 3では、サーバー コードに Cookie や URL の書き換えはありsession.isNew()
ませんが、返されません。 true
.
そのため、ボンネットの下で何が起こっているのかわかりません。
これを理解するのに役立つ情報はありますか?