TOPサーバ構築・運用> セッションによる情報の引き継ぎ
はじめてのサーバサイドJava
はじめてのサーバサイドJava

第8回:Cookieとセッション情報

著者:山田 祥寛   2006/5/8
前のページ  1  2  3
セッションによる情報の引き継ぎ

   次に、セッションによる情報の引き継ぎを見てみることにしましょう。session1.jsp(リスト3)で保存されたセッション情報を、session2.jsp(リスト4)から参照します(図4)。
リスト3:session1.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>セッション情報を制御する</title>
</head>
<body>
<c:set var="sample" value="セッション情報" scope="session" /> (1)
セッション情報を記録しました。
</body>
</html>

リスト4:session2.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<html>
<head>
<title>セッション情報を制御する</title>
</head>
<body>
セッション"sample" => ${sessionScope['sample']} (2)
</body>
</html>

session1.jspで入力した値をsession2.jspで引き継ぐ
図4:session1.jspで入力した値をsession2.jspで引き継ぐ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   セッション情報をセットするのは、<c:set>要素の役割です(リスト3の1)。<c:set>要素についてはすでに説明しましたが、セッション情報を設定する場合にはscope属性を明示する必要がある点に注意してください。scope属性は変数の有効範囲を示すためのパラメータで、表1に示したような値を指定することができます。

スコープ 概要
page 現在のページのみ有効
request 一連のリクエスト処理で有効
session アプリケーション内の全ページで有効(ユーザ単位)
application アプリケーション内の全ページで有効(全ユーザ)

表1:scope属性で利用可能なスコープの指定

   デフォルトは最も範囲の狭いページスコープで、有効範囲が最も広いのはアプリケーションスコープです。リクエストスコープについては、ややわかりづらいかもしれませんので、改めて後述します。

   セッションスコープの変数を取得するには、暗黙オブジェクトsessionScopeを使用してください(リスト4の2)(注11)。

※注11:
オブジェクトを省略して、${sample}と記述することも可能です。スコープが明示されていない場合、式言語では該当する値が存在しないかどうかを、page、request、session、applicationの順序で検索します。

   セッションの有効期限はweb.xmlの要素で指定可能です(リスト5)。また、セッション情報を破棄したい場合には、JakartaTaglibsのSessionタグライブラリを使用してください。

リスト5:web.config(抜粋)
<session-config>
   <session-timeout>10</session-timeout>
</session-config>

前のページ  1  2  3


WINGSプロジェクト  山田 祥寛
著者プロフィール
有限会社WINGSプロジェクト   山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(http://www.wings.msn.to/)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。

INDEX
第8回:Cookieとセッション情報
  ページ間で情報を保持するには?
  Cookie情報を取得する
セッションによる情報の引き継ぎ