セッション管理
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
© Copyright 2026 ExpyDoc