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的信息;

原文地址:https://www.cnblogs.com/xzzzys/p/7568496.html