关于Session 和 Cookies 的几点论述

上一篇 / 下一篇  2010-10-25 10:17:29

http协议本身是一种无状态的协议,引入Cookie以及session主要是为了
来保持连接的状态。
Cookie:是一种在客户端保持连接状态的机制
Session:是一种在服务端保持连接状态的方案。


Cookie机制:Cookie是在客户端浏览器按照一定规则自动发生给服务器端的,浏览器
会检查存储在硬盘上的Cookies,如果改Cookie的作用范围大于或等于改资源的作用范围的
话,Cookie就会依附在http头部,并且发送出去。
Cookie包括:内容、过期时间、名字、路径、域


Session机制:当程序要为某个客户端的请求创建session时,程序的服务器首先会检查这个请求的session id标志 是否存在,
如果存在的话,程序就会按照这个session id 把相应 的session找出来,通常session id 就是Cookie的名字,如果Cookie
被禁止,通常就会采用url重写的方法将session id附加到url路径的后面,目的就是为了一直保持连接状态。因此,我们要想
一直保持连接状态的话,就必须将每一个session id 附加到url路径的后面。

Session的几个问题:

Session何时被创建?
不是在客户端访问时就被创建而是在服务器调用httpserverletRequest.getRequest(true)时,才被创建

Session何时被删除?
 A,程序调用httpSession.invalidate() 简单的说就是在客户端发生login off 的操作
 B距离上一次收到客户端发送的session id时间间隔超过了session的超时设置  即超时
 C, 服务器进程被停止(非持久session)
3, 如何做到关闭浏览器同时关闭session:
 严格说做不到,可以让所有的客户端页面使用window.onclose来监视浏览器的关闭东西,然后向服务器发
 送一个请求来删除session,但是对于浏览器崩溃或者强行杀死进程时仍然无能为力。
 


TAG:

 

评分:0

我来说两句

Open Toolbar