zoukankan      html  css  js  c++  java
  • Cookies

    Cookies集合具有以下几种属性:   
    1.Expires属性:此属性用来给Cookies设置一个期限,在期限内只要打开网页就可以调用被保存的Cookies,如果过了此期限Cookies就自动被删除。
      如: 设定Cookies的有效期到2004年4月1日,到时将自动删除。如果一个Cookies没有设定有效期,则其生命周期从打开浏览器开始,到关闭浏览器结束,每次运行后生命周期将结束,下次运行将重新开始。
    2.Domain属性:这个属性定义了Cookies传送数据的唯一性。若只将某Cookies传送给_blank">搜狐主页时,则可使用如下代码:
    3.Path属性:定义了Cookies只发给指定的路径请求,如果Path属性没有被设置,则使用应用软件的缺省路径。
    4.Srcure属性:指定Cookies能否被用户读取。
    5.Haskeys属性:如果所请求的Cookies是一个具有多个键值的Cookies字典,则返回True,它是一个只读属性


     
     
     
     
     

    %  

    }  

    %

     

     

     

    name  

     

     

    value 

    %=name%

     

    %=svalue%

     

    ........(

    其他内容

    这一小段

    JSP

    文件可以读出用户硬盘上的所有有效的

    Cookie

    ,也就是仍然在存

    活期内的

    Cookie

    文件。并用表格的形式列出每个

    Cookie

    的名字和内容。

     

     

    我们来逐行分析一下这段代码:

      

    Cookie cookies[]=request.getCookies() 

    我们用

    request.getCookies()

    读出

    用户硬盘上的

    Cookie

    ,并将所有的

    Cookie

    放到一个

    cookie

    对象数组里面。

      

    接下来我们用一个循环语句遍历刚才建立的

    Cookie

    对象数组,我们用

    sCookie=cookies[i]

    取出数组中的一个

    Cookie

    对象,然后我们

     

    sCookie.getValue()

    sCookie.getName()

    两个方法来取得这个

    Cookie

    的名字

    和内容。

      

     

    通过将取出来的

    Cookie

    的名字和内容放在字符串变量中,我们就能对其进行各

    种操作了。在上面的例子里,可通过循环语句的遍历,将所有

    Cookie

    放在一张

    表格中进行显示。

      

    ==================================

    =====

     

     

    四、

     

    需要注意的一些问题

     

    通过上面两个简单的例子,可以看到,用

    JSP

    进行

    Cookie

    的操作,是非常简单

    的。不过我们在实际操作中还要注意一些问题:

     

    1. Cookie

    的兼容性问题

     

    Cookie

    的格式有

    2

    个不同的版本,第一个版本,我们称为

    Cookie Version 0

    是最初由

    Netscape

    公司制定的,也被几乎所有的浏览器支持。而较新的版本,

    Cookie Version 1

    ,则是根据

    RFC 2109

    文档制定的。为了确保兼容性,

    JAVA

    定,

    前面所提到的涉及

    Cookie

    的操作都是针对旧版本的

    Cookie

    进行的。

    而新版

    本的

    Cookie

     

    前还不被

    Javax.servlet.http.Cookie

    包所支持。

     

    2. Cookie

    的内容

     

    同样的

    Cookie

    的内容的字符限制针对不同的

    Cookie

    版本也有不同。在

    Cookie 

    Version 

    0

    中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(

    =

    ),

    逗号,双引号,斜杠,问号,

    @

    符号,冒号,分号都不能作为

    Cookie

    的内容。这

    也就

     

    是为什么我们在例子中设定

    Cookie

    的内容为

    "Test_Content"

    的原因。

     

     

    虽然在

    Cookie Version 1

    规定中放宽了限制,可以使用这些字符,但是考虑到

    新版本的

    Cookie

    规范目前仍然没有为所有的浏览器所支持,因而为保险起见,

    我们应该在

    Cookie

    的内容中尽量避免使用这些字符。

     

     

     

    3.cookie

    的删除

     

     

     

    cookie

    为什么删除不了

    ,

    所以写了给小总结

    ,

    希望对用

    cookie

    的各位兄弟有帮助

     

     

    对于

    cookie,

    最主要的当然是读取和设置了

    ,

    下面分两方面说明

     

    一、设置

     

     

    Cookie

    是通过

    HttpServletResponse

    addCookie

    方法加入到

    Set-Cookie

    应答头中的

     

     

    例如:

     

     

    Cookie userCookie = new Cookie("user", "admin"); 

     

    response.addCookie(userCookie); 

     

    和设置有关系的还有以下两个重要方法

     

     

    1.setMaxAge 

     

    设置

    Cookie

    过期之前的时间,以秒计。如果不设置该值,则

    Cookie

    只在当前会话内有效,

    而且这些

    Cookie

    不会保存到磁盘上。

     

     

    注意:删除

    cookie

    就是通过该方法实现的。将要删除的

    cookie

    的过期之前的时间指定为

    0

    就可以达到删除该

    cookie

    的目的。

     

     

    2.setPath 

    设置

    Cookie

    适用的路径。如果不指定路径,

    Cookie

    将返回给当前页面

    (JSP

    页面或者

    Servlet

    的映射

    )所在目录及其子目录下的所有页面。

     注意:

    A:所有的cookie都是有路径的

    B:该方法设置的路径为客户端路径,即“/”代表服务器根目录,而不是WEB应用根目录

     C:该方法设置路径时,“/myWeb/”与“/myWeb”是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而或者则不可以。

    D:该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath(“/myWeb/”),该cookie都将关联到服务器的myWeb目录下(setPath(“/myWeb”)则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath(“myWeb/”)和setPath(“myWeb”)也不能关联到当前目录的myWeb的子目录下这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)

     目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp和getcookie.jsp、在web2下有getcookie.jsp web1下的setcookie.jsp 

    web1下的getcookie.jsp web2下的getcookie.jsp 先访问web1下的setcookie.jsp,然后分别访问web1和web2下面getcookie.jsp文件,你会发现奇怪的现象,web1下的getcookie.jsp中user为空而web2下的getcookie.jsp中user却有值,这就实现了从一个web应用下设置的cookie 在另一个web应用下获得。

     大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)

     

    二、读取

     从客户端读取Cookie时调用的是

    HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。然后对

    这个目标Cookie调用getValue,根据获得的结果进行其他处理。

    注意:若JSP和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;

  • 相关阅读:
    [转] 股票基础知识
    [原] combobox如何让用户不能输入只能从下拉列表里面选择
    【原】2个面试问题(与同事李将的交流)
    [转] 纯代码取得本机IP地址
    [转] 关于硬盘修复以及低级格式化的一些文章
    [转] 130道C#面试题
    初学Sockets编程(四) 发送和接收数据
    利用Beyond Compare比较文件
    第三日:SimuLink之后是Stateflow
    简单的RPC编程实践——HelloWorld的实现
  • 原文地址:https://www.cnblogs.com/xzzzys/p/7568496.html
Copyright © 2011-2022 走看看