初学者对于session的一些个人理解

客户端第一次请求服务端时, ( jsessionid与sessionid去匹配) 服务端会产生一个session对象 (用于保存该客户的信息,这个sessionid时储存在服务端的)
并且每个session对象 都会有一个唯一的sessionId( 用于区分其他session) ;
服务端会产生一一个cookie, 并且该cookie的name=JSESSIONID , value=服务端sessionId的值;
然后服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端就得到了一个cookie (JSESSIONID-session) ;
因此,客户端的cookie就可以和服务端的session 一一 对应(JSESSIONID - sessionID)
客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid) ,说明此用户不是第一 次访问,无需登录。

 

下面说一下我个人想到的一个例子(如果觉得有错误的话请多包涵):

假定餐厅的取餐规则是:店员那里又很多个成双的号码牌(及号码相同的牌子有两个)
顾客点餐之后,店员给你一个号码牌,另外一个相同的号码牌在店员手中
只有顾客在取餐时拿出相对应的号码牌,才能够取餐成功。

现在你去餐厅吃饭
第一次跟店员说我要取餐,店员检查一下发现你没有号码牌(第一次匹配,服务器发现你没有相应的cookie记录)。
让你先点餐(提示说你要先要登陆成功过一次),你点完了餐(登陆成功),店员也确认说你点完餐了(服务器给用户一个cookie里面的name=SESSIONID、value=sessionid)
店员给了你一个号码牌(这个号码牌就是JSESSIONID,号码牌上的数字就是sessionid)
(cookie中的JSESSIONID与sessionid的关系类似于map集合中key跟value的关系)
店员那里留存着另一个号码牌(服务器中保存的sessionid)。

当你第二次跟店员说你要取餐的时候,你拿出了你的号码牌,店员找了一下他手里的号码牌

(服务器发现你有cookie记录,然后将服务器中储存的sessionid与用户cookie中SESSIONID所对应的value值(sessionid)进行匹配),发现他那里也有一个单独的号码牌(匹配成功),然后你就可以取餐了

这一次你就不用再付款(不需要再重复登陆)。

上一篇:python 虚拟环境篇


下一篇:Cookie和Session的区别