微軟對HttpCookie的定義為“提供創建和操作各 HTTP Cookie 的類型安全方法。”
HttpCookie的構造函數一共有兩個 1.HttpCookie(String) //直接定義 2.HttpCookie(String, String) //定義並賦值
感覺第一個用的比較常見,因為使用HttpCookie定義cookie對象,往往只是操作對象中的鍵值對。如果只是定義簡單的cookie,可以直接使用response操作
一、HttpCookie使用示例:
1.寫cookie
//定義cookie對象
HttpCookie cookie = new HttpCookie("person");
//屬性為“會員”
cookie.Value = "會員";
//過期時間為1小時
cookie.Expires = DateTime.Now.Add(new TimeSpan(0,1,0,0));
//可以設置cookie的訪問目錄和域名
//cookie.Path = "";
//cookie.Domain = "";
//以下是定義的鍵值對。
cookie.Values.Add("name","張三");
cookie.Values.Add("age","20");
//添加到響應體中,不能缺少
Response.Cookies.Add(cookie);
//Response.AppendCookie(cookie);
/用於追加操作
2.讀取cookie
//從請求體中過去cookie對象
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{
//讀取全部 會員&name=張三&age=20
Response.Write(cookie.Value+"<br/>");
Response.Write(cookie.Values["name"]+"<br/>"); //張三
Response.Write(cookie["name"]);
//張三 }
else {
Response.Write("不存在");
}
3.刪除cookie,因為我們操作的是cookie對象,所以刪除可以分為全部刪除,即刪除person。或只刪除cookie對象中的鍵
a.刪除cookie對象中的鍵
HttpCookie cookie
= Request.Cookies.Get("person");
if(cookie!=null)
{
cookie.Values.Remove("name");
//Response.AppendCookie(cookie);
Response.Cookies.Add(cookie);
}
b.刪除整個cookie,設置cookie日期過期
HttpCookie cookie
= Request.Cookies.Get("person");
if(cookie!=null)
{
cookie.Expires = DateTime.Now.Add(new 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 = new HttpCookie("person");
cookie.Values.Add("name","張三");
//讀取
Response.Write(Request.Cookies["person"]["name"]);
//response寫
Response.Cookies["person"]["name"]="lisi";
Response.Cookies["person"]["age"] = "20";
2.Response寫,HttpCookie讀
//讀取
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null) {
Response.Write(cookie.Value+"<br/>"); //讀取全部 會員&name=張三&age=20
Response.Write(cookie.Values["name"]+"<br/>"); //張三
Response.Write(cookie["name"]); //張三
}
else {
Response.Write("不存在");
}