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

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

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

■クッキーの基本操作

Webの世界では、すべてのデータはネットワークの向こう側にあります。ローカル環境には何も置くことはできません(でした、最近までは)。HTML5になっていろいろ保存できるようになってすっかりWebの様子も変わってきましたが、HTML5が登場するまで、ブラウザにデータなどを保存することのできる機能といえば、「クッキー」だけでした。

クッキーを利用すると、ブラウザにちょっとしたデータを保存しておけます。が、クッキーの役割はそれだけではありません。「ブラウザとサーバーの間で、そのデータをやり取りして情報交換できる」という点にあるのです。それぞれのクライアント(Webブラウザのこと)ごとにデータを保管して置けるので、さまざまな利用ができるようになります。例えば、IDを割り振って各クライアントを識別するのに使えますし、最後にアクセスした日時などの情報を保管しておくこともできますね。

最近になって、HTML5によりローカルに各種の情報を保存できるようになってきましたが、それらはJavaScript経由でしか必要な情報を取り出せないため、サーバーサイドからの利用は面倒臭いことになります。またHTML5に対応していないブラウザもまだあります。クライアントとサーバーの間でスムーズにやり取りできる「クライアント側に保存できるデータ」として、クッキーの必要性はまだまだ高いのです。

では、クッキーの利用の仕方について整理しておきましょう。クッキーは、「Cookie」というクラスとして用意されています。これは以下のようにしてインスタンスを作成します。
Cookie 変数 = new Cookie( 名前 , 値 );
クッキーは、保管する値と、それにつける名前がセットになっています。こうすることで、複数の値を名前で整理して保管できるようになっているのですね。では、このクッキーはどのようにして保存したり取り出したりできるのでしょうか。


・クッキーの保存
response.addCookie( 《Cookie》 );

・クッキーの取得
Cookie[] 変数 = request.getCookies();

クッキーの保存は、「response」というオブジェクトのメソッドを呼び出します。これは、クライアントへのレスポンスに関する情報を管理する暗黙オブジェクトです。この「addCookie」メソッドで、保存するCookieインスタンスを引数に指定して実行すれば良いのです。

クッキーの取得は、実はちょっと面倒です。JSPの機能には、特定のクッキーだけを取り出す機能がないのです。用意されているのは、暗黙オブジェクトrequestにある「getCookies」というものだけです。これは、そのサイトで保存されているすべてのクッキーをCookie配列として取り出すものです。――取り出されたCookieは、保管されている名前や値などを以下のようにしてとり出すことができます。


・クッキーの名前を得る
String 変数 = 《Cookie》.getName();

・クッキーの値を得る
String 変数 = 《Cookie》.getValue();

したがって、ちょっと面倒ですが、getCookiesで全クッキーを取り出し、繰り返しなどで順番にCookieを取り出してはその名前をgetNameでチェックする、という形で必要なクッキーを探していくことになるでしょう。


・有効期限を設定する
《Cookie》.setMaxAge( 秒数 );

最後にもう1つ、覚えておきたいのがこれです。これは、クッキーが保管される期限を設定するものです。これにより、そのクッキーがいつまで保管されるかを設定できます。これで設定をしていなかった場合には、ブラウザを終了したりするとその時点でクッキーは消えます。

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

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

※関連コンテンツ

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