服务器端Session和客户端Session
jsessionid客户端Session和服务器端Session
当⽤户⾸次与web服务器建⽴连接的时候,服务器会给⽤户分发⼀个SessionID作为标识。SessionID是⼀个由24个字符组成的随机字符串。⽤户每次提交页⾯,浏览器都会把这个SesstionID包含在HTTP头中提交给web服务器,这样web服务器就能区分当前请求页⾯是哪⼀个客户端。这个SessionID就是保存在客户端的,属于客户端Session。
其实客户端Session默认是以cookie的形式来存储的,所以当⽤户禁⽤了cookie的话,服务器端就得不到SessionID。这时我们可以使⽤url的⽅式来存储客户端Session。也就是将SessionID直接写在了url中,当然这种⽅法不常⽤。
sessionid如何产⽣?由谁产⽣?保存在哪⾥?
sessionid是⼀个会话的key,浏览器第⼀次访问服务器会在服务器端⽣成⼀个session,有⼀个sessionid和它对应。tomcat⽣成的sessionid叫做jsessionid。 session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的⽅法:随机数+时间+jvmid; 它存储在服务器的内存中,tomcat的StandardManager类将session存储在内存中,也可以持久化到file,
数据库,memcache,Redis等。客户端只保存sessionid到cookie中,⽽不会保存session,session销毁只能通过invalidate或超时,关掉浏览器并不会关闭session。
session会因为浏览器的关闭⽽删除吗?
Cookie分为内存中Cookie(也可以说是进程中Cookie)和硬盘中Cookie。⼤部分的Session机制都使⽤进程中Cookie来保存Session id的,关闭浏览器后这个进程也就⾃动消失了,进程中的Cookie⾃然就消失了,那么Session id也跟着消失了,再次连接到服务器时也就⽆法到原来的Session了。 当然,我们可以在登陆时点击下次⾃动登录,⽐如说CSDN的“记住我⼀周”,或者我们的购物车信息可以在切换不同浏览器时依然可⽤。这就要⽤到我们上⽂提到的另⼀种Cookie了——硬盘中Cookie,这时Session id将长期保存在硬盘上的Cookie中,直到失效为⽌。
详细参考:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论