实际上,在web开发中,cookie仅仅是一个文本文件,当用户访问站点时,它就被存储在用户使用的计算机上,其中,保存了 
一些信息,当用户日后再次访问这个站点时,web可以将这些信息提取出来。 
 
   尽管现在听起来cookie没有什么激动人心的,但实际上利用它,你能实现许多有意义的功能!比如说:你可以在站点上放置 
一个调查问答表,询问访问者最喜欢的颜色和字体,然后根据这些定制用户的web界面。并且,你还可以保存访问者的登录密码,这 
样,当访问者再次访问这个站点时,不用再输入密码进行登录。 
 
   当然,cookie也有一些不足。首先,由于利用cookie的功能可以编程实现一些不良企图,所以大多数的浏览器中都有安全设 
定,其中可以设置是否允许或者接受cookie,因此这就不能保证随时能使用cookie。再者,访问者可能有意或者无意地删除 
cookie。当访问者的机器遇到“蓝屏”死机时,或者重新格式化硬盘、安装系统后,原来保存的cookie将全部丢失。最后一点,有 
一些最初始的浏览器并不能支持cookie。 
 
   利用cooklie能做什么? 
 
   有2种使用cookie的基本方式: 
1、将cookie写入访问者的计算机(使用 RESPONSE 命令) 
2、从访问者的计算机中取回cookie(使用 REQUEST 命令) 
 
   创建cookie的基本语法 
 
   Response.Cookies("CookieName")=value 
 
   执行下面的代码将会在访问者的计算机中创建一个cookie,名字=VisitorName,值=Ken 
Response.Cookies("VisitorName")="Ken" 
 
   执行下面的代码将会在访问者的计算机中创建一个cookie,名字=VisitorName,值=表单中UserName的值 
Response.Cookies("VisitorName")=Request.Form("UserName") 
 
   读取cookie的基本语法  
 
   Request.Cookies("CookieName")  
 
   可以将Request值当作一个变量看待,执行下面的代码,将取回名字为KensCookie的cookie值,并存入变量MyVar: 
MyVar=Request.Cookies("KensCookie") 
 
   执行下面的代码,将判断名字为KensCookie的cookie值是否为“Yes”: 
If Request.Cookies("KensCookie")="Yes" then 
 
   功能丰富的cookie  
 
   你可以扩展上面的代码成为Cookie子关键值(CookieSubName),代码如下: 
Response.Cookies("VisitorName")("FirstName")="Ken"  
Response.Cookies("VisitorName")("LastName")="Baumbach"  
 
   讲解例子前,最后讨论2个概念:命令约定和使用到期时间。 
 
   命名约定 
 
   同其他变量的命名一样,合适地、独特地命名cookie,有利于在程序中前后连贯地使用它。你可以使用下面的1个或者2个 
cookie属性进行cookie变量的命名: 
 
   域属性(Domain):域属性表明cookie由哪个网站产生或者读取,默认情况下,cookie的域属性设置为产生它的网站,但你 
也可以根据需要改变它。相关代码如下:Response.Cookies("CookieName").Domain = "www.mydomain.com"  
 
   路径属性(Path):路径属性可以实现更多的安全要求,通过设置网站上精确的路径,就能限制cookie的使用范围。例如: 
Response.Cookies("CookieName").Path = "/maindir/subdir/path"  
 
   使用到期时间 
 
   通常情况下,当浏览器关闭时,一个cookie就不存在了。但是在许多时候,比如下面将要讨论的web站点例子,我们希望能更 
长时间地在访问者的计算机上保存cookie。很幸运,有这样的实现方法。下面的代码,就可以设置cookie的使用到期时间为2010年 
1月1日:  
Response.Cookies("CookieName").Expires=#January 01, 2010# 
 
   执行下面的代码,将设定cookie的过期时间为“cookie的创建时间+365日”: 
Response.Cookies("CookieName")=Date+365 
 
   使用cookie的实际例子(非常精彩) 
 
   现在开始讨论实际的例子。假设:你想做一个调查,每个人初次访问时需要填写好信息,但是当日后再访问时,就不需要再那 
么做。利用cookie,就可以非常圆满地解决这个问题,而大可不必用到数据库。 
 
< %@ LANGUAGE="VBSCRIPT" % > 
< %  
Survey=Request.Cookies("KensSurvey") 
If Survey ="" then 
Response.Cookies("KensSurvey")="x" 
Response.Cookies("KensSurvey").Expires=#January 01, 2010# 
Response.Redirect "survey.asp" 
Else 
'rest of the page 
End if 
% > 
   好,下面开始从头讨论上面的代码。 
 
   首先,初始设置页面,并读取名字为KensSurvey的cookie值: 
 
 
< %@ LANGUAGE="VBSCRIPT" % > 
< %  
Survey=Request.Cookies("KensSurvey") 
   然后,判断是否已经存在cookie值: 
 
If Survey ="" then 
   如果不存在, 就创建并设置cookie,并转到页面survey.asp。 当下一次访问时,因为存在cookie值,就不会再转到 
survey.asp 页面。 
 
Response.Cookies("KensSurvey")="x" 
Response.Cookies("KensSurvey").Expires=#January 01, 2010# 
Response.Redirect "survey.asp" 
   如果cookie已经存在,那么访问者将执行页面中剩余的代码: 
 
'rest of the page 
 
End if 
% > 
   例子2  
 
   这里有另外一个简单的例子:当访问者第1次浏览某个站点时,向他们显示欢迎信息。代码如下: 
 
< %@ LANGUAGE="VBSCRIPT" % > 
< %  
RequestName = Request.Form("Name") 
RequestLeaveMeAlone = Request.Form("LeaveMeAlone") 
If RequestName < >"" or RequestLeaveMeAlone < >"" then 
Response.Cookies("MySiteVisitorName") = RequestName 
Response.Cookies("MySiteVisitorName").Expires = #January 01, 2010# 
Response.Cookies("MySiteLeaveMeAlone") = RequestLeaveMeAlone 
Response.Cookies("MySiteLeaveMeAlone").Expires = #January 01, 2010# 
End if  
VisitorName = request.cookies("MySiteVisitorName") 
LeaveMeAlone = request.cookies("MySiteLeaveMeAlone") 
 
If VisitorName ="" and LeaveMeAlone ="" then 
% > 
< HTML > < HEAD > < /HEAD > 
< body bgcolor="#ccffff" text="black" link="navy" vlink="purple" > 
< DIV ALIGN="CENTER" > 
< form action="index.asp" method="POST" > 
< H2 >Let's be friends< /H2 > 
What's your name (leave blank and hit the Submit button if you don't want us to  
know)?  
< input type="text" name="name" >< BR >< BR > 
< input type="hidden" name="LeaveMeAlone" value="x" > 
< input type="submit" value="Submit" > 
< /FORM > 
< /DIV > 
< /BODY > 
< % 
End if 
If VisitorName < > "" then 
Response.write "Hi, " & VisitorName & "! I hope you are having a great day!" 
End if 
'rest of the page 
% > 
   好,现在来看看上面的代码实现执行了什么。首先,设置页面。然后,检查表单变量(在同一个页面中)。如果表单变量存 
在,就创建cookie,并设置到期时间。 
 
< %@ LANGUAGE="VBSCRIPT" % > 
< %  
RequestName = Request.Form("Name") 
RequestLeaveMeAlone = Request.Form("LeaveMeAlone") 
If RequestName < >"" or RequestLeaveMeAlone < >"" then 
Response.Cookies("MySiteVisitorName") = RequestName 
Response.Cookies("MySiteVisitorName").Expires = #January 01, 2010# 
Response.Cookies("MySiteLeaveMeAlone") = RequestLeaveMeAlone 
Response.Cookies("MySiteLeaveMeAlone").Expires = #January 01, 2010# 
End if  
 
   接着,读取cookie: 
 
VisitorName = request.cookies("MySiteVisitorName") 
LeaveMeAlone = request.cookies("MySiteLeaveMeAlone") 
   如果cookie在访问者的计算机上不存在,就创建一个表单,询问相关信息: 
 
If VisitorName ="" and LeaveMeAlone ="" then 
% > 
< HTML > 
< HEAD > 
< /HEAD > 
< body bgcolor="#ccffff" text="black" link="navy" vlink="purple" > 
< DIV ALIGN="CENTER" > 
< form action="index.asp" method="POST" > 
< H2 >Let's be friends< /H2 > 
What's your name (leave blank and hit the Submit button if you don't want us to  
know)?  
< input type="text" name="name" >< br >< br > 
< input type="hidden" name="LeaveMeAlone" value="x" > 
< input type="submit" value="Submit" > 
< /FORM > 
< /DIV > 
< /BODY > 
< % 
End if 
   如果cookie已经存在,并且用户名字存在,就显示给访问者一个欢迎界面,然后执行其余的代码。 
 
If VisitorName < > "" then 
Response.write "Hi, " & VisitorName & "! I hope you are having a great day!" 
End if 
'rest of the page 
% > 
   尽管上面的这个例子很简单,但可以从中扩展许多富有创造力的应用。你可以在表单中加入许多功能,以便定制化web站点。 
你还可以让访问者定制网站的色彩、字体,以至于其他web元素。有可能的话,你可以询问访问者的生日,当访问者在那一天来访 
时,你就可以显示“生日快乐”的信息给他。 
 
   如你所见,cookie的扩展性是无穷的,这篇文章仅仅是抛砖引玉。

Asp:Cookies应用指南的更多相关文章

  1. asp:cookies的属性

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

  2. ASP.NETZERO 开发者指南-目录篇

    前面的话 此教程适用于 ASP.NET MVC 5.x & Angularjs 1.x  的ABP框架(收费需要授权) 所以有能力的朋友还是希望你们多多支持 土牛.购买链接:https://w ...

  3. asp.net学习指南

    个人总结了一些不错的基础视频教程 视频链接地址(猛戳这里)

  4. ASP开发入门+实战电子书共50本 —下载目录

    小弟为大家整理50个ASP电子书籍,有入门,也有实战电子书,做成了一个下载目录,欢迎大家下载. 资源名称 资源地址 ASP.NET开发实战1200例_第I卷 http://down.51cto.com ...

  5. ASP.NET MVC5入门1之项目创建

    本博文参考ASP.NET MVC5入门指南,下载链接: ASP.NET_MVC5_入门指南 1.创建项目 文件 --> 新建 --> 项目 Visual C# --> Web --& ...

  6. Windows 服务器部署 asp.net core

    踩坑日记与 Windows 服务器部署 asp.net core 指南. 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2 ...

  7. xss和sql注入原理学习

    8.4 Web跨站脚本攻击 8.4.1  跨站脚本攻击的原理(1) 跨站脚本在英文中称为Cross-Site Scripting,缩写为CSS.但是,由于层叠样式表 (Cascading Style ...

  8. C#,.Net 学习资源

    原文:http://blog.csdn.net/chinacsharper/article/details/17514923一.网站1.http://msdn.microsoft.com/zh-CN/ ...

  9. C# 学习电子书资料分享mobi epub等格式

    .NET之美:.NET关键技术深入解析 作者: 张子阳 出版社:机械工业出版社 大小:20.29MB 出版时间:14-01-01 格式:mobi ASP.NET 4权威指南 作者: 马伟 出版社: 大 ...

随机推荐

  1. Android Monkey 测试策略【转】

    Monkey 测试针对不同的对象和不同的目的,需要采用不同的测试方案. 首先测试的对象.目的及类型如下: 测试的类型 应用程序的稳定性测试 应用程序的压力测试 测试对象 单一 apk apk 集合 测 ...

  2. 京东的SSO

    京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该co ...

  3. String.getBytes()--->字符串转字节数组

    是String的一个方法String的getBytes()方法是得到一个系统默认的编码格式的字节数组getBytes("utf-8") 得到一个UTF-8格式的字节数组把Strin ...

  4. Dubbo集成步骤

    dubbo协议实现与webservice一样的效果,用于服务调用之间的接口.dubbo可在中间实现真正意义上的中间调用管理,是一个中间管理系统. demo:http://www.devnote.cn/ ...

  5. jQuery第三章

    一.jQuery中的DOM操作 一般来说,DOM操作分为3个方面,即DOM Core核心.HTML-DOM和CSS-DOM 1.DOM Core JavaScript中的getElementById( ...

  6. HDU 2102 A计划(DFS)

    题目链接 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主 ...

  7. [ An Ac a Day ^_^ ] CodeForces 677B Vanya and Food Processor 模拟

    题意: 你有一个榨汁机 还有n个土豆 榨汁机可以容纳h高的土豆 每秒可以榨k高的东西 问按顺序榨完土豆要多久 思路: 直接模拟 一开始以为是最短时间排了个序 后来发现多余了…… #include< ...

  8. SharePoint2013基于Form(FBA)的AD认证登陆

    来源于:http://www.haogongju.net/art/1964313 1. 使用SharePoint2013实现基于AD的Form认证,首先创建一个Web Application,步骤如下 ...

  9. 关于No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s)使用百度地图的解决办法

    出现的原因:armv7s是应用在iPhone 5 A6 的架构上的解决的方式:1,在Project target里“Architectures”设置为“Standard (armv7,armv7s)” ...

  10. java innerclass

    ---恢复内容开始--- 内部类: public class Inner{ public class Inner2{} } 创建内部类对象 .new public class Test {    in ...