(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中。