Cookie技术:会话数据保存在浏览器端。
Session技术: 会话数据保存在服务器端。
2
1)cookie的数据类型一定是字符串,如果要发送中文,必须先对中文进行URL加密才可以发送。
2)setPath(path): 修改cookie所在的有效路径。如果把该cookie设置到某个有效路径下,然后浏览器访问这个有效路径的时候,才会携带cookie数据给服务器。
3) setMaxAge(整数) :
正整数: 表示超过了正整数的时间,cookie就会丢失 单位:秒
负整数: 表示如果浏览器关闭了,cookie就会丢失
0 : 表示删除同名的cookie
4)cookie可以有多个,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制 为4KB。
3
Cookie特点:
1)会话数据放在浏览器端
2)数据类型只能string,而且有大小限制的
3)相对数据存放不安全。
Session特点:
1)会话数据放在服务器端(服务器内存),占用服务器资源
2)数据类型任意类型,没有大小限制的。
3)相对安全
HttpSession对象:
1)创建HttpSession对象,用于保存会话数据
session = request.getSession(); 创建或获取session对象
2)修改HttpSession对象
void setMaxInactiveInterval(int interval) 设置session对象的有效时间
void invalidate() 手动销毁session对象
3)保存会话数据(作为域对象)
session.setAttribute("name",Object); 保存数据
session.getAttribute("name") 获取数据
session.removeAttribute("name") 删除数据
通过cookie中的JSESSIONID在服务器中查询对应的session对象
如果找不到,可能直接返回null,或者再创建新的session对象
6setMaxInactiveInterval(秒数) 默认30分钟
7<!-- 设置全局的session对象的过期时间 (分钟)-->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
8
修改session有效时间
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60); 一小时
response.addCookie(c);
立即销毁 invalidate();