Cookie可以称为客户端会话技术
Session可以称为服务端会话技术
cookie将数据存储在客户端,当会话建立时,直到有一方断开才会结束会话
Session的默认存活时间是30分钟,如果需要更改可以在xml<Session-config>标签中进行修改存活时间,单位是分钟;
当客户端关闭时,服务端不关闭,两次的session值是不一样的,如果想要一样则需要创建cookie并设置键值为JSESSIONID,设置其最大存活时间,让cookie持久化存储。如:
cookie c= new cookie("JSESSIONID",session.getId());
c.setmaxage(60*60);
response.addcookie(c);
当客户端不关闭,服务端关闭时,两次的session值也是不一样的
虽然值不一样,但是要确保数据的不丢失,tomcat会自动完成session的钝化和活化。
cookie的使用步骤
1、创建cookie对象,绑定数据
2、发送cookie对象
3、获取cookie,拿到数据
cookie的细节:
1、一次可以发送多个cookie及创建多个cookie对象,再用response调用多次addcookie方法发送cookie即可
2、在默认情况下,当服务器被关闭时cookie数据将被销毁,如果想要实现持久话存储可以通过调用setmaxage(int seconds)方法
括号中的值去不同代表不同的含义
①正数:将cookie数据写入到硬盘的文件中,持久化存储,指定的时间及为正数值,时间到了则会自动被销毁,正数值的单位为毫秒
②负数:及默认值
③零:删除cookie信息
3、cookie在Tomcat8之前是不支持存储中文的,如果需要则要进行中文数据转码---采用URL编码(%E3)
cookie在Tomcat8之后是可以进行中文的存储的
4、cookie的共享问题
当一个服务器中部署了多个web项目,那项目中的cookie能不能共享呢?
默认情况下是不能的,如果需要共享则需要通过setpath(String path):设置cookie的获取范围,及设置为“/“
不同的服务器cookie是否能共享呢?
如果设置一级域名相同,那么多个服务器之间也是可以共享cookie的:setDomain(String path)
cookie的特点:
1、cookie存储在客户端浏览器
2、浏览器对单个cookie的大小有限制(4kb)以及对同一个域名下的总cookie数也有限制(20个)
cookie的作用:
1、cookie一般用于存入少量不敏感数据
2、在不登录的情况下,完成服务器对客户端的身份识别
session的特点:
1、session用于存储一次会话的多次请求的数据,存在服务器端
2、session可以存储任意类型,任意大小的数据
关于session和cookie的区别
1、session存储数据在服务器端,cookie在客户端
2、session没有数据大小限制,cookie有
3、session数据安全,cookie相对于不安全