当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

6.6Cookies对象

8/31/2020 9:52:39 PM 人评论

6.6Cookies对象

6.6 Cookies对象

Cookie对象派生自HttpCookie类。Cookie对象为Web应用程序保存用户相关信息提供了一种有效的方法。当用户访问某个的站点时,该站点可以利用Cookie保存用户首选项或其他信息,这样当用户下次再访问该站点时,应用程序就可以检索以前保存的信息了。

6.6.1 Cookies对象的属性和方法

Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存中,或是从客户端的硬盘读取数据的一种技术。Cookies是当用户浏览某网站时,由Web服务器置于用户硬盘上的一个非常小的文本文件,它可以记录用户的ID、密码、浏览过的网页、停留的时间等信息。当用户再次来到该网站时,网站通过读取Cookies,得知用户的相关信息,就可以做出相应的动作,如在页面显示欢迎用户的标语,或者让用户不用输入ID、密码就直接登录等等。

保存的信息片断以“键/值”对的形式储存,一个“键/值”对仅仅是一条命名的数据。一个网站只能取得它放在用户的电脑中的信息,它无法从其他的Cookies文件中取得信息,也无法得到用户电脑上的其他任何东西。Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的处理程序才知道它们真正的含义。

使用Cookies的优点可以归纳为如下几点:

● 可配置到期规则。Cookies可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。

● 不需要任何服务器资源。Cookies存储在客户端并在发送后由服务器读取。

● 简单性。Cookies是一种基于文本的轻量结构,包含简单的键值对。

● 数据持久性。虽然客户端计算机上Cookies的持续时间取决于客户端上的Cookies过期处理和用户干预,Cookies通常是客户端上持续时间最长的数据保留形式。

但使用Cookies也会有一些缺点:一些用户可能在他们的浏览器中禁止Cookies,这就会导致那些需要Cookies的Web应用程序出现问题。大部分情况下,Cookies是被广泛采用的,因为很多网站都在使用Cookies。然而,Cookies可能会限制网站的潜在用户,Cookies是不适合于使用的移动装置的嵌入式浏览器,同时,用户可以手动删除存放在自己硬盘内的Cookies。

在ASP.NET 4.5中,Cookies是一个内置对象的,但该对象并不是Page类的子类,在这一点它和下一节将要讲述的Session是不同的。

Cookie对象的常用属性和方法如表6-6所示。

表6-6 Cookie对象的常用属性和方法

alt

(续表)

alt

6.6.2 Cookies对象的使用

Cookies使用起来非常容易,在使用Cookies之前,程序员需要在自己的程序里引用System.Web命名空间,代码如下:

alt

对象Request和Response都提供了一个Cookies集合。可以利用Response对象设置Cookie的信息,而使用Request对象获取Cookie的信息。

为了设置一个Cookie,只需要创建一个System.Web.HttpCookie的实例,把信息赋予该实例,然后把它添加到当前页面的Response对象里面,创建HttpCookie实例的代码如下:

alt

上面的代码中第1行创建一个cookie实例。第2行采用键/值结合的方式添加要存储的信息。第3行把cookies加入当前页面的Response对象里面。

采用以上方式,一个Cookie被添加,它将被发送每一请求,该Cookie将要保持到用户关闭浏览器。为了创建一个生命周期比较长的Cookie,程序可以为Cookie设置一个生命期限,示例代码如下:

alt

上述代码为cookie设置1年的生命期限。

开发人员可以利用Cookies的名字从Request.Cookies集合取得信息,示例代码如下:

alt

上面的代码中第1行声明一变量用来存储从Cookie里取出的信息。第3行判断cookie1是否为空,因为用户有可能禁止Cookies,用户也可能把Cookies给删除掉。

有时,可能需要修改某个Cookie,更改其值或延长其有效期(注意:由于浏览器不会把有效期信息传递到服务器,所以程序无法读取Cookie的过期日期)。实际上并不是直接更改Cookie。尽管可以从Request.Cookies集合中获取Cookie并对其进行操作,但Cookie本身仍然存在于用户硬盘上的某个地方。因此,修改某个Cookie实际上是指用新的值创建新的Cookie,并把该Cookie发送到浏览器,覆盖客户机上旧的Cookie。以下示例说明了如何更改用于储存站点访问次数的Cookie值:

alt

以上代码中第2行判断Cookie如果为空,将站点访问次数设置为0。第6行中如果Cookie不为空,将次数加1。第8行将访问次数保存到Cookie,第9行为cookie设置1天的生命期限。

删除Cookie是修改Cookie的另一种形式。由于Cookie位于用户的计算机中,所以无法直接将其删除。但可以让浏览器来删除Cookie。修改Cookie的方法前面已经介绍过(即用相同的名称创建一个新的Cookie),不同的是将其有效期设置为过去的某个日期。当浏览器检查Cookie的有效期时,就会删除这个已过期的Cookie。

删除一个Cookie的方式就是利用一个过期的Cookie来代替它,示例代码如下:

alt

以上代码第2行将cookie的年生命期限设置为-1来表示cookie已过期。

【实例6-6】Cookie对象的使用

使用Cookie保存用户登录网站的信息。在首次登录后,将登录信息写入到用户计算机的Cookie中;当再次登录时,将用户计算机中的Cookie信息读出并直接登录到网站而不需要再次进入登录页面输入用户信息。

01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例6-6”。

02 在“实例6-6”中创建一个名为Default.aspx的窗体。

03 单击网站的目录下的Default.aspx文件,进入“视图编辑”界面,打开“源视图”,在编辑区中<form></form>标记之间编写如下代码。

alt

上面的代码中第1行和第4行分别添加两个文本框服务器控件TextBox1和TextBox2。第2行添加了一个单选按钮服务器控件CheckBox1。第5行添加一个按钮服务器控件Button1并设置其单击事件为Click。

04 单击网站目录下的Default.aspx.cs文件,编写代码如下:

alt

上面的代码中第1行处理Page页面的加载事件Load。第2行判断如果用户计算机中Cookie中ID和PWD存在的话。第3行和第4行通过Request对象的Cookie的value属性获取用户名和密码的值。第5行通过Response对象的Redirect方法跳转到New.aspx页面并将用户名和密码的值同时传递过去。第8行处理按钮控件Button1的单击事件Click。第9行判断如果用户选择单选按钮。则第10行、第11行设置用户名和密码Cookie的生命周期。第12行和13行通过Response对象的Cookie的value属性将两个文本框中的值保存到Cookies中。第15行跳转到New.aspx页面并将两个文本框中的值同时传递过去。

05 在应用程序中添加一个New.aspx页面。然后在New.aspx.cs文件中添加如下代码:

alt

上面的代码中第1行处理Page页面的加载事件Load。第2行判断如果Request对象的QueryString属性获得的用户名和密码不为空。则的第3行在页面显示用户名加欢迎光临本网站的欢迎辞。

06 按快捷键Ctrl+F5运行程序,如图6-12所示。在显示的登录页面中输入用户名和密码,选中单选框,单击“登录”按钮。

alt

图6-12 运行结果1

07 页面跳转至如图6-13所示的New.aspx。

alt

图6-13 运行结果2

此后再运行程序将发现直接进入New.aspx页面而不再进入登录页面,这时因为用户名和密码已经保存到了Cookie的效果。

上一篇:6.5Server对象

下一篇:6.7Session对象

相关教程

共有条评论 网友评论

验证码: 看不清楚?