客户端用cookie保存了sessionID,当咱们请求服务器的时候,会把这个sessionID一块儿发给服务器,服务器会到内存中搜索对应的 sessionID,若是找到了对应的 sessionID,说明咱们处于登陆状态,有相应的权限;若是没有找到对应的sessionID,这说明:要么是咱们把浏览器关掉了(后面会说明为什 么),要么session超时了(没有请求服务器超过20分钟),session被服务器清除了,则服务器会给你分配一个新的sessionID。你得重 新登陆并把这个新的sessionID保存在cookie中。
在没有把浏览器关掉的时候(这个时候假如已经把sessionID保存在 cookie中了)这个sessionID会一直保存在浏览器中,每次请求的时候都会把这个sessionID提交到服务器,因此服务器认为咱们是登陆 的;固然,若是太长时间没有请求服务器,服务器会认为咱们已经因此把浏览器关掉了,这个时候服务器会把该sessionID从内存中清除掉,这个时候若是 咱们再去请求服务器,sessionID已经不存在了,因此服务器并无在内存中找到对应的 sessionID,因此会再产生一个新的sessionID,这个时候通常咱们又要再登陆一次。 html
这 个时候若是咱们请求服务器,由于没有提交sessionID上来,服务器会认为你是一个全新的请求,服务器会给你分配一个新的sessionID,这就是 为何咱们每次打开一个新的浏览器的时候(不管以前咱们有没有登陆过)都会产生一个新的sessionID(或者是会让咱们从新登陆)。
当我 们一旦把浏览器关掉后,再打开浏览器再请求该页面,它会让咱们登陆,这是为何?咱们明明已经登陆了,并且尚未超时,sessionID确定还在服 务器上的,为何如今咱们又要再一次登陆呢?这是由于咱们关掉浏览再请求的时候,咱们提交的信息没有把刚才的sessionID一块儿提交到服务器,因此服 务器不知道咱们是同一我的,因此这时服务器又为咱们分配一个新的sessionID,打个比方:浏览器就好像一个要去银行开户的人,而服务器就比如银行, 这个要去银行开户的人这个时候显然没有账号(sessionID),因此到银行后,银行工做人员问有没有账号,他说没有,这个时候银行就会为他开通一个账 号。因此能够这么说,每次打开一个新的浏览器去请求的一个页面的时候,服务器都会认为,这是一个新的请求,他为你分配一个新的sessionID。浏览器
转自:http://www.cnblogs.com/japanbbq/archive/2011/09/01/2161650.html服务器