モジュール java.base
パッケージ java.net

クラスCookieManager


public class CookieManager
extends CookieHandler
CookieManagerはCookieHandlerの具象実装を提供し、CookieのストレージとCookieの受け入れ/拒否に関するポリシーとを分離します。 CookieManagerは、ストレージを管理するCookieStoreと、Cookieの受け入れ/拒否に関するポリシー決定を行うCookiePolicyオブジェクトとを使って初期化されます。

java.netパッケージにおけるHTTP Cookie管理は、次のようになっています。


                  use
 CookieHandler <------- HttpURLConnection
       ^
       | impl
       |         use
 CookieManager -------> CookiePolicy
             |   use
             |--------> HttpCookie
             |              ^
             |              | use
             |   use        |
             |--------> CookieStore
                            ^
                            | impl
                            |
                  Internal in-memory implementation
 
  • CookieHandlerがCookie管理の中核となる。 ユーザーは、CookieHandler.set Defaultを呼び出して、concrete CookieHandler実装を使用するように設定できます。
  • CookiePolicy.shouldAcceptがCookieManager.putによって呼び出され、あるCookieを受け入れてCookieストア内に格納すべきかどうかが確認される。 ユーザーは、3つの定義済みCookiePolicy、つまりACCEPT_ALL、ACCEPT_NONE、ACCEPT_ORIGINAL_SERVER、のいずれかを使用することもできるし、ユーザー独自のCookiePolicy実装を定義し、CookieManagerにそれを使用するよう指示することもできる。
  • CookieStoreは、受け入れられたすべてのHTTP Cookieの格納場所となる。 作成時に指定されなかった場合、CookieManagerインスタンスは内部のインメモリー実装を使用する。 また、ユーザーが別のものを実装し、CookieManagerにそれを使用するよう指示することもできる。
  • 現時点では、CookieManagerによって使用されているのは、CookieStore.add(URI, HttpCookie)とCookieStore.get(URI)だけである。 他のものは完全性のためであり、より洗練されたCookieStore実装、例えばNetscapeCookieStoreによって必要とされるかもしれません。

ユーザーが独自のHTTP Cookie管理動作を組み込む方法としては、さまざまなものが考えられます。次に例を示します。

  • CookieHandler.setDefaultを使って新しいCookieHandler実装を設定する。
  • CookieManagerをデフォルトのCookieHandler実装にするが、ユーザー独自のCookieStoreCookiePolicyを実装し、デフォルトのCookieManagerにそれらを使用するよう指示する。
           // this should be done at the beginning of an HTTP session
           CookieHandler.setDefault(new CookieManager(new MyCookieStore(), new MyCookiePolicy()));
         
  • CookieManagerをデフォルトのCookieHandler実装にするが、カスタマイズされたCookiePolicyを使用する。
           // this should be done at the beginning of an HTTP session
           CookieHandler.setDefault(new CookieManager());
           // this can be done at any point of an HTTP session
           ((CookieManager)CookieHandler.getDefault()).setCookiePolicy(new MyCookiePolicy());
         

この実装は、RFC 2965のセクション3.3に準拠しています。

導入されたバージョン:
1.6
関連項目:
CookiePolicy
  • コンストラクタの詳細

    • CookieManager

      public CookieManager()
      新しいCookieマネージャを作成します。

      このコンストラクタは、デフォルトのCookieストアと受け入れポリシーを使って新しいCookieマネージャを作成します。 その効果はCookieManager(null, null)と同じです。

    • CookieManager

      public CookieManager​(CookieStore store, CookiePolicy cookiePolicy)
      指定されたCookieストアとCookieポリシーを使って新しいCookieマネージャを作成します。
      パラメータ:
      store - Cookieマネージャが使用すべきCookieStorenullの場合、CookieマネージャはデフォルトのインメモリーCookieStore実装を使用します。
      cookiePolicy - Cookieマネージャがポリシー・コールバックとして使用すべきCookiePolicyインスタンス。nullの場合、ACCEPT_ORIGINAL_SERVERが使用されます。
  • メソッドの詳細

    • setCookiePolicy

      public void setCookiePolicy​(CookiePolicy cookiePolicy)
      このCookieマネージャのCookieポリシーを設定するためのもの。

      CookieManagerのインスタンスはデフォルトで、CookieポリシーACCEPT_ORIGINAL_SERVERを持ちます。 ユーザーはいつでもこのメソッドを呼び出して別のCookieポリシーを設定できます。

      パラメータ:
      cookiePolicy - Cookieポリシー。 nullも可能ですが、現在のCookieポリシーに対する効果はありません。
    • getCookieStore

      public CookieStore getCookieStore()
      現在のCookieストアを取得するためのもの。
      戻り値:
      Cookieマネージャが現在使用しているCookieストア。