因为经常听浏览器中有cookie之说,但个人对cookie有事一点概念都没有,所以就找个机会学习了下cookie,希望对它有个比较明了的概念。
Cookie概念:
Cookie的格式实际上是一段纯文本信息, 由服务器随着网页一起发送到客户端,
并保存在客户端硬盘中指定的目录的. 大家都传说Cookie会造成严重的安全威胁什么的, 其实不是这么回事情. 服务器读取Cookie的时候,
只能够读取到这个服务器相关的信息. 而且, 浏览器一般只允许存放300个Cookie, 每个站点最多存放20个, 而且,
每个Cookie的大小现在在4K, 根本不会占用多少空间. 并且, Cookie是有时效性质的. 例如,
设置了Cookie的存活时间为1分钟, 则一分钟后这个Cookie就会被浏览器删除。
浏览器会用一个本地文件保存从所有站点接收的Cookie信息。
cookies给网站和用户带来的好处非常多:
1、Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径
2、Cookie能告诉在线广告商广告被点击的次数 ,从而可以更精确的投放广告
3、Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点
4、Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务
创建cookie的方法:
Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);
但是光知道如何创建Cookie而不知道怎么使用是不够的。在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性。
读取客户端的Cookie :
在Cookie发送到客户端前,先要创建一个Cookie,然后用addCookie方法
发送一个HTTP Header。
JSP再调用request.getCookies()从客户端读入Cookie,getCookies()方法返回一个HTTP请求头中的内容对应的
Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各个Cookie的名字,直至找到目标Cookie,然后对该
Cookie调用getValue方法取得与指定名字关联的值 。
(也就是说,你请求网页时,它都会自动为你创建一个相关的cookie,那么你如果在jsp页面中读取的话,则读取到的就是这个站点的cookie了。)
读取的方法:
<% Cookie[] cookies = request.getCookies(); Cookie sCookie = null; String sname = null; String name = null; if(cookies == null) //如果没有任何cookie out.print("none any cookie"); else{ out.print("cookies的长度:" + cookies.length + "<br>"); for(int i=0;i<cookies.length;i++){ sCookie = cookies[i]; sname = sCookie.getName(); name = sCookie.getValue(); out.println(sname + "->" + name + "<br>"); } } %>
目前,jsp中的cookies对于自身来说,最大的好处是 实现 网站的记住密码和自动登录了!!
Cookie[] cookies = request.getCookies();
Cookie sCookie = null;
String sname = null;
String name = null;
if(cookies == null) //如果没有任何cookie
out.print("none any cookie");
else{
out.print("cookies的长度:" + cookies.length + "<br>");
for(int i=0;i<cookies.length;i++){
sCookie = cookies[i];
sname = sCookie.getName();
name = sCookie.getValue();
out.println(sname + "->" + name + "<br>");
}
}
而除了cookie之外,网站还有其他比较重要的概念,下面就讲讲他们的区别:
Session 、Cookie、cache 区别 :
Session 是单用户的会话状态。当用户访问网站时,产生一个 sessionid。用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
【所以,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。】
session和cookies是保存每个用户单独的信息,前者保存在服务器。安全。后者保存在客户端。
cache ,则是服务器端的缓存,是所有用户都可以访问和共享的,因为从Cache中读数据比较快,所有有些系统(网站)会把一些经常被使用的数据放到Cache里,提高访问速度,优化系统性能。