session | cookie | |
存储位置 | 服务器 | 客户端 |
数据类型 | session.setAttribute(String,Object) 支持任意类型的数据 | new Cookie(String,String) 仅支持字符串类型数据 |
容量上限 | 只要JVM无限大,理论上无上限 | 总条数:每个域名下50条(取决于浏览器) 容量上限:4KB,中文4字节,英文2字节 |
Cookie生命周期:
创建:
request.getSession();
//在服务器开辟一块全新的会话空间。构成(key:uuid value:存储空间 过期时间:倒计时)
//在返回响应时,向客户端写入Cookie。由客户端负责存储,并在下次请求时携带到请求头发送到服务器。
Cookie cookie = new Cookie("JSESSIONID1",session.getId());
//设置cookie的项目名
cookie.setPath(request.getContextPath());
//设置cookie信息可读性
cookie.setHttpOnly(true);
response.addCookie(cookie);
销毁:
1、关闭浏览器时立即销毁(默认 浏览会话结束时)
为了保障用户信息安全,关闭浏览器直接销毁。
2、客户端清理cookie缓存内容
尽量不要在公共网络中保存cookie,防止信息泄露
3、配置cookie存活时间
Cookie cookie = new Cookie("name","admin");
//设置存活时间由浏览器到期后删除,单位为秒
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);
//浏览会话期间,关闭浏览器自动销毁
cookie.setMaxAge(-1);
//立即销毁
cookie.setMaxAge(0);
//到达指定时间后销毁
cookie.setMaxAge(>0);
Cookie默认不支持跨域,如由 *.com —> *.cn
cookie.setDomain("一级域名");允许二级域名访问一级域名