一直对session和cookie机制不是很了解。最近查阅了相关资料,简单说下我对session和cookie的理解。
关于session和cookie最常见的说法就是session是服务端的,cookie是客户端的。之前对这句话的概念一直很模糊,现在终于明白了。其实可以把session和cookie当成
一个hashMap的key和value。在这里cookie就是key。而session就是value。session全部保存在服务端,cookie则保存在每个客户端,即浏览器。
request.getsession()....这段代码相信每个程序员都写过,就是这段代码来关联session和cookie的。每一个请求即request里面都有一个名为JsessionId的cookie,如JSESSIONID=123122123132121;
服务端通过这个JsessionId取到服务端对应的session。当然这里的JsesisonId也可能是其他的名称。
关于session的失效和cookie的失效。经常听到的一句话就是浏览器关了session就失效了。这是个误区。浏览器关了只有可能cookie失效,跟session没有半毛钱关系。难道浏览器关闭了还向服务器发送了一个消除session的请求?浏览器关闭了有可能把cookie删除了,所以第二次打开浏览器时会重新生成一个cookie,即JsesionId。这样一来,之前服务端的那个session的key就丢失了。当然你的登录状态也就没有了。所以很多人就以为session也删除了,其实不然要过二十分钟这个session才会被销毁。这个二十分钟可以自己设置。