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