打开浏览器,访问网站地址后,会话开始,浏览器关闭,会话结束
在java EE中,会话管理分为两类,客户端会话技术和服务端会话技术
客户端会话技术
把要共享的数据保存到了客户端,每次请求时,把会话信息带到服务器,从而实现多次请求的数据共享
服务端会话技术
本质仍是客户端会话管理技术,只不过保存到客户端的是一个特殊的标识,并且把要共享的数据保存到了服务端的内存对象中。每次请求时,把这个标识带到服务器端,然后使用这个标识,找到对应的内存空间,从而实现数据共享
Cookie
是客户端浏览器的缓存文件,里面记录了客户浏览器访问网站的一些内容。同时,也是HTTP协议请求和响应消息头的一部分
它可以保存客户浏览器访问网站的相关内容(需要哦客户端不禁用Cookie)。从而每次访问需要同一个内容时,先从本地缓存获取,使资源共享,提高效率
Cookie属性
属性名称 | 属性作用 | 是否重要 |
---|---|---|
name | cookie的名称 | 必要属性 |
value | cookie的值(不能是中文) | 必要属性 |
path | cookie的路径 | 重要 |
domain | cookie的域名 | 重要 |
maxAge | cookie的生存时间。 | 重要 |
version | cookie的版本号。 | 不重要 |
comment | cookie的说明。 | 不重要 |
细节
Cookie有大小,个数限制。每个网站最多只能存20个cookie,且大小不能超过4kb。同时,所有网站的cookie总数不超过300个。
当删除Cookie时,设置maxAge值为0。当不设置maxAge时,使用的是浏览器的内存,当关闭浏览器之后,cookie将丢失。设置了此值,就会保存成缓存文件(值必须是大于0的,以秒为单位)。
向服务器端添加Cookie
public void addCookie(Cookie cookie);
从服务器端获取Cookie
public Cookie[] getCookies();
HttpSession
是Servlet规范中四大对象之一的会话域对象。并且他也是用于实现数据共享的
域对象 | 作用范围 | 使用场景 |
---|---|---|
ServletContext | 整个应用范围 | 当前项目中需要数据共享时,可以使用此域对象。 |
ServletRequest | 当前请求范围 | 在请求或者当前请求转发时需要数据共享可以使用此域对象。 |
HttpSession | 会话返回 | 在当前会话范围中实现数据共享。它可以在多次请求中实现数据共享。 |