Cookie的应用.docx

上传人:b****4 文档编号:2990358 上传时间:2022-11-16 格式:DOCX 页数:22 大小:24.20KB
下载 相关 举报
Cookie的应用.docx_第1页
第1页 / 共22页
Cookie的应用.docx_第2页
第2页 / 共22页
Cookie的应用.docx_第3页
第3页 / 共22页
Cookie的应用.docx_第4页
第4页 / 共22页
Cookie的应用.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Cookie的应用.docx

《Cookie的应用.docx》由会员分享,可在线阅读,更多相关《Cookie的应用.docx(22页珍藏版)》请在冰豆网上搜索。

Cookie的应用.docx

Cookie的应用

第16章:

Cookie的使用

Win7中Cookies的位置:

C:

\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies

XP中Cookies的位置:

C:

\DocumentsandSettings\Administrator\Cookies

16.1什么是Cookie

对Cookie比较确切的定义是:

“Cookie是Web服务器保存在用户硬盘上的一段文本。

Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。

信息的片段以‘名/值’对(Name-ValuePairs)的形式存储”

Cookie的格式实际上是一段纯文本信息,由服务器随着网页一起发送到客户端,并保存再客户端硬盘中指定的目录下。

与不同服务器相关的Cookie是分别保存的,服务器读取Cookie的时候,只能够读取与这个服务器相关的信息,所以不会存在什么安全隐患。

浏览器一般只允许存放300个Cookie,每个站点最多存放20个,每个Cookie的大小不超过4K,不会占用多少空间。

而且Cookie是具有时效性质的,例如设置了Cookie的存活时间为1分钟,则1分钟后这个Cookie就会被浏览器删除。

目前Cookie由两个版本:

版本0:

由Netscape公司制定的,也被几乎所有的浏览器支持,Java中为了保持兼容性,目前只支持到版本0,Cookie内容中不能由空格、方括号、圆括号、等号、逗号、双引号、斜杠、问号、@、冒号和分好。

版本1:

是根据RFC2109文档制定的,它放宽了很多限制,上面所限制的字符都可以使用,但为了保持兼容性,应该尽量避免使用这些特殊字符。

Cookie最根本的用途是能够帮助Web服务器保存访问者的相关信息。

16.2如何使用Cookie

16.2.1创建Cookie

Cookie其实是Java提供的一个类,构造函数的参数包括两个字符串(Cookie的名称和值),语法格式如下:

Cookiecookie=newCookie(“CookieName”,”cookieValue”);

16.2.2读取和设置Cookie属性

用户可以通过下面的方法来查看和设置Cookie对象的属性:

●StringgetComment():

返回Cookie中的注释,如果没有注释的话返回空值。

●StringgetDomain():

返回Cookie中Cookie适用的域名。

可以指示浏览器把Cookie返回给同一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。

注意域名要以点开始。

●intgetMaxAge():

返回Cookie过期之前的最大时间,以秒为单位进行计算。

默认是浏览器关闭,Cookie就被删除。

●StringgetName():

返回Cookie的名字

●StringgetPath():

返回Cookie适用的路径。

如果不指定路径Cookie将返回给当前页面所在目录及其子目录下的所有页面。

●booleangetSecure():

如果浏览器通过安全协议发送Cookie将返回true,如果浏览器适用标准协议则返回false值。

●StringgetValue():

返回Cookie的值。

●intgetVersion():

返回Cookie所遵从的协议版本。

●voidsetComment(Stringpurpose):

设置Cookie中的注释。

●voidsetDomain(Stringpattern):

设置Cookie中Cookie适用的域名。

●voidsetMaxAge(intexpiry):

以秒计算,设置Cookie过期时间。

●voidsetPath(Stringuri):

指定Cookie适用的路径。

●voidsetSecure(Booleanflag):

指出浏览器使用的安全协议。

●voidsetValue(StringnewValue):

Cookie创建后设置一个新的值。

●voidsetVersion(intv):

设置Cookie所遵从的协议版本。

下面以setMaxAge为例,演示这些方法如何适用,代码如下:

Cookiecookie=newCookie("myCookie","fxq");

cookie.setMaxAge(30*60);//设置Cookie的存活时间为30分钟

response.addCookie(cookie);//写入客户端硬盘

16.2.3再应答头中设置Cookie

在JSP编程中利用内置对象response的addCookie方法将Cookie写入客户端。

语法如下:

response.addCookie(Cookie对象名);

下面给出一个具体示例,该示例中将建立一个新的Cookie对象,并设置它的存活时间为30分钟,最后适用应答对象response的addCookie()方法将该Cookie写入客户端。

代码如下:

<%@pagelanguage="java"import="java.util.*,java.sql.*"

pageEncoding="UTF-8"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

写Cookie示例

写Cookie到客户端,存活时间为30分钟:

<%

Cookiecookie=newCookie("myCookie","fxq");

cookie.setMaxAge(30*60);//设置Cookie的存活时间为30分钟

response.addCookie(cookie);//写入客户端硬盘

out.print("写Cookie完成");

%>

运行之后再客户端的Cookies目录(C:

\DocumentsandSettings\Administrator\Cookies)下生成对应的文件。

16.2.4读取保存到客户端的Cookie

将Cookie写到客户端是为了以后得到其中保存的数据,这里可以通过request对象的getCookies方法从中读取数据,语法格式如下:

Cookie[]变量名=request.getCookies();

客户端传来的Cookie数据类型都是数组类型,要得到其中的某一项必须遍历数组来得到,下面给出一个示例,用于读出上面示例中写到客户端的Cookie,代码如下:

<%@pagelanguage="java"import="java.util.*,java.sql.*"

pageEncoding="UTF-8"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

读取Cookie

<%

out.print("

读取客户端的某一指定Cookie,结果如下:

");

Cookiecookies[]=request.getCookies();

//将适用目录下所有Cookie读入并存入cookies数组中

Cookiecookie=null;

Stringname=null;

Stringvalue=null;

if(cookies==null){//如果没有任何cookie

out.print("noneanycookie");

}else{

if(cookies.length==0){

out.print("客户端不支持Cookie!

");

}else{

for(inti=0;i

cookie=cookies[i];

name=cookie.getName();

value=cookie.getValue();

if(name.equals("myCookie")){

out.print(name+"->"+value+"
");

}

}

}

}

%>

读取Cookie必须注意两个问题:

如果读取结果为空,则说明这个客户端没有对应该服务器的Cookie;如果Cookies数组长度为零,说明客户端浏览器不支持Cookie技术。

在30分钟内,读出的结果:

myCookie->fxq

16.2.5获取指定名字的Cookie值

编写一个方法,根据给出的cookieName得到对应的值。

publicStringgetCookieValue(Cookie[]cookies,StringcookieName,

StringdefaultValue){

for(inti=0;i

Cookiecookie=cookies[i];

if(cookie.getName().equals(cookieName)){

returncookie.getValue();

}

}

returndefaultValue;

}

16.2.6自动保存

如果希望浏览器退出的时候自动保存下来,可以用下面这个LongLivedCookie类代替Cookie类,代码如下:

importjavax.servlet.http.Cookie;

publicclassLongLivedCookieextendsCookie{

publicstaticfi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1