Session工作原理:
- 浏览器第一次访问服务器的时候,服务器会在内存中创建一个session对象并返回一个Jsession=ID的值;在浏览器端会创建一个key=Jsession,value=ID的Cookie对象;
- 浏览器在第二次访问服务器的时候会携带该Cookie信息,服务器从请求中提取出JSession=ID,并和保存的所有JSessionID进行对比;如果该Jsession=Id的session已经销毁,那么服务器会创建一个新的session再返回一个新的Jsession=id返回到浏览器。
- 当用户在应用程序的web页间跳转时,存储在session对象中的变量不会丢失,而是在整个会话中一直存在下去。
区别:
- 存储数据方面:session能够存储任意的java对象,cookie只能存储String类型的数据;cookie有大小限制以及在浏览器存的个数也有限制;session没有大小限制和服务器内存大小有关;
- cookie存储在客服端,session存储在服务端;因为cookie在客服端,所以可以编辑伪造,不安全;
- session保存在服务端上存在一段时间才会消失,过多时会消耗服务器资源,大型网站会有专门session服务器;cookie存在客服端没有问题;