PowerPoint ファイル

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