asp.net中HttpCookie操作cookie的方法


微軟對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);
}
二、我對HttpCookie與Response.Cookies、Request.Cookies的理解

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("不存在");
}
 
原創文章,轉載請注明: 轉載自沉默的小丑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM