libro
www.tuyano.com
初心者のためのJSP/サーブレット入門

セッションとクッキー (3/4)

作成:2012-05-06 10:47
更新:2012-05-06 10:47

■セッションの利用

クッキーは、ちょっとした値を保管しておくのには役立ちますが、それ以上のことはできません。複雑な値や大きなデータを保管しておくことには向かないのです。が、アクセスしてきたそれぞれのユーザーごとに何らかの値を保管しておきたいことはよくあります。例えばショッピングカートのようなものなら、カートに入れた商品の情報を保管しておければずいぶんと助かりますね。

こうした「各ユーザーごとに、クッキーよりも複雑で大きなデータを保管しておく」という場合に用いられるのが「セッション」です。セッションというのは、サーバーとクライアント(ブラウザ)との間で連続した接続を維持し続ける機能です。このセッションに値を保管しておくことで、クライアントごとにデータを保管し管理することができるようになります。

セッションは、「HttpSession」というクラスとして用意されています。これは、実はインスタンスを作ったり剃る必要はありません。最初から「session」という暗黙オブジェクトが用意されており、これを利用することでセッションを操作できるようになっています。

このセッションには、値を保管したり取得したりするためのメソッドが用意されています。


・値を保管する
session.setAttribute( 名前 , 値 );

・値を取得する
Object 変数 = session.getAttribute( 名前 );

セッションの値は、アトリビュート(属性)という形で設定されるようになっているんですね。setAttributeでアトリビュートを設定し、getAttributeで指定のアトリビュートを取り出す、というわけです。ただ、この「属性」という考え方は、どうもピンとこない人も多いようです。そこでもっとシンプルに「値を設定したり取り出したりする」という形のメソッドも用意されています。


・値を保管する
session.putValue( 名前 , 値 );

・値を取得する
Object 変数 = session.getValue( 名前 );

この2種類のメソッドは、実は「全く同じもの」です。setAttributeputValueは全く同じ働きをしますし、getAttributegetValueも同様です。setAttributeで設定した値をgetValueで取り出すことももちろんできますし、その逆もしかりです。ですから、どちらでも好きな方を利用すればよいでしょう。

このセッションは、アクセスを開始した時にスタートし、アクセスしている間、ずっと維持し続けられます。一定時間以上アクセスをしなかったり、ブラウザを終了したりするとセッションも終了し、セッションに保管されていた情報もすべて失われます。

セッションの開始時間や景観時間、またセッションの終了などに関するメソッドもHttpSessionに用意されています。以下に整理しておきましょう。


・セッションを開始した時刻を得る
long 変数 = session.getCreationTime();

・最終アクセス時間を得る
long 変数 = session.getLastAccessedTime();

・セッションを無効にする
session.invalidate();

getCreationTimegetLastAccessedTimeは、PCの基準となる日時(1970年1月1日午前零時)からの経過ミリ秒数で得られます。また、invalidateはセッションを無効にするため、以後、sessionのメソッドなどはすべて使えなくなりますので注意してください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのJSP/サーブレット入門」に戻る