session是存储在服务器端的,cookie是存储在客户端的,所以session的安全性要高于cookie。
再者,我们获取的session里的信息是通过存放在会话cookie里的sessionId获取的。
因为session是存放在服务器里的,所以session里的东西不断增加会增加服务器的负担,我们会把一些重要的东西放在session里,不太重要的放在客户端cookie里。
cookie分为两大类,一个是会话cookie和持久化cookie,他们的生命周期和浏览器是一致的,浏览器关了会话cooki也就消失了,而持久化会存储在客户端硬盘中。
第一、存取方式不同
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象,若要存储略微复杂的信息,运用Cookie是比较艰难的。
Session中能够存取任何类型的数据,包括而不限于string、integer、list、Map等。session中也能够直接保管JavaBean乃至任何Java类、对象等,运用起来十分便捷。
第二、隐私策略不同
Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
第三、有效期不同
使用过Google的人都知道,假如登录过Google,则Google登录信息长期有效。用户不用每次访问都重新登录,Google会持久地记载该用户的登录信息。要达到这种效果,运用Cookie会是比较好的选择。只需要设置Cookie的过期时间属性为一个很大很大的数字。
由于Session依赖于名为JSESSIONID的Cookie,而Cookie
JSESSIONID的过期时间默许为–1,只需关闭了阅读器该Session就会失效,因而Session不能完成信息永世有效的结果。
第四、服务器压力不同
Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生很多的Session,耗费大量的内存,因而Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。
而Cookie是保管在客户端的,不占用服务器资源。假如并发阅读的用户很多,Cookie是很好的选择。
第五、浏览器支持不同
Cookie是需要客户端浏览器支持的。假如客户端禁用了Cookie,或者不支持Cookie,则会话追踪会失效。关于Wap上的应用,常规的Cookie就派不上用场了。
假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。需要注意的是一切的用到Session程序的URL都要进行URL地址重写,否则Session会话追踪还会失效。
第六、跨域支持不同
Cookie支持跨域名访问,而Session则不会支持跨域名访问,Session仅在他所在的域名内有效。
两者的区别
cookie数据存放在客户端,session数据放在服务器上。
cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用Cookie。
单个Cookie保存的数据长度不能超过4K,很多浏览器都限制一个网址最多保存20个cookie.http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,session是以cookie或URL重写为基础的,默认使用cookie来实现,服务器向客户端浏览器发送一个名为JSESSIONID的Cookie而JSESSIONID的值是SessionID,session就是用SessionID区分不同的客户身份的.