1

アプリケーションサーバーは、どのクライアントがどのHttpSessionオブジェクトに関連付けられているかをどのように追跡しますか?クライアント間のTCP/IP接続を追跡することに関連していますか?それともクッキー?クッキーを抽出する別の方法があるので、それがクッキーだとは思えません。

バックグラウンド

サーブレットとJSPがrequest.getSession()を呼び出して、クライアントに関連付けられたHttpSessionオブジェクトを取得できることを理解しています。クライアントが新しいページを要求したときに、サーバーが同じオブジェクトを返すことをどのように知っているのか知りたいです。私は周りを検索しましたが、見つけたすべてのドキュメントはセッション情報を抽出する方法に関するものです。サーバーがアクセスできるクライアントデータの海からそのセッション情報をどのように分離したかに興味があります。

4

1 に答える 1

8

私はそれがクッキーであることを疑います

です!ステートレス HTTP プロトコルとサーブレットでユーザー セッションを追跡するには、基本的に 2 つの方法がありますJSESSIONID。Cookie または URL の書き換えです。後者は、Cookie が利用できない場合に使用されます。

最初の応答で、サーブレット コンテナーはクライアントに次の Cookie を設定します。

Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly

後続のすべてのリクエストにはこの Cookie が含まれ、サーブレット コンテナーはそれを使用して正しいHttpSession. サーブレット API を使用してこの Cookie に直接アクセスできますJSESSIONID。また、他の Cookie の上に独自のセッション メカニズムを構築することもできます。しかし、サーブレット コンテナがそれを行います。

こちらもご覧ください

于 2012-09-02T19:18:59.827 に答える