我们都知道 session是存储在服务器端的,cookie是存储在客户端的;
他们两者之间又有什么联系呢?这点要先从HTTP先说起。
HTTP协议是一种无状态的 通信协议 。那么这就以为着 客户端按道理是需要每次请求之前都要和服务器做连接的。 但是每次都进行这种连接,会非常耗时,并且这些重复的网络请求的意义都不大,所以如何避免这些重复的工作就成为了聪明人们发挥聪明的地方了。
cookie的特点就是比较大,可以储存一些信息,比如数据。 session一般保存的都是用户信息之类的数据。
在客户端请求服务器的这个过程中,请求到了服务器端时,Tomcat或者jetty之类的容器会生成一个:JsessionID。 这个ID号 是不唯一的,大部分的session机制都会将这个JsessionID 保存到cookie当中去。同时session中也有这个JsessionID。
然后又因为浏览器中的cookie它是保存到 计算机的硬盘中的,所以就算我们关闭了浏览器只要不人为的清空浏览器中的缓存cookie,那么浏览器按道理就会一直保存着这个JsessionID,只要通过这个JsessionID就能找到 这个用户的session信息。
但是如果你的计算机处于开机状态又没有锁屏,结果别人打开了你的浏览器,就可以直接获取你的一些信息这样也太不安全了。所以服务器端也会对这个session进行一个 时间限制,一般是30分钟 可以在web.xml中设置。
30分钟过后服务器会怎么处理这个信息呢? 当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。
以前只是知道个大概,后来仔细点把这个事给想清楚了,很简单的知识,但又很基础很重要的知识,还是有必要记一记的