cookie和Session产生的背景及使用(上)
前言
WEB应用程序使用HTTP协议通信,而HTTP协议是"无状态"协议,即服务器一旦响应完客户的请求之后,就断开连接,而同一个客户的下一次请求将重新建立网络连接,服务器应用程序有时是需要判断是否为同一个客户发出的请求,比如客户的多次选购商品,,因此,有必要跟踪同一个客户发出的请求
状态管理
将客户端(浏览器)与服务器之间多次交互(一次请求,一次响应)当做一个整体来看待,并且将多次交互所涉及的数据即状态保存下来 状态指的是数据 管理指得是多次交互时对数据的修改
由此产生了两种状态管理的常见模式
客户端状态管理技术: 将状态保存在客户端,.代表性的是Cookie技术
服务器端状态管理技术: 将状态保存在服务器端,代表性的是Session技术
什么是cookie
因为http协议是一种无状态协议,,服务器一旦响应完客户端的请求后就会断开连接,同一个客户的下一次请求将重新建立网络连接,而服务器应用程序有时候是需要判断是否为同一个客户发出的请求,,这时候就需要将客户端与服务端之间的交互当做整体记录下来进行管理
具体:
浏览器向WEB服务器发送请求时,服务器会将少量的数据以set_Cookie消息头的方式发送给浏览器,浏览器将这些数据保存下来;
客户端发送请求:
服务端处理:
key只能自己定义用来区分不同的Cookie的名字
当浏览器再次访问服务器时,会将这些数据以Cookie消息头的方式发送给服务器
服务器的处理
修改Cookie
Cookie的生存空间
默认情况下,浏览器会将Cookie保存在内存中,只要浏览器不关闭,Cookie就一直存在
如果希望关闭浏览器后Cookie仍在,可以通过设置过期时间
void Cookie.setMaxAge(int seconds); 注seconds单位是秒,精度不是很高
Cookie的生存时间
seconds>0:
浏览器要保存Cookie的最长时间为设置的参数值,如果超过指定的时间,浏览器会删除这个Cookie.此时Cookie保存早硬盘上.
seconds=0:
删除Cookie,在修改Cookie的生存时间为0后,随着response发送回客户端,替换原有Cookie,因生命周期到了即将该Cookie删除
seconds<0:
缺省值,浏览器会将Cookie保存到内存中
Cookie编码
Cookie解码
Cookie的路径
发送Cookie的条件
可以修改Cookie的路径
Cookie的限制