3

JSESSIONID私は、サーブレット仕様を使用してアプリケーションを開発するときに、特定のクライアントに対するすべての新しいリクエストに対して作成される Cookieを常に当然のことと考えてきました。しかし、少し考えてみると、セッションが要求され、コードで作成された後にのみ、サーブレット コンテナーが Cookie ヘッダーを作成する方が論理的ではないでしょうか。Cookie が無効になっているクライアントの場合、HttpSession要求が行われるたびに新しいものを作成することになりませんか?

質問がまだ不明な場合はお知らせください。編集できます。ティア。

4

1 に答える 1

1

新しいセッションは、サーブレットが実際に明示的に作成しない限り、デフォルトではサーブレットコンテナによって作成されません。ヘッダーにJSEESIONIDが入力されているからといって、サーバーにシーションが存在する必要があるという意味ではありません。これの例外はJSPであり、<%@ page session = "false"%>でない限り、デフォルトでセッションが存在しない場合にセッションを作成します。

Cookieがオンになっていない限り:

Webコンテナは、いくつかの方法を使用してセッションをユーザーに関連付けることができます。これらの方法はすべて、クライアントとサーバーの間で識別子を渡すことを含みます。識別子はCookieとしてクライアント上で維持できます。または、Webコンポーネントは、クライアントに返されるすべてのURLに識別子を含めることができます。

アプリケーションでセッションオブジェクトを使用する場合は、クライアントがCookieをオフにするたびに、アプリケーションにURLを書き換えさせることにより、セッション追跡が有効になっていることを確認する必要があります。これを行うには、サーブレットによって返されるすべてのURLに対して応答のencodeURL(URL)メソッドを呼び出します。このメソッドは、Cookieが無効になっている場合にのみ、URLにセッションIDを含めます。それ以外の場合は、URLを変更せずに返します。

于 2010-07-17T17:04:26.597 に答える