2003年度 データベース論

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