关于浏览器访问服务器 sessionid的东西

昨天快下班了,公司的小美女开发翟L,问了一个问题:“保存sessionid的cookie是什么时候创建的??”。

我想了半天:

知道session的用法,以及session的生命周期(第一次调用,requset.getsession(true)时创建);

也知道cookie的用法;

也知道session其实是基于cookie的;

但是“保存sessionid的cookie是什么时候创建的??”,有个现象:浏览器请求一个服务器资源,第一次请求后一般情况下,浏览器都能拿到一个保存有jsessionid的cookie,但是我们的代码里面,可并没有req.getsession()的语句,更别提搞个cookie,把sessionid存进去。


昨晚我试了下:

1.直接请求一个url,直接返回一个html页面,监控sessionid。(发现是有的)

关于浏览器访问服务器 sessionid的东西_第1张图片

关于浏览器访问服务器 sessionid的东西_第2张图片

2.直接请求一个url, 相应的方法里面有 req.getsession(false);(意思是如果有session,就返回;如果没有就返回null)

  发现:session是有的。(在我们调用 req.getsession前就有了)

关于浏览器访问服务器 sessionid的东西_第3张图片

关于浏览器访问服务器 sessionid的东西_第4张图片

目前的推测:  浏览器和服务器建立,会创建session,把sessionid保存在cookie中,返给浏览器。但是这些不需要我们程序员去实现,是服务器(tomcat等帮我们做的)。

-------------------------------------------

还是回到翟的问题:“保存sessionid的cookie是什么时候创建的??” 

答:是浏览器第一次访问服务器时创建的,可能在服务器内部是这样的:第一次访问,调用req.getsession(true), 第一次访问没有session,所以去新建一个,然后new Cookie,将 sessionid存进去。(具体的源码没有找到)

-----------

其他session和cookie的相关知识:

https://blog.csdn.net/qq_33251859/article/details/77481868

https://www.cnblogs.com/woshimrf/p/5317776.html

  https://blog.csdn.net/xihuangwutong/article/details/9819033 

你可能感兴趣的:(java基础)