微软对HttpCookie的定义为“提供创建和操作各 HTTP Cookie 的类型安全方法。”
HttpCookie的构造函数一共有两个 1.HttpCookie(String) //直接定义 2.HttpCookie(String, String) //定义并赋值
感觉第一个用的比较常见,因为使用HttpCookie定义cookie对象,往往只是操作对象中的键值对。如果只是定义简单的cookie,可以
一、HttpCookie使用示例:
1.写cookie
HttpCookie cookie = HttpCookie("person"); cookie.Expires = DateTime.Now.Add( TimeSpan(0,1,0,0)); cookie.Values.Add("name","张三"); cookie.Values.Add("age","20"); Response.Cookies.Add(cookie); //Response.AppendCookie(cookie); /用于追加操作 HttpCookie cookie = Request.Cookies.Get("person"); Response.Write(cookie.Value+"<br/>"); Response.Write(cookie.Values["name"]+"<br/>"); //张三 Response.Write(cookie["name"]); 3.删除cookie,因为我们操作的是cookie对象,所以删除可以分为全部删除,即删除person。或只删除cookie对象中的键
a.删除cookie对象中的键
HttpCookie cookie
= Request.Cookies.Get("person"); cookie.Values.Remove("name"); //Response.AppendCookie(cookie); Response.Cookies.Add(cookie); b.删除整个cookie,设置cookie日期过期 HttpCookie cookie
= Request.Cookies.Get("person"); cookie.Expires = DateTime.Now.Add( TimeSpan(0, -3, 0, 0)); Response.Cookies.Add(cookie); Response(HttpResponse)与Request(HttpRequest)使用System.Web.HttpCookieCollection响应cookie集合,通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。 通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie,这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 并且通过Response,Request我们可以直接操作cookie。
而HttpCookie更面向于对象,我们在操作cookie时,是在操作一个对象。我们要响应cookie也必须使用Response与Request。因为我们写cookie时要用到: Response.Cookies.Add(cookie); 而读取时: Request.Cookies.Get(“person”);
而独立于Response的HttpCookie对象无法设置成功,独立于Request的HttpCookie对象始终为null。
HttpCookie只是方便我们操作cookie,并且更加的面向对象。
三、HttpCookie与Response.Cookies,Request.Cookies的互操作
HttpCookie与Response.Cookies,Request.Cookies的互操作是完全可行的。
不管是用哪个写用哪个读都是可行的。例如:
1.HttpCookie写,Request读 //写 cookie HttpCookie cookie = HttpCookie("person"); cookie.Values.Add("name","张三"); Response.Write(Request.Cookies["person"]["name"]);//response写 Response.Cookies["person"]["name"]="lisi"; Response.Cookies["person"]["age"] = "20"; HttpCookie cookie = Request.Cookies.Get("person"); Response.Write(cookie.Value+"<br/>"); //读取全部 会员&name=张三&age=20 Response.Write(cookie.Values["name"]+"<br/>"); //张三 Response.Write(cookie["name"]); //张三