最近看了一下cookie和session,下面想说一下体会:
cookie是保留在客户端的东西,但他是在服务器产生的,当浏览器发送一个请求时,会根据他请求的路径是否包含浏览器保存的cookie的路径,若有保存的,则把这个COOKIE带到服务器,这个cookie可以保存几天。利用cookie可以让你在浏览一个页面是,用户名自动出现
session他跟一个会话共死,利用session可以判断该用户是否登录,避免没有登录直接浏览页面,session是保存在服务器的,cookie相当于卡,SESSIONID相当于卡号(即存在卡里),session相当于你存放在银行的账户信息,服务器不会马上给你创建session,在第一次获取session时,即调用request.getSession()才会创建!
request.getSession()方法的原理如下:
首先获取Cookie中的JSESSIONID,如果sessionId不存在,创建session,把session保存起来,把新创建的sessionId保存到Cookie中, 如果sessionId存在,通过sessionId查找session对象,如果没有查找到,创建session,把session保存起来,把新创建的sessionId保存到Cookie中;如果sessionId存在,通过sessionId查找到了session对象,那么就不会再创建session对象了。该方法最后 返回session
如果创建了新的session,浏览器会得到一个包含了sessionId的Cookie,这个Cookie的生命为-1,即只在浏览器内存中存在,如果不关闭浏览器,那么Cookie就一直存在。
>下次请求时,再次执行request.getSession()方法时,因为可以通过Cookie中的sessionId找到session对象,所以与上一次请求使用的是同一session对象。