セッション管理 ソフトウェア特論 第 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 に含めて渡す – 購入 – クリックすると “ /select?id=12345 ” が要求となる セッション ID が露出しているので、セキュリ ティ上問題がある。
HttpSession (1) Java で セッション管理を行うためのインタ フェース HttpSession の取得 – HttpSession session = request.getSession(); – HttpSession が無い場合には新しく生成。このとき、 セッション ID も生成 HttpSession にオブジェクトを登録 – session.setAttribute( “ bookList ”, list);
HttpSession (2) HttpSession からオブジェクトを取得 – List list = session.getAttribute( “ bookList ” ); HttpSession からオブジェクトを削除 – session.removeAttribute( “ bookList ” ); HttpSession を終了 – session.invalidate();
HttpSession による セッション ID の受け渡し 普段は Cookie を使う – セッション ID だけが Cookie に含まれる。他の情報 はサーバ側に。 Cookie が使えない場合、 URLRewriting – response.encodeURL(" ect"); – Cookie を利用する場合は、そのまま – URLRewriting の場合は セッション ID を自動的に付 加
セッションタイムアウトの処理 HttpSession には有効期間がある – デフォルトでは 30 分間アクセスがないと廃棄される HttpSession を使いまわす場合 – 新規に作成するのは最初の1回だけにしておく。 – 途中でタイムアウトが起きるといろいろ面倒だから。 – HttpSession session = request.getSession(false);
レポート課題について 第1回は 12 月 5 日 ( 金 ) まで。 第2回は 12 月 26 日 ( 金 ) まで。 詳しくは 03/ を参照のこと。 03/