目录
一、Cookie简介
1、什么是Cookies
Cookies 是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存中,或是从客户端的硬盘读取数据的一种技术。Cookies 是当用户浏览某网站时,由 Web 服务器置于用户硬盘上的一个非常小的文本文件(大多数浏览器支持最大保存4096 字节的 Cookies,限制了 Cookies的大小),它可以记录用户的 ID、密码浏览过的网页停留的时间等信息。当用户再次来到该网站时,网站通过读取 Cookies 得知用户的相关信息就可以做出相应的动作,如在页而显示欢迎用户的问候语或者让用户不用输入 ID密码就直接登录等。
保存的信息片断以“键/值”对的形式储存,一个“键/值”对仅仅是一条命名的数据。一个网站只能取得它放在用户电脑中的信息它无法从其他的 Cookies 文件中取得信息,也无法得到用户电脑上的其他任何东西。Cookies 中的内容大多数经过了加密处理因此般用户看来只是一些毫无意义的字母数字组合,只有服务器的处理程序才知道它们真正的含义。
2、Cookies的优点
(1)可配置到期规则:Cookies 可以在浏览器会话结束时到期或者可以在客户端计算机上无限期存在这取决于客户端的到期规则。
(2)不需要任何服务器资源:Cookies 存储在客户端并在发送后由服务器读取。
(3)简单性:Cookies 是一种基于文本的轻量结构,包含简单的键值对。
(4)数据持久性:虽然客户端计算机上 Cookies 的持续时间取决于客户端上的 Cookies 过期处理和用户干预,但是 Cookies 通常是客户端上持续时间最长的数据保留形式。
3、Cookies的缺点
一些用户可能在他们的浏览器中禁止 Cookies,这就会导致那些需要 Cookies 的 Web 应用程序出现运行问题。大部分情况下,Cookies 得到广泛使用很多网站都在使用 Cookies。然而,Cookies 可能会限制网站的潜在用户,Cookies 不适合移动装置的嵌人式浏览器。同时,用户可以手动删除存放在自己的硬盘内的 Cookies。
在ASP.NLT 4.0中,Cookies 是一个内置对象,但该对象并不是 Page 类的子类,这一点和上面讲述到的 Session 是不同的。
4、Cookie对象的常用属性和方法
属性和方法 | 说明 |
Expires | 获取或设置此 Cookies 的过期日期和时间 |
Item | HttpCookie.Values 的快捷方式。此属性是为了与以前的ASP版本兼容而提供的。在C#中,该属性为 HttpCookie 类的索引器 |
Name | 获取或设置 Cookies 的名称 |
Path | 获取或设置输出流的HTTP字符集 |
Add | 添加一个 Cookies 变量 |
Clear | 清除 Cookies 集合中的变量 |
Get | 通过索引或变量名得到 Cookies 变量值 |
GetKey | 以索引值获取 Cookies 变量名称 |
Remove | 通过 Cookies 变量名称来删除 Cookies 变量 |
Value | 获取或设置单个 Cookies 值 |
Values | 获取在单个 Cookies 对象中包含的键值对的集合 |
二、Cookie对象的使用
1、创建项目
2、在“解决方案资源管理器”中的项目名称上右键单击在弹出的快捷菜单中选择“添加”“新建项”命令,打开“添加新项”对话框,在该对话框中选择“已安装模板”下的“Web”模板,并在模板文件列表中选中“Web 窗体”然后在“名称”文本框输人该文件的名称“Defaultaspx”最后单击“添加”按钮即可向网站项目中添加一个新的文件。
3、使用同样的方法添加一个名为“New.aspx”的页面。
4、用鼠标双击网站的根目录下的“Default.aspx”文件,进人“视图编辑界面”打开“源视图”编辑区在<form></form>标记之间编写代码如下:
1.用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
2. <br />
3.密码:<asp;TextBox ID="TextBox2" runat="server" TextMode = "Password"></asp:TextBox>
4.<asp:Button ID="Buttonl" runat="server" onclick = "Button1_Click" Text="登录" /><br />
5.<asp:CheckBoxD="CheckBoxl" runat="server" Text="记住用户名密码"/>
代码说明:第1,3行分别添加两个文本框服务器控件 TextBox1和TextBox2。第4行添加一个按钮服务器控件 Buton 1,并设置其单击事件为 Click。第5 行添加了一个单选按钮服务器控件CheckBoxl。
5、用鼠标双击网站目录下的“Default.aspx.cs”文件,编写代码如下:
1.protected void Page_Load( object sender, EventArgs e){
2. if(Request.Cookies["ID"]!=null &&Request.Cookies["PWD"]! =null){
3. string id = Request.Cookies[ "ID"].Value.ToString();
4. string pwd = Request.Cookies[" PWD"].Value.ToString() ;
5. Response.Redirect("New.aspx? ID="+id+"&PWD="+pwd);
6. }
7.}
8.protected yoid Button1_Click( object sender, EventArgs e){
9. if (CheckBox1.Checked){
10. Response.Cookies["ID"].Expires = DateTime.Now.AddDays(30);
11. Response.Cookies[" PWD"].Expires = DateTime.Now.AddDays(30);
12. Response.Cookies["ID"].Value = TextBox1.Text;//ID 为键名
13. Response.Cookies["PWD"].Value = TextBox2.Text;//PWD为键名
14. }
15. Response.Redirect("New.aspx? ID="+TextBoxl.Text + "&PWD=" + TextBox2.Text);
16.}
代码说明:第1行处理 Page 页面的加载事件 Load。第2行判断用户计算机中 Cookie 中ID和PWD是否存在。第3,4行通过 Request 对象的Cookie 的 value 属性获取用户名和密码的值第5行通过Response对象的 Redirect 方法跳转到 New.aspx页面,并将用户名和密码的值同时传递过去。第8行处理按钮控件 Button 的单击事件 Click。第9行判断如果用户选择单选按钮。第10,11行设置用户名和密码 Cookie 的生命周期。第12,13 行通过 Request 对象的 Cookie的value属性将两个文本框中的值保存到 Cookies 中。第15行跳转到New.aspx 页面。并将两个文本框中的值同时传递过去。
5、在应用程序中添加一个 New.aspx 页面,然后在 New.aspx.cs 文件中添加如下代码:
1.protected void Page_Load( object sender, EventArgs e){
2.if(Request.OueryString["ID"] ! = null && Request.OueryString["PWD"] !=null){
3. Response.Write(""+RequestQueryString["ID"]+"欢迎光临本网站");
4. }
5.}
代码说明第1行处理 Page 页面的载事件 Lad。第2行判断如果 Request 对象的 Query.String 属性获得的用户名和密码是否为空。第 3 行在页面中显示用户名加“欢迎光临本网站”的信息。
6、按下“Ctrl+F5”,运行结果如图所示。在显示的登录页面中输人用户名和密码选中复选框,单击“登录”按钮。
7、页面跳转至如图所示的New.aspx。
8、此后再运行程序,将发现直接进入 New.aspx 页面而不再进登录页面,这是因为用户名和密码已经保存到了 Cookie 中。若要清除 Cookie,打开浏览器菜单栏“工具”“Internet 选项”在“常规”选项卡中,单击“删除 cookies”按钮。