现在的位置: 首页 > 综合 > 正文

SESSION的运行机制

2013年04月24日 ⁄ 综合 ⁄ 共 1251字 ⁄ 字号 评论关闭

对于SESSION来说....

 

 

SESSION对象的生成、管理、销毁,都是由服务器处理的............

 

 

这点我们应该要清楚的意识到,SESSION不是浏览器打开就存在的,而是第一此请求后,服务器中的Listerne对象负责创建的....

 

 

当这里所创建的SESSION,其结构是保存在服务器的内存中,是以MAP形式保存,且每个SESSION对应一个MAP..........

 

 

而SESSION不是通过其本身的ID标示的,反之,SESSION的ID对应了多个SESSION对象...............

 

一个客户端无论请求多少次服务器,只要是在同一个窗口或是选项卡请求的,则这一系列的动作和服务器相应做出的处理,就称为一个会话...

 

因为用户可以同时开启N个会话,所以这里的ID对应了N个SESSION对象就是合理的............

 

在平常我们看来,也许很多人说,打开浏览器就生成的SESSION,但其实不是,是在用户访问特定目标服务器的时候有服务器产生的,而当用户关闭浏览器了,很多人认为SESSION也失效了,这里是一个误解.........

 

很多认为SESSION失效的原因很简单,因为SESSION的默认是通过cookie来实现的,但这个cookie不是存放在物理逻辑盘中的,而存在在内存当中的,换句话说,就存放在内存为浏览器对象分配的指定空间中,当关闭浏览器的时候,存在这个范围中的cookie也跟随这个内存空间一起被销毁...........

 

当我们为SESSION设定了存放时间时,SESSION通过cookie(在不允许使用cookie的情况下,SESSION是使用JS文件进行保存)存放到物理逻辑盘上,这时当我们在原来的浏览器上按F5刷新或者是回车后,可以看见的是,我们的信息还能出现,这时因为,在服务器上只要我们不销毁SESSION对象,SESSION对象永远不会销毁,但如果我们新打开一个浏览器来请求,服务器收到请求后,会去对比SESSION的ID,记住这里对比的是同一个ID,不再会出现新的ID,原因是,我们特意的为SESSION对象设置了时间,而这个时间由服务器管理,每请求一次,服务器会计算时间差,通过时间差来验证此cookie是否应该销毁,所以为什么说,一个ID对应多和SESSION.....

 

因为一个客户端从开始请求到处理、获取结果,这一系列都没有在用到第二个客户端,换句话说,一个会话级别是以一个客户端的启动开始到关闭客户端结束.................

 

很多人以为SESSION不会被销毁是人工控制的,就想CSDN,其实不是的,而是在经过一段时间后,我们原本用的SESSION被新的SESSION代替了,而这个SESSION的ID就是前个SESSION的ID,因为一个客户端永远只有一个ID,但对于每次处理的流程和处理后的结果则是一个会话,SESSION就是事务处理后的结果对象,它代表了,一个会话完成后的结果..........

【上篇】
【下篇】

抱歉!评论已关闭.