作为一个程序员cookie编程最必须要掌握的知识点本文章讲一下cookie编程要注意的一些问题及应用技巧Cookie其实就是由Web服务器创建的将信息存储在计算机上的文件那么为什么Web服务器要在客户机上面创建如此文件?这是因为当客户机发送一个请求到WEB服务器时(譬如准备浏览页面时)无论此客户机是否是第一次来访服务器都会把它当作第一次来对待WEB服务器所做的工作只是简单的进行响应然后就关闭与该用户的连接这样处理过程所带来的缺点时显而易见的自从网景公司开发出Cookie以后就可以利用Cookie来保存用户的识别信息Cookie的作用可以记录了您在该站点上曾经访问过的页面由此帮助您下次访问该站点时自定义查看Cookies 也可以存储个人可识别信息个人可识别信息是可以用来识别或联系您的信息例如姓名电子邮件地址家庭或工作地址或者电话号码然而网站只能访问您提供的个人可识别信息例如除非您提供电子邮件名称否则网站将不能确定您的电子邮件名称另外网站不能通过Cookie来访问计算机上的其他信息当然除非你提供那么Cookie到底存放在什么地方?如果机器的系统是视窗且安装在 C 盘中那么Cookie存放在 C:\Windows\Cookies 目录中如果机器系统是视窗且安装在 C 盘中那么Cookie存放在 C:\Documents and Settings\Administrator\Cookies 目录中了解了Cookie这么多知识我们还是来了解一下本文的重点 C#是如何进行Cookie方面编程的主要内容有二点其一是 C#是如何写入Cookie其二是 C#是如何访问自己写入的Cookie
一本文介绍的程序设计和运行的软件环境
微软公司视窗服务器版
Net FrameWork SDK Beta
C#进行Cookie方面编程是通过ASPNET页面来实现的
二C#如何写入Cookie
为了写入Cookie他的步骤主要有三步具体如下
首先就要创建一个HttpCookie对象通过这个对象来构造一个Cookie这个对象的名称就是以后产生的Cookie名称具体如下代码
HttpCookie cookie = new HttpCookie ( 用户定义的Cookie名称 ) ;
然后对创建的HttpCookie对象的 Value 属性分配一个字符串值 Value 的值就是后来产生的Cookie的值具体代码如下
cookieValue = 用户给Cookie赋值 ; 如果你想写入的Cookie数值不是一个简单的字符串而是一个复杂的数据类型我们知道这些数据类型是不能直接存贮到Cookie中的因为Cookie中只能存贮字符串但你可以通过一个变通的方法就是把这个复杂的数据类型转换成多个字符串然后把这多个字符串同时赋值给产生的Cookie值这样Cookie中的内容就丰富了以后利用Cookie完成的功能也强大了这时你可能就会明白为什么当你浏览Web服务器Web服务器会知道你什么时候曾经浏览过并且曾经待过多长时间等信息了因为这些信息已经存储到你第一次浏览页面时Web服务器产生的Cookie中去了下列代码是把多个字符串存储到Cookie的例子
cookie [ 姓名 ] = 王天;
cookie [ 性别 ] = 男;
cookie [ 年龄 ] = ;
Cookie有临时的也有永远的永久 Cookie 以文件形式存储在计算机上关闭 Internet Explorer 时仍然保留在计算机上再次访问该站点时创建该 Cookie 的网站可以读取在具体的编程时候是在写入此Cookie的时候设定Cookie的生命周期具体如下代码
DateTime dtNow = DateTime Now ;
TimeSpan tsMinute = new TimeSpan ( ) ;
cookie Expires = dtNow + tsMinute ;
以上代码是设定产生的Cookie的生命期为 一个小时 你可以通过修改 TimeSpan 属性来设定产生Cookie的具体生命期
最后调用 ResponseCookies 对象的 Add() 方法加入此对象这样就可以产生一个Cookie了具体代码如下
Response Cookies Add ( cookie ) ;
下列代码就是在 C#写入Cookie的完整代码(Writeaspx)
<% @ language = C# %>
<script runat = server >
void WriteClicked ( Object Sender EventArgs e )
{
//创建一个HttpCookie对象
HttpCookie cookie = new HttpCookie ( NameField Text ) ;
//设定此cookies值
cookie Value = ValueField Text ;
//设定cookie的生命周期在这里定义为一个小时
DateTime dtNow = DateTime Now ;
TimeSpan tsMinute = new TimeSpan ( ) ;
cookie Expires = dtNow + tsMinute ;
cookie [ 姓名 ] = 王天 ;
cookie [ 性别 ] = 男 ;
cookie [ 年龄 ] = ;
//加入此cookie
Response Cookies Add ( cookie ) ;
Response Write ( NameField Text + Cookie创建完毕 <br > <hr > ) ;
}
</script >
<html >
<body >
<h > 在 C#页面中创建cookie </h >
此cookie的生命周期定义为一个小时
<form runat=server>
Cookie名称<asp:textbox id = NameField runat = server /> <br >
Cookie的值<asp:textbox id = ValueField runat = server /> <br >
<asp:button text = 创建Cookie onclick = WriteClicked runat = server /> <br >
</form >
</body >
</html >
当然上面的代码产生的Cookie在内容上面有点单调了其实对于内容十分丰富的Cookie来说他还有许多属性充分的利用这些属性才可以利用了Cookie的强大功能下表是Cookie的一些常用的属性
属性 描述
Domain 设定/获得Cookie应属于的域名一旦设定了此属性则只限定于此域名的Web服务器访问此Cookie可以设定为
Path 设定/获得Cookie应属于的路径如果设定后则访问此Cookie的Web页面则被限定在此路径里面其他路径的Web页面则不能访问
Secure 设定/获得一个标识来表明利用HTTP协议是否能够安全的传输Cookie到客户端的浏览器
HasKeys 表明是否此Cookie是否是多个字符串组成的
在写入Cookie的时候最大限度的利用这些属性对于最大程度的利用写入的Cookie是十分重要的
三C#是如何读取已产生的Cookie
读取指定的Cookie比起写入Cookie要来的容易的多了只需要使用 RequestCookies 对象就可以完成下面是读取指定Cookie名称的方法
HttpCookie cookie = RequestCookies [ Cookie的名称 ] ;
下面是显示已经读取了的Cookie的数值
ResponseWrite (cookie Value ToString ( ) ) ; 掌握了上面的截止阀要点读取Cookie就显得非常容易了下列是读取Cookie的程序代码(readaspx) <% @ language = C# %>
<script runat = server >
void ReadClicked ( Object Sender EventArgs e )
{
//得到用户输入的cookie名称
String strCookieName = NameField Text ;
//获得cookie
HttpCookie cookie = RequestCookies [ strCookieName ] ;
//确定是否存在用户输入的cookie
if ( null == cookie ) {
ResponseWrite ( 没有发现指定的cookie <br > <hr > ) ;
}
else {
//找到指定的cookie显示cookie的值
String strCookieva lue = cookie Value ToString ( ) ;
ResponseWrite ( strCookieName + cookie 的值为 <b >
+ strCookieva lue + </b > <br > <hr > ) ;
}
}
</script >
<html >
<body >
在 C#页面中读取指定Cookie值<br >
<form runat = server >
请输入要读取的Cookie名称<asp:textbox id = NameField runat = server />
<asp:button text = 读取cookie onclick = ReadClicked runat = server />
</form >
</body >
</html >
好了十分差不多够了谢谢大家的关注如有不当之处敬请指正