该类无继承类
引入了如下包
import java.util.Map; import java.util.List; import java.io.IOException; import sun.security.util.SecurityConstants;
该类的类头注释如下:
/** * A CookieHandler object provides a callback mechanism to hook up a * HTTP state management policy implementation into the HTTP protocol * handler. The HTTP state management mechanism specifies a way to * create a stateful session with HTTP requests and responses. * * <p>A system-wide CookieHandler that to used by the HTTP protocol * handler can be registered by doing a * CookieHandler.setDefault(CookieHandler). The currently registered * CookieHandler can be retrieved by calling * CookieHandler.getDefault(). * * For more information on HTTP state management, see <a * href="http://www.ietf.org/rfc/rfc2965.txt"><i>RFC 2965: HTTP * State Management Mechanism</i></a> * * @author Yingxian Wang * @since 1.5 */
大意如下:
CookieHandler对象会提供一个回调途径来绑定http状态管理策略到http协议处理程序上
http状态管理通过http请求和响应来指定创建含状态的回话方法
被http协议使用的系统级CookieHandler可以通过CookieHandler.setDefault(CookieHandler)方法注册
当前被注册的CookieHandler可以通过CookieHandler.getDefault方法返回
对于更多的http状态管理信息,请去看RFC2965
该类含有如下的成员变量:
系统级的CookieHandler(可以申请请求头部,并且管理响应的cookie)
private static CookieHandler cookieHandler;
该类含有如下的成员方法:
获得系统级CookieHandler
public synchronized static CookieHandler getDefault() { SecurityManager sm = System.getSecurityManager();//安全性检查 if (sm != null) { sm.checkPermission(SecurityConstants.GET_COOKIEHANDLER_PERMISSION); } return cookieHandler;//获得当前状态管理器 }
注册成为系统级CookieHandler(null的话可以清空,也就是取消注册
public synchronized static void setDefault(CookieHandler cHandler) { SecurityManager sm = System.getSecurityManager();//安全性检查 if (sm != null) { sm.checkPermission(SecurityConstants.SET_COOKIEHANDLER_PERMISSION); } cookieHandler = cHandler;//绑定到当前的状态管理器上 }
从请求头中指定 uri 的 cookie 缓存中获取所有可用的 cookie。 HTTP 协议实现程序应该确保在添加所有与选择 cookie 相关的请求头之后且在发送请求之前调用此方法。
public abstract Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders) throws IOException;
向响应头中出现的所有可用cookie加入到cookie缓存中
public abstract void put(URI uri, Map<String, List<String>> responseHeaders) throws IOException;
这里所谓系统级就是作为静态对象的存在,只能存在一个,每次外部的操作也仅能对该静态对象进行操作。虽然没有看到和该类的对应结合类,但大胆的推测下应该大部分都是对这个静态对象进行操作,同时向系统底层提供的操作接口也应该是这个静态对象。
由于http本质上是一种无状态链接,对于需要状态响应的部分功能就需要使用cookie(以及session)来完成,这里的cookie就是链接状态的信息载体(一般存在于客户端),在请求时会把自己本身的状态信息发送到服务器端,接收响应时也会接受服务器端新设置的cookie(服务器标志该客户的状态)。

本文介绍Java中的CookieHandler类,该类用于HTTP状态管理,通过回调机制将策略绑定到HTTP协议处理程序。文章详细解释了系统级CookieHandler的注册与获取方法,以及如何通过CookieHandler进行Cookie的读取和写入。

被折叠的 条评论
为什么被折叠?



