Cookie の処理

Cookie は、サーバサイドアプリケーションによって使用される一般的なメカニズムで、個々のブラウザに情報を保管します。ブラウザに保管された Cookie はサーバサイドアプリケーションによって取り出されます。Cookie を使用することで、Web アプリケーションは各ブラウザに特定の変数を作成できます。これらの変数には、ユーザー名や最終アクセスの日付を保管できます。

Cookie を使用したセッション追跡を有効にした場合、JRun は JSESSIONID と名付けたセッション追跡 Cookie を作成します。このセッション追跡 Cookie の名前は、jrun-web.xml ファイルの cookie-config セクションで変更できます。詳細については、 「jrun-web.xml ファイルでのセッション設定」 を参照してください。

Cookie の有効期限定義

Cookie は、HTTP プロトコルのステートレスという性質を補完するセッションパーシスタンスメカニズムを提供します。Cookie にはテンポラリ Cookie とパーマネント Cookie があります。

Cookie の寿命が、その Cookie のブラウザでの有効期間です。この値は Cookie に保管されます。jrun-web.xml ファイルの cookie-max-age でこの設定を定義します。ブラウザサイドでは、cookie-max-age の有効期限が切れると、ブラウザはその Cookie ファイルを削除します。詳細については、 「jrun-web.xml ファイルでのセッション設定」 を参照してください。

Cookie のセッションタイムアウトは、セッションがアクティブでない間サーバのメモリに JRun が Cookie を維持する期間を示します。 「セッションタイムアウトの変更」 で説明されているように、セッションがそのセッションタイムアウトに達すると、JRun はサーバサイドの session オブジェクトを廃棄します。

Cookie の作成

このセクションでは、Cookie を明示的に作成する方法を説明します。Cookie をセッションパーシスタンスのために使用している場合は、getSession メソッドが呼び出されると JRun は暗黙的に Cookie を作成します。

Cookie の作成

  1. 次のコードに示すように、Cookie に保存する値を確立します。
    Date dt = new Date();
    String todayString = dt.toString();
    
  2. 次のコードに示すように、新規 Cookie オブジェクトを作成します。
    // Cookie インスタンスを作成します。
    // この例では、現在の日付と時刻を保存します。
    Cookie lastVisit = new Cookie("lastVisit", todayString);
    
  3. 次の行に示すように、秒単位で Cookie のタイムアウトを設定します。
    lastVisit.setMaxAge(60*60*24*365); //1 年間この Cookie を廃棄しません。
    
  4. 次の行に示すように、Cookie オブジェクトをサーブレットの response オブジェクトに関連付けることで、Cookie をブラウザに返します。
    resp.addCookie(lastVisit);
    

Cookies へのアクセス

このセクションでは、Cookie に保管された値に明示的にアクセスする方法を説明します。セッションパーシスタンスのために Cookie を使用している場合、JRun にはセッションの値にアクセスする便利な方法が用意されています。

Cookie へのアクセス

  1. 次の例に示すように、HttpServletRequest オブジェクトの getCookies メソッドで Cookie にアクセスします。
    Cookie[] myCookies = req.getCookies();
    
  2. Cookie オブジェクトの 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 はステート管理で使用される極めて一般的なメカニズムであり、主要なすべての商用ブラウザでサポートされていますが、サポートの内容はブラウザによって異なります。また、クライアントはブラウザの設定で Cookie サポートを無効にできます。

セッションの詳細については、 「セッションの操作」 を参照してください。

次の代替メカニズムを使用して、セッションのステートを維持することができます。