1|2|3画面間の共有データを管理する−sessionオブジェクト−「セッション」とは、1人のユーザーがあるアプリケーションにアクセスしてから切断——サイトを立ち去るまでの「一連の期間」をいいます。sessionはこのセッション単位で持続すべきデータを管理するためのオブジェクトです。sessionオブジェクトは、先述のクッキーのように永続的に情報を保持するというものではありませんが、ユーザーがアプリケーションを使用するに際して、ページ間で共有すべき情報を管理する場合に利用することができます。旧来のPerl+CGIでは、こうしたページ間のやりとりにはクエリ情報やクッキーを用いるしかありませんでしたが、セッションを用いることで、こうしたデータ授受の手続きを飛躍的に簡素化することが可能になります。sessionオブジェクトは、@pageディレクティブのsession属性がfalseである場合には使用することができませんので、注意してください。session属性はデフォルトでtrueです。以下の例では、1度目のアクセスでセッション情報にフラグ(flag)を登録しておくことで、2度目以降のアクセスを拒否します。アンケートの登録フォームなどで重複登録を防ぐ簡易な方法として用いることができるでしょう。繰り返しますが、セッションは永続的に保持される性質のものではないので、いったんブラウザを閉じてしまったら無効となるため注意が必要です。out.close();}session.setAttribute("flag","TRUE");%><html><head><title>セッションの活用(sessionオブジェクト)</title></head><body>最初のアクセス時のみ表示されます。1度目のアクセス時2度目のアクセス時getAttributeメソッドは指定されたセッション情報(属性)を取得します。ここではセッション情報"flag"がnullでない場合には2度目以降のアクセスと見なし、警告メッセージを表示後、処理を終了します。setAttributeメソッドは指定されたキーと値のセットで、新規にセッション情報を登録します。sessionオブジェクトのそのほかのメソッド以下では、上でご紹介したgetAttribute、setAttributeメソッドのほか、sessionオブジェクトに用意されている主なメソッドを挙げておくことにします。sessionオブジェクトの主なメソッドメソッド概要getAttributeNames()すべてのセッション属性名を取得getCreationTime()セッションの生成時刻を取得getId()セッションを一意に識別するIDを取得getLastAccessedTime()セッションへの最終アクセス時刻を取得getMaxInactiveInterval()セッションのタイムアウト時間を取得invalidate()セッションを破棄isNew()新しく生成されたセッションかどうかremoveAttribute(name)指定されたセッション属性(name)を削除setMaxInactiveInterval(interval)セッションのタイムアウトをinterval秒に設定sessionオブジェクトはセッション情報を操作するためのメソッドを提供します。セッションに関する情報(タイムアウト時間やセッションIDなど)も、sessionオブジェクトを介して取得することが可能です。次回は、アプリケーション共通のデータをつかさどる「applicationオブジェクト」から解説します。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。