文档

Java™ 教程
隐藏目录
默认CookieManager
教程: 自定义网络
课程: 使用Cookie

默认的CookieManager

java.net.CookieManager提供了一个具体的CookieHandler实现,对于大多数用户来说,它足以处理HTTP状态管理。 CookieManager将cookie的存储与接受和拒绝它们的策略分离。 CookieManager使用java.net.CookieStorejava.net.CookiePolicy进行初始化。 CookieStore管理cookie的存储。 CookiePolicy根据策略决定接受和拒绝cookie。

以下代码显示了如何创建和设置全局的CookieManager:

java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);

第一行调用默认的CookieManager构造函数创建实例。第二行调用CookieHandler的静态setDefault方法设置全局处理程序。

默认的CookieManager构造函数创建一个具有默认cookie存储和接受策略的新CookieManager实例。 CookieStore是存储任何接受的HTTP cookie的地方。如果在创建时未指定,CookieManager实例将使用一个内部的内存实现。此实现不是持久的,只在Java虚拟机的生命周期内存在。需要持久存储的用户必须实现自己的存储。

CookieManager使用的默认cookie策略是CookiePolicy.ACCEPT_ORIGINAL_SERVER,仅接受来自原始服务器的cookie。因此,服务器的Set-Cookie响应必须设置“domain”属性,并且必须与URL中的主机域匹配。有关更多信息,请参见java.net.HttpCookie.domainMatches。需要不同策略的用户必须实现CookiePolicy接口,并将其传递给CookieManager构造函数或使用setCookiePolicy(cookiePolicy)方法将其设置为已构造的CookieManager实例。

从cookie存储中检索cookie时,CookieManager还强制执行RFC 2965第3.3.4节的路径匹配规则。因此,cookie还必须设置其“path”属性,以便在从cookie存储中检索cookie之前可以应用路径匹配规则。

总之,CookieManager提供了处理cookie的框架,并为CookieStore提供了一个很好的默认实现。通过设置自己的CookieStoreCookiePolicy或两者,可以对CookieManager进行高度定制。


上一页: CookieHandler 回调机制
下一页: 自定义 CookieManager