一、什么是cookie
是在客户端保持http信息状态的技术
是浏览器访问web服务器的某个资源时,由web服务器在http响应消息头中附带传送给浏览器的一段数据。
浏览器可以决定是否保存这段数据。
一旦浏览器保存了这段数据,那么在他以后每次能访问web服务器时,都会在http请求头中将这段数据传回给web服务器。
Cookie最先由web服务器发出的,是否发送cookie和发送的cookie的具体内容,完全由web服务器端程序决定的。
Web服务器在应答消息中增加set-cookie响应头字段将cookie信息发送浏览器
浏览器则通过在请求消息中增加cookie请求字段将cookie回传给web服务器
一个cookie只能标示一种信息,至少含有一个标示该信息的名称和设置值
一个web站点可以给发送多个cookie各一个浏览器
一个web浏览器也可以存储多个站点的cookie
设置有效期setMaxAge()
二、set-cookie响应头字段
set-cookie响应头字段用于指定web服务器向客户端传送的cookie内容,一般是在web服务器程序想要启动一个有状态的会话时,他就会在响应消息中添加set-cookie字段来传送会话id以及相关的信息
格式:
set-cookie:cookie名称=值;属性=属性值;属性名2=属性值2;………..
set-cookie头字段中常用的属性值:
comment:制定一些提示信息
domain:指定cookie在哪个域中的所有主机时,都将回传这个cookie信息。默认值为当前主机名。
Max-age:指定cookie在客户端保持的有效时间,值时以秒为单位的十进制整数。
当设置为0时,表示通知浏览器立即删除这个cookie信息。
设置为负整数时,表示要求客户端浏览器将这个cookie信息保存在自身进程的内存中,cookie信息随着这个浏览器进程的关闭而消失,并且这个cookie消息对同一个台计算机的其他浏览器进程无效,这和没有设置max-age一样
Path:用于指定cookie对服务器上的哪个url目录和其子目录有效。默认值是产生set-cookie头字段时的那个请求url地址所有的目录
Port:指定浏览器通过哪些端口访问此web服务器时cookie才有效
三、cookie请求头字段
如果浏览器统一接收服务器发送过来的cookie信息,他会存储cookie信息,并在以后对该web服务器每次访问的请求消息中都是使用一个cookie请求头字段将cookie消息回送给web服务器。如果有多个cookie消息,也是通过一个cookie请求头字段来回送的。
浏览器每次都会按照一定的规则来向服务器发送访问请求的
四、在servlet中操作cookie
Cookie类中提供了一个构造方法来创建cookie实例
Getname()方法:用于获取该cookie的名称
Setvalue()方法和Getvalue()方法:用于设置和获取cookie的值
Setmaxage()方法和getmaxage()方法:用于设置和获取cookie在客户端浏览器上保持的有效地时间
Setpath()方法和setpath()方法:用于设置和获取cookie的有效路径
Setdomain()方法和getdomain()方法:用于设置和获取cookie的有效域
如果想把构造好的cookie实力信息添加到响应消息头中,可以使用httprespose接口中提供的addCookie()方法
如果想从http中请求头中读取所有的cookie消息,可以使用httprequest接口中提供的getcookies()方法,这个方法会读取请求消息中中所有的cookie消息,并封装成各个cookie实例,存储在一个数组中在返回,遍历这个cookie数组,就可以获取想要的cookie消息了。