セッションスコープの仕組み
- セッションスコープの正体であるHttpSessionインスタンスはユーザ(ブラウザ)ごとに生成される
アプリケーションサーバはHttpSessionインスタンスを作成(あるユーザにとって最初のgetSession()を実行)すると、 内部でセッションIDと呼ばれるIDを新たに発行し、Httpセッションインスタンスとブラウザにせっていする
セッションIDを設定されたブラウザは、以降のリクエストの度に設定されたセッションIDを送信するようになる アプリケーションサーバは送られてきたセッションIDを取得し、2回目以降のgetSession()メソッドを実行する際に、 取得したセッションIDと同じIDを持つHeepSessionインスタンスを取得する。 この仕組みにより、各ユーザは自分専用のセッションスコープを使うことができるようになっている
クッキーとは
Webサーバがブラウザにデータを保存、送信させる仕組み。 サーバがレスポンスにクッキーと呼ばれるデータを含めると、レスポンスを受信したブラウザは クッキーをコンピュータに保存、以後そのサーバにアクセスする際には、 保存したクッキーを自動的にHTTPリクエストに付与して送信する。
アプリケーションサーバはクッキーにセッションIDを含めることで、 ブラウザ/サーバ間でのセッションIDのやり取りを可能にしている
クッキーの有効期間
クッキーには有効期間を設定できる。 特別な設定をしない限りはアプリケーションサーバはブラウザが閉じられるまでを セッションIDの有効期間とする
2備考
chromeなどほとんどのブラウザは開いている全てのウインドウでセッションIDを共有する。 その為、前回の実行で開いたウインドウを残したまま実行すると、 すでに発行されたセッションIDが、新しく開いたウインドウにも設定される
セッションスコープを使用したプログラむの動作を確認する際は、 全てのブラウザのウインドウを閉じてから行う