1.概述
会话保持技术的出现是因为HTTP 是一个无状态的协议,这一次请求和上一次请求是没有任何关系的,互相无法感知,上一次请求干了什么?这一次请求完全不知道,会话保持技术就是为了以一种第三方的设计实现http请求之间的联系,让请求之间能够相互感知。
目前的两大会话保持技术:
- cookie
- session
cookie和session的区别,用一个例子解释:
封闭式管理的学校,如何进入校园?
- 方式1.学校准备一本花名册,进门的时候挨个比对。
- 方式2.学生办一张学生卡,持卡进出。
2.cookie
客户端技术,即状态(数据)保存在客户端,即学生卡进入校园这一方式。
服务器向客户端返回(数量无限制)cookie,一个cookie即一个键值对。
客户端、服务器交互过程中cookie的载体为request和response。
3.session
服务器技术,即状态(数据)保存在服务端,即花名册进入校园这一方式。和cookie一样,在客户端、服务器交互过程中session的载体也是request、response。
session的产生:
session并不会在客户端访问服务器的时候自动创建,而是必须通过HttpServletRequest的getSession()来产生。
session的销毁:
- session.invalidate()
- 前后两次请求超出了session指定的生命周期时间。
除此之外,session不会被销毁,之所以平时感觉到浏览器关闭session就会销毁是因为关闭浏览器后再重新打开浏览器如果之前该浏览器在服务器上存在session的话,会重新创建一个session覆盖老的session,所以体感上就会感觉关掉浏览器后session就被销毁了。
session的使用:
由于整个浏览器共享session里面的数据,所以session可以起到类似上下文对象共享数据的功能。
session的唯一身份标识是sessionID,sessionID会自动封装成cookie返回。
这就是为什么,打开浏览器,http请求响应里面都会有一个cookie存在的原因。