1. Session过期的定义:

Session:在计算机中,尤其是在网络应用中,称为“会话”。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间,即在规定的时间内无请求操作,即为session过期。

注:从session不活动的时候开始计算,如果session一直活动,session就总不会过期。

 从该Session未被访问,开始计时; 一旦Session被访问,计时清0;


2. 如果进行测试的时候,session过期的时间较长,不方便验证,但是需要验证这个功能是否健全,可以两种解决方案:

(1)修改服务器的时间,使其时间推后。

(2)修改代码缩小session过期时间。


3. 关于Session机制的误解:只要关闭浏览器,session就消失了

(1)这个说法是错误的,产生这种说法的原因是:大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接服务器时也就无法找到原来的session。

(2)如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。但是当关闭浏览器的时间距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,就会把session删除以节省存储空间。


4. Session结束生命周期的几种情况:

(1)客户端关闭浏览器(只针对session机制都使用会话cookie来保存session id,其实也属于Session过期这种情况,这里单说,是因为大部分的会话机制是这样。)

(2)Session过期。

(3)服务器端调用了session对象的invalidate()方法。

其中(1)(2)是属于自动失效,即web.xml中的session timeout设置的时间过了,

(3)是属于手动调用了失效方法。


5. 举例:

(1)session的过期时间,比如在代码里设置为30分钟。然后session创建成功后开始计时,用户一直没操作,计时计到第15分钟,用户操作了一次,这个计时是不是会重置,接着从零开始计时。

(2)session的过期时间,比如在代码里设置为30分钟。然后session创建成功后开始计时,用户一直没操作,计时计到30分钟后,期间用户一直没有操作,session即为过期。


6. 区别于cookie过期:

(1)cookie是保存在客户端,session保存在服务器端,cookie保存着session相关信息

(2)如果cookie没有超时,那么浏览器每次请求都会使用cookie信息,服务器端

根据cookie信息从session缓存中获取相对应的session。这两个信息有一个超时,用户连接即宣告关闭。

(3)cookie一般分两种。1.不设置过期时间,会存在内存里,浏览器关闭即失效。2.设置过期时间,会存在硬盘里,一直到过期时间才失效。