前言:javaweb整合开发第五章学习笔记,只是为了加深自己的学习效果。
1.从存取方式上比较
Cookie中只能保存ASCII字符串,如果需要存取Unicode字符或者二进制数据,需要进行UTF-8等方式编码,Cookie中不能直接存取Java对象。Session可以存取任意类型的数据,Session可以看成一个容器。
2从隐私安全上比较
Cookie存储在客户端浏览器中,对客户端是可见的,敏感信息需要加密,Session存储在服务器上,对客户端是透明的。
3从有效期比较
Cookie信息可以长期有效,Session理论上也能实现这效果,但是Session依赖于名为JESSIONID的Cookie,而Cookie JSESSIONID的maxAge默认为-1,只要关闭了浏览器Session就会失效,因此Session不能实现信息永久有效的效果。Session超时时间过长,容易导致服务器内存溢出。
4从对服务器的负担上比较
Session保存在服务器端,每个用户都可以产生一个Session,Cookie保存在客户端,不占用服务器资源。
5从浏览器支持上比较
Cookie是需要客户端浏览器支持的。如果客户端禁用了Cookie,或者不支持Cookie,则会话跟踪会失效。对于WAP上的应用,常规的Cookie就派不上应用了。
Session以及URL地址重写可以跟踪会话,所有用到Session程序的URL都要使用response.encodeURL(string URL)或者response。encodeRedirectURL(string URL)进行URL重写,否则导致Session会话追踪失败。
如果客户端支持Cookie,则Cookie既可以设为本浏览器以及子窗口内有效(maxAge设为-1),也可以设为所有浏览器窗口内有效(把maxAge设为某个大于0的整数)但Session只能在本浏览器窗口以及其子窗口内有效。
6从跨越域名上比较
Cookie支持跨域名访问,Session不支持,只在他所在的域名内有效。