Cookie は、サーバサイドアプリケーションによって使用される一般的なメカニズムで、個々のブラウザに情報を保管します。ブラウザに保管された Cookie はサーバサイドアプリケーションによって取り出されます。Cookie を使用することで、Web アプリケーションは各ブラウザに特定の変数を作成できます。これらの変数には、ユーザー名や最終アクセスの日付を保管できます。
Cookie を使用したセッション追跡を有効にした場合、JRun は JSESSIONID
と名付けたセッション追跡 Cookie を作成します。このセッション追跡 Cookie の名前は、jrun-web.xml ファイルの cookie-config
セクションで変更できます。詳細については、 「jrun-web.xml ファイルでのセッション設定」 を参照してください。
Cookie は、HTTP プロトコルのステートレスという性質を補完するセッションパーシスタンスメカニズムを提供します。Cookie にはテンポラリ Cookie とパーマネント Cookie があります。
setMaxAge
メソッドを使用します。
Cookie の寿命が、その Cookie のブラウザでの有効期間です。この値は Cookie に保管されます。jrun-web.xml ファイルの cookie-max-age
でこの設定を定義します。ブラウザサイドでは、cookie-max-age
の有効期限が切れると、ブラウザはその Cookie ファイルを削除します。詳細については、 「jrun-web.xml ファイルでのセッション設定」 を参照してください。
Cookie のセッションタイムアウトは、セッションがアクティブでない間サーバのメモリに JRun が Cookie を維持する期間を示します。 「セッションタイムアウトの変更」 で説明されているように、セッションがそのセッションタイムアウトに達すると、JRun はサーバサイドの session オブジェクトを廃棄します。
このセクションでは、Cookie を明示的に作成する方法を説明します。Cookie をセッションパーシスタンスのために使用している場合は、getSession
メソッドが呼び出されると JRun は暗黙的に Cookie を作成します。
Date dt = new Date(); String todayString = dt.toString();
// Cookie インスタンスを作成します。 // この例では、現在の日付と時刻を保存します。 Cookie lastVisit = new Cookie("lastVisit", todayString);
lastVisit.setMaxAge(60*60*24*365); //1 年間この Cookie を廃棄しません。
resp.addCookie(lastVisit);
このセクションでは、Cookie に保管された値に明示的にアクセスする方法を説明します。セッションパーシスタンスのために Cookie を使用している場合、JRun にはセッションの値にアクセスする便利な方法が用意されています。
getCookies
メソッドで Cookie にアクセスします。 Cookie[] myCookies = req.getCookies();
getName
メソッドと getValue
メソッドを使用して Cookie とその値にアクセスします。次の例は、Cookie の名前とそれに関連付けられた値を表示します。for(int i=0; i<myCookies.length; i++) { out.println("Cookie の名前:" + myCookies[i].getName()); out.println("値:" + myCookies[i].getValue() + "<br>"); }
Cookie はステート管理で使用される極めて一般的なメカニズムであり、主要なすべての商用ブラウザでサポートされていますが、サポートの内容はブラウザによって異なります。また、クライアントはブラウザの設定で Cookie サポートを無効にできます。
セッションの詳細については、 「セッションの操作」 を参照してください。
次の代替メカニズムを使用して、セッションのステートを維持することができます。