2003年度 データベース論

セッション管理
J2EE I
第9回 / 2005-01-15
1
ここでの内容


セッション管理の基本を知る。
HttpSession の使い方を知る。
2
セッションとは何か

次の一連の流れのこと




WebブラウザとWebサーバが接続される
Webブラウザが要求を出す
Webサーバが応答を返す
接続を切る
3
セッション管理


あるセッションと別のセッションとは無関係
ところが、セッション同士を関係付けたい場
合もある


例えばショッピングサイトで、商品Aと商品Bを
同じ人がショッピングカートに入れ、購入した
い場合
セッションをひとまとめにする仕組みが
「セッション管理」
4
セッションID

Webサーバは、セッション管理が必要になる時点
で、Webブラウザに「セッションID」を発行する。




セッションIDはブラウザがとにそれぞれ違う。
Webブラウザは、そのWebサーバにアクセスする
ときに、セッションIDを使用する
セッションIDによって、Webブラウザを識別する
セッションIDの受け渡し方法

Cookie と URL Rewriting
5
Cookie



Webブラウザ側のコンピュータにテキスト
ファイルとして保存 (保存しない場合もあ
る)
セッションID のほか、関連するさまざまな
情報を含めることができる。ただしテキスト
ベース。
Cookie を使えない場合もある


Webブラウザ側でCookie を受入を拒否できる
6
携帯電話のブラウザ
URL Rewriting


Cookie が使えないときに用いられる
HTTPの応答で返されるHTMLに、セッションID を
含めたリンクを用意する




<a href=“/select?id=12345>購入</a>
このリンクをクリックすると “/select?id=12345” が要
求となる
セッションIDによってブラウザを識別できる
セッションIDが露出しているので、セキュリティ上
問題がある。
7
HttpSession (1)


Java で セッション管理を行うためのインタ
フェース
HttpSession の取得


HttpSession session = request.getSession();
HttpSession が無い場合には新しく生成。このとき、
セッションIDも生成
8
HttpSession (2)

HttpSession にオブジェクトを登録


HttpSession からオブジェクトを取得


List list = session.getAttribute(“bookList”);
HttpSession からオブジェクトを削除


session.setAttribute(“bookList”, list);
session.removeAttribute(“bookList”);
HttpSession を終了

session.invalidate();
9
HttpSession による
セッションIDの受け渡し (1)

普段は Cookie を使う


Cookieに入る値はセッションIDだけ。
ほかの情報は、サーバ側で保存される。

そのユーザの購入履歴やパスワードなど
10
HttpSession による
セッションIDの受け渡し (2)

Cookie が使えない場合、URLRewriting



response.encodeURL("http://hogehoge.com/te
st/select");
Cookie を利用する場合は、そのまま
URLRewriting の場合は セッションIDを自動的に
付加

http://hogehoge.com/test/select?id=12345
11
セッションタイムアウトの処理

HttpSession には有効期間がある


デフォルトでは30分間アクセスがないと廃棄される
HttpSession を使いまわす場合



新規に作成するのは最初の1回だけにしておく。
途中でタイムアウトが起きるといろいろ面倒だから。
HttpSession session =
request.getSession(false);
12