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