关于session和cookie

2021-05-20 23:01发布

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相对于不安全