漂流的心 | 耿真的个人网站 | 鲁ICP备15001313号 | 本站永久网址:https://www.gengzhen.cn|

cookie 和 session 区别和异同

发布:耿真(GengZhen) 2011-10-21 03:20:00 归属栏目: 耿真seo

 cookie和session机制是web中常用的跟踪技术,用来跟踪用户的整个会话。cookie通过在客户端记录信息确定用户的身份,session通过在服务器端记录信息确定用户身份。

(1)cookie机制

Java中把Cookie封装成了javax.servlet.http.Cookie类。每个Cookie都是该Cookie类的对象。服务器通过操作Cookie类对象对客户端Cookie进行操作。通过s://www.gengzhen.cn/tag/.cn/tag/re" title="">re" title="查看标签为 .cn/tag/re" title="">re 的文章">request.getCookie()获取客户端提交的所有Cookie(以Cookie[]数组形式返回),通过response.addCookie(Cookie cookie)向客户端设置Cookie。

Cookie对象使用key-value属性对的形式保存用户状态,一个Cookie对象保存一个属性对,一个s://www.gengzhen.cn/tag/re" title="查看标签为 .cn/tag/re" title="">re 的文章">.cn/tag/re" title="">request或者s://www.gengzhen.cn/tag/.cn/tag/re" title="">re" title="查看标签为 .cn/tag/re" title="">re 的文章">response同时使用多个Cookie。因为Cookie类位于包javax.servlet.http.*下面,所以JSP中不需要import该类。

Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码。

Cookie的maxAge决定着Cookie的有效期,单位为秒(山东领宸)。如果maxAge为0,则表示删除该Cookie。

(2)session机制

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。

Session对应的类为javax.servlet.http.HttpSession类。每个来访者对应一个Session对象,所有该客户的状态信息都保存在这个Session对象里。Session对象是在客户端第 一次请求服务器的时候创建的。Session也是一种key-value的属性对,通过getAttribute(Stringkey)和setAttribute(String key,Objectvalue)方法读写客户状态信息。

为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

区别:

cookie数据存放在客户的浏览器上,session数据放在服务器上;

cookie不是很安 全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安 全应当使用session;session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;单个cookie在客户端的限制是4K,很多浏览器都限制一个站点最多保存20个cookie。   综述:将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中。


温馨提示本站内所有原创内容禁止转载,谢谢合作!

关注耿真SEO微信公众号