状态管理之Cookie

一、Cookie工作流程

如果在用户请求站点中不仅仅是一个页面,还有一个包含过期时间的 Cookie,用户的浏览器在获得页面的同时还获得了该 Cookie,并将它存储在用户硬盘上的某个文件夹中。

以后,如果该用户再次请求该站点,浏览器便会在本地硬盘上查找与之关联Cookie。如果该 Cookie 存在,浏览器便将该 Cookie 与页请求一起发送到请求站点。

二、Cookie相关规则

浏览器负责管理用户系统上的 CookieCookie 通过 HttpResponse 对象发送到浏览器,该对象公开称为 Cookies 的集合。可以将 HttpResponse 对象作为 Page 类的 Response 属性来访问。要发送给浏览器的所有 Cookie 都必须添加到此集合中。创建 Cookie 时,需要指定 Name Value。每个 Cookie 必须有一个唯一的名称,以便以后从浏览器读取 Cookie 时可以识别它。由于 Cookie 按名称存储,因此用相同的名称命名两个 Cookie 会导致其中一个 Cookie 被覆盖。

三、Cookie操作

1:添加单值CookieCookies集合中

Response.Cookies["userName"].Value = "patrick";

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1d);

 

HttpCookie aCookie = new HttpCookie("lastVisit");

aCookie.Value = DateTime.Now.ToString();

aCookie.Expires = DateTime.Now.AddDays(1d);

Response.Cookies.Add(aCookie);

2:添加多值CookieCookies集合中

Response.Cookies["userInfo"]["userName"] = "patrick";

Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();

Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

 

HttpCookie aCookie = new HttpCookie("userInfo");

aCookie.Values["userName"] = "patrick";

aCookie.Values["lastVisit"] = DateTime.Now.ToString();

aCookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(aCookie);

3:读取单值Cookie

if(Request.Cookies["userName"] != null)

    Label1.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

 

if(Request.Cookies["userName"] != null)

{

    HttpCookie aCookie = Request.Cookies["userName"];

    Label1.Text = Server.HtmlEncode(aCookie.Value);

}

4:读取多值Cookie

if(Request.Cookies["userInfo"] != null)

{

    Label1.Text =

        Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]);

 

    Label2.Text =

        Server.HtmlEncode(Request.Cookies["userInfo"]["lastVisit"]);

}

5:删除cookie

if (Request.Cookies["UserSettings"] != null)

{

    HttpCookie myCookie = new HttpCookie("UserSettings");

    myCookie.Expires = DateTime.Now.AddDays(-1d);

    Response.Cookies.Add(myCookie);

}

 

 

posted @ 2009-10-19 22:15  老Z  阅读(245)  评论(0编辑  收藏  举报