- 会话:这种在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session)
- 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开;
- 功能:在一次会话的范围内的多次请求间共享数据。
- 方式
- 客户端:cookie 数据存在哪 就是那个端的 会话技术
- 服务器:session
- Cookie
-
Cookie cookie = new Cookie("msg", "hello");
response.addCookie(cookie);//添加会话 -
Cookie[] cookies = request.getCookies();
if (cookies != null){
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.println(name+":"+value);
}
} - 关于cookie的细节
- 可以发送多个cookie对象
- cookie在浏览器保存的时间
- 默认情况下,浏览器关闭时,cookie销毁
- 持久化存储
- serMaxAge(int seconds);三种取值情况
- 正数:将数据写入硬盘的文件中。持久化存储.cookies的(seconds)存活时间;
- 负数:默认值,在内存中。
- 零:直接删除cookie信息
- serMaxAge(int seconds);三种取值情况
- 关于中文数据 :正常存储和正常读取 需要tomcat8之后 如果不是 则需要转码 使用URL编码(%E3)
- cookie的获取范围
- 在一个服务器中,部署了多个web项目,web项目中cookie默认是不能共享的。
- cookie.setPath(string path):设置cookie的获取范围。默认是当前的虚拟目录
- 需要共享 setPath("/"); 即可。
- 不在同一个服务器时
- 使用setDomain(String path): 如果一级域名相同 比如 ".baidu.com" 设置setDomain(".baidu.com"); 就可以共享数据了。
- cookie的特点和作用
- cookie存储在客户端浏览器
- 浏览器对于单个cookie的大小有限制(4KB) 以及对同一个域名下的cookie数量也有限制(20个)
- 一般用于少量不太敏感的数据
- 在不登录的情况下完成对客户端的识别