面试经验:
谈到Session的时候就侃Session和Cookie的关系:Cookie中的SessionId。
和别人对比说自己懂这个原理而给工作带来的方便之处。
 
session 跟 cookie 关系 - hzh - The Legend of 1900
 
客户第一次发送请求给服务器,此时服务器产生一个唯一的sessionID,并返回给客户端(通过cookie),此时的cookie并没有setMaxAge();只是保存于客户端的内存中,并与一个浏览器窗口对应着,由于HTTP协议的特性,这一次连接就断开了
以后此客户端再发送请求给服务器的时候,就会在请求request中携带cookie,由于cookie中有sessionID,所以服务器就知道这是刚才那个客户,从而区分不同的人,购物车就是这样实现的
举 个简单例子就像人们去超市购物,去存包,第一个去的时候(客户第一次发送请求给服务器),超市会给你一个号码牌(此时服务器产生一个唯一的 sessionID,并返回给客户端(通过cookie)),你可以在你自己的柜子里存东西(在服务器属于此客户的内存区域存数据),下次你再去的时候, 拿着这个号码牌(请求request中携带cookie),超市就知道哪些东西是你的,然后给你取出来,如果你几天都没去取(session失效了,在服 务器端配置),你再去的时候东西就拿不到了
如果你把这个号码牌丢了(刚才的cookie失效了,比如你重启电脑,刚才存于内存中sessionID也就丢了),再去拿东西,当然无法定位了,也就拿不到东西了
如果是新打开一个浏览器的情况,那就像是又一个人去超市存东西一样,你的东西跟他的东西是两码事,互不影响,他有他自己的sessionID,你有你自己的

以下是我用firefox中的firebug测试结果
第一次请求时:(注意,访问jsp时会自动创建sessionID,而访问Servlet,需要你自己写代码才会创建sessionID)
session 跟 cookie 关系 - hzh - The Legend of 1900
 可以看到服务器给我们分配了一个sessionID,随着响应返回给客户端

第二次请求时:
session 跟 cookie 关系 - hzh - The Legend of 1900
 之后请求时,客户端都会携带这个sessionID,以便服务器能辨认