在学习J2EE的过程中,session和cookie是极为重要的部分,下面谈谈我对session和cookie的理解:
首先介绍两者的相同点
相同点
1.session和cookie都是生存周期有限的数据存储方式【此处不考虑生命周期无限大的情况】,即临时数据文件;
2.session和cookie都是由服务器端控制和产生的;
- session和cookie都可以理解为
Map<name,value>
,都采用键值对的方式存储数据; - 不同的网站session和cookie是不能通用的,根本原因是:cookie在生成的时候有效作用范围是被限定的,所以说在一定的成都上cookie和session是安全的。
不同点
1.session和cookie的存储位置是不同的,session存在于服务器端,而cookie存在于客户端,cookie可以被用户手动清理掉,所以,重要的不可或缺的数据一般不会保存在cookie中;
2.创建cookie和session时生成的数据不同,在创建cookie的时候,仅仅在客户端生成cookie形式的Map<name,value>
的键值对,而在生成session的形式,会在客户端生成cookie用于保存sessionID并且在服务器端生成session数据【这两者的本质都是Map<name,value>
】;
3.两者的访问形式不一样;
详细解见下图