注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 如何系统的学习linux?
 帮助

JSP中Cookie的读写


2008-06-30 17:15:37
 标签:Cookie   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/84770
JSP中Cookie的读写
 
Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。
 
下面是一个jsp中写入读取Cookie的测试:在顶级域名中写入Cookie,在子域名中读取,目的是实现一个分布系统的单点登录。
 
两个jsp中读写代码如下:
 
写入:
 
  <%
  Cookie cookie = new Cookie("write","cookie_write");
  cookie.setComment("这是一个Cookie写入测试!");
  cookie.setVersion(100);
  cookie.setMaxAge(3600);
  cookie.setDomain(".iisp.com");
  response.addCookie(cookie);
  
  %>
 
 
读取
 
    <%
    Cookie cookies[]=request.getCookies();  
    out.println(" cookie的数量为:"+ cookies.length);
      out.println("<br>"+"<br>");
    for(int i = 0;i<cookies.length;i++){
      out.println("getName="+cookies[i].getName()+"<br>");  
      out.println("getValue="+cookies[i].getValue()+"<br>");  
      out.println("getComment="+cookies[i].getComment()+"<br>");  
      out.println("getDomain="+cookies[i].getDomain()+"<br>");
      out.println("getPath="+cookies[i].getPath()+"<br>");
      out.println("getMaxAge="+cookies[i].getMaxAge()+"<br>");
      out.println("getVersion="+cookies[i].getVersion()+"<br>");
      out.println("getSecure="+cookies[i].getSecure()+"<br>");
      out.println("<br>"+"<br>");
    }
    %>
 
 
测试结果表明:Cookied的写入读取均没有问题,并且Cookie的访问和域名有密切关系。子域名下可以读取到上级域名的Cookie。而不能读取到其他域名下的Cookie。
 
 

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/84770





    文章评论
 
2008-07-01 13:27:35
Cookie的构成及其属性详解

【摘 要】 我们将演示如何使用Javascript脚本来操纵cookies。(如果有需求,我可能会在以后的文章里介绍如何使用Perl进行cookie管理。
  Cookies最初设计时,是为了CGI编程。但是,我们也可以使用Javascript脚本来操纵cookies。在本文里,我们将演示如何使用Javascript脚本来操纵cookies。(如果有需求,我可能会在以后的文章里介绍如何使用Perl进行cookie管理。但是如果实在等不得,那么我现在就教你一手:仔细看看CGI.pm。在这个CGI包里有一个cookie()函数,可以用它建立cookie。但是,还是让我们先来介绍cookies的本质。

  在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值。每个cookie除了name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。

  Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

  Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果/head/index.html 建立了一个cookie,那么在/head/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说,在/head/stories/articles 里的任何页面都可以访问/head/index.html建立的cookie。但是,如果/zdnn/ 需要访问/head/index.html设置的cookes,该怎么办?这时,我们要把cookies的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:如果想让 /head/filters/ 和/head/stories/共享cookies,就要把path设成“/head”。

  Domain – 域。指定关联的WEB服务器或域。值是域名,比如goaler.com。这是对path路径属性的一个延伸。如果我们想让dev.mycompany.com 能够访问bbs.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。FYI:不能把cookies域属性设置成与设置它的服务器的所在域不同的值。

  Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: