会话与状态管理基础知识
1、 会话与会话状态简介:
(1) 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话。
(2) WEB应用中的会话是指一个客户端浏览器与WEB服务器之间连续发生的一系列请求和响应过程。
(3) WEB应用的会话状态是指WEB服务器与浏览器在会话过程中产生的状态信息,借助会话状态,WEB服务器能够把属于同一会话中的一系列的请求和响应过程关联起来。
2、 如何实现有状态的会话
(1) 在基于WEB的电子商务和其他一些应用中,浏览器与WEB服务器的会话过程必须是有状态,即WEB服务器程序在处理浏览器的下一个请求时,需要知道对该浏览器前面发出的一些请求的处理结果,否则就会出现类似这样的情况:xxxx从网站的登录页面登录以后,再进入购物页面购物时,由于负责处理购物请求的服务器程序不知道对登录页面的处理结果,而知道发生了购物请求,那将无法知道该购物请求时xxxx提交的,还是yyyy提交的。
(2) HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是完全孤立的。
(3) WEB服务器端程序要能从大量的请求消息中区分出哪些请求消息属于同一个会话,即能识别出来自同一个浏览器的访问请求,这需要浏览器对其发出的每个请求消息都进行标识,属于同一个会话中的请求消息都附带同样的标识号,而属于不同会话的请求消息总是附带不同的标识号,这个标识号就称之为会话ID(AessionID)。
(4) 会话ID可以通过一种称之为Cookie的技术在请求消息中进行传递,也可以作为请求URL的附加参数进行传递。会话ID是WEB服务器为没客户端浏览器分配的一个唯一代号,它通常是在WEB服务器接受到某个浏览器的第一次访问产生,并且随同响应消息一道发送给浏览器。
(5) 会话过程由WEB服务器的程序开启,一旦开启了一个会话,服务器端程序就要为这个会话创建一个独立的存储结构来保存该会话的状态信息,同一个会话中的访问请求都可以且只能访问属于该会话的存储结构中的状态信息。
3、 什么是Cookie
(1) Cookie是一种在客户端保持HTTP状态信息的技术,它好比商场发放的优惠卡。
(2) Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。
(3) 一旦WEB浏览器保存了某个Cokkie,那么它在以后每次访问该WEB服务器时,都应在HTTP请求头中将这个Cookie回传给服务器。
(4) WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段Cookie回传给WEB服务器。
(5) 一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称和设置值。
(6) 一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
(7) 浏览器一般只允许存放300多个Cookie,每个站点最多存放20多个Cookie,每个Cookie的大小限制为4KB。