Cookie 技术概述
Cookie 是客户端技术,服务器把每个用户的数据以 cookie 的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的 web 资源时,就会带着各自的数据去。这样,web 资源处理的就是用户各自的数据了。
什么是 Cookie
Cookie 是一种在客户端保持 HTTP 状态信息的技术,它好比商场发放的优惠卡。
Cookie 是在浏览器访问 WEB 服务器的某个资源时,由 WEB 服务器在 HTTP 响应消息头中附带传送给浏览器的一片数据,WEB 服务器传送给各个客户端浏览器的数据是可以各不相同的。
一旦 WEB 浏览器保存了某个 Cookie,那么它在以后每次访问该 WEB 服务器时,都应在 HTTP 请求头中将这个 Cookie 回传给 WEB 服务器。
WEB 服务器通过在 HTTP 响应消息中增加 Set-Cookie 响应头字段将 Cookie 信息发送给浏览器,浏览器则通过在 HTTP 请求消息中增加 Cookie 请求头字段将 Cookie 回传给 WEB 服务器。
Cookie API
javax.servlet.http.Cookie 类用于创建一个 Cookie,response 接口也中定义了一个 addCookie 方法,它用于在其响应头中增加一个相应的 Set-Cookie 头字段。同样,request 接口中也定义了一个 getCookies 方法,它用于获取客户端提交的 Cookie。Cookie 类的方法:
public Cookie(String name, String value)
- setValue 与 getValue 方法
- setMaxAge 与 getMaxAge 方法
- setPath 与 getPath 方法
- setDomain 与 getDomain 方法
- getName 方法
HTTP 头部示例:
Set-Cookie: username=qiujy; Domain=localhost; path=/
Cookie: username=qiujy; Path=/jsp_04_servlet
Cookie 细节
一个 Cookie 只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个 WEB 站点可以给一个 WEB 浏览器发送多个 Cookie,一个 WEB 浏览器也可以存储多个 WEB 站点提供的 Cookie。
浏览器一般只允许存放 300 个 Cookie,每个站点最多存放 20 个 Cookie,每个 Cookie 的大小限制为 4KB。
如果创建了一个 cookie,并将他发送到浏览器,默认情况下它是一个会话级别的 cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该 cookie 存储在磁盘上,则需要使用 maxAge,并给出一个以秒为单位的时间。将最大时效设为 0 则是命令浏览器删除该 cookie。
注意,删除 cookie 时,path 必须一致,否则不会删除。

