会话概述
- 指的是web开发中的一次通话过程,当打开浏览器,访问网站地址后,会话开始,当关闭浏览器。一个浏览器相当于一个客户端,连接上服务器后,就建立了一个会话。
会话管理技术分类
一、客户端会话管理技术
概述
- 它是把要共享的数据保存到了客户端(也就是浏览器端)。每次请求时,把会话信息带到服务器,从而实现多次请求的数据共享。
Cookie客户端浏览器的缓存文件
- 什么是Cookie
它是客户端浏览器的缓存文件,里面记录了客户浏览器访问网站的一些内容。同时,也是HTTP协议请求和响应消息头的一部分 - Cookie的属性
属性名称 | 属性作用 | 是否重要 |
---|---|---|
name | cookie的名称 | 必要属性 |
value | cookie的值(不能是中文) | 必要属性 |
path | cookie的路径 | 重要 |
domain | cookie的域名 | 重要 |
maxAge | cookie的生存时间。 | 重要 |
version | cookie的版本号。 | 不重要 |
comment | cookie的说明。 | 不重要 |
- 常用方法
- public Cookie(String name, String value) {
validation.validate(name);
this.name = name;
this.value = value;
}--------->创建Cookie,再服务器创建,再返回给客户端 - public void addCookie(Cookie cookie)------->添加Cookie,添加Cookie到响应中,由响应把Cookie响应到客户端,添加Cookie到客户端
- public Cookie[] getCookies()------->HttpServletRequest中的方法,使用来获取客户端请求发送的所有Cookie对象,没有则返回null
- 什么时候浏览器的请求会携带Cookie到请求中
- 查看Cookie的path路径
- 看请求的url是否包含Cookie的路径,包含则会携带由Cookie,否则没有携带Cookie。
- 它可以保存客户浏览器访问网站的相关内容(需要客户端不禁Cookie)。从而在每次访问需要同一个内容时,先从本地缓存获取,使资源共享,提高效率。在整个会话的过程都可以访问,是保存在客户端的,在同一会话的各个页面都可以从客户端读取
二、服务端会话管理技术
概述
- 它本质仍是采用客户端会话管理技术,只不过保存到客户端的是一个特殊的标识,并且把要共享的数据保存到了服务端的内存对象中。每次请求时,把这个标识带到服务器端,然后使用这个标识,找到对应的内存空间,从而实现数据共享。
HttpSession服务器存储用户的信息
- 概述
- 该对象用于提供一种通过多个页面请求或访问网站来标识用户并存储有关该用户的信息的方法。简单说它就是一个服务端会话对象,用于存储用户的会话数据。
- HttpSession的获取:request请求获取
- 通过HttpServletRequest进行获取HttpSession对象
- public HttpSession getSession():存在HttpSession对象就获取,不存在则创建一个HttpSession对象对象
- public HttpSession getSession(boolean create):create为true存在HttpSession对象就获取,不存在则创建一个HttpSession对象对象。create为false,则存在就获取,不存在则放回null
- 获取过程
- 在req请求中,查看是否有携带JSESSIONID的Cookie,有的话,将根据这个Cookie在服务器找对应的HttpSession对象。否则则为该浏览器分配一个连接服务器的唯一会话标识JSESSIONID的Cookie。这个Cookie在请求时,会自动携带传输给服务器,用于区分不同的浏览器会话。是一个由服务器自动创建的特殊的Cookie,Cookie的名称就是JSESSIONID,Cookie的值是服务器分配的一个唯一的标识。