一、了解Cookies對象
Cookies是由Web服務器管理的存放在客戶計算機中的一個數據集合。這些數據是客戶端、服務器端相關的。也就是說客戶浏覽器每登錄一個網站,在Cookies中就會保存客戶浏覽器與該網站的相關信息。即使客戶用同一個浏覽器登陸了多個網站,在Cookies中依然會保存浏覽器與多個網站的相關信息,但Cookies中這些信息的管理是有序的,當客戶浏覽器再次登錄某網站時,只有Cookies中相對應的信息會發生作用。
Cookies是Web應用程序設計的一項很重要的技術,當Web服務器想知道某個用戶的相關資料或幾個ASP.NET文件之間傳送的數據時就可以使用Cookies。
很多網站中的Web應用程序都是由多個ASP.NET文件組成的,為完成某一特定功能,要求在這些ASP.NET文件之間能夠傳送一些參數,這些參數就可以存為Cookies,這樣當文件1想傳送數據給文件2時,只要文件1中的數據將參數作為Cookies寫入Cookies.txt文件中,然後文件2再從Cookies.txt文件中將指定名稱的Cookies信息讀出即可。Cookies中信息的寫入工作由Response對象完成,Cookies信息的讀取工作由Request對象完成。[在另一篇:Asp.net內置對象之Request對象中]
二、Cookie對象的屬性和方法
屬性:三、Cookie的基本操作
1.創建Cookie對象並設置過期時間
復制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
//創建Cookie對象
HttpCookie mycookie = new HttpCookie("MyCookie");//創建一個名稱為“MyCookie”的Cookie
mycookie.Value = Server.HtmlEncode("大家好,我是Cookie");//設置Cookie的值
mycookie.Expires = DateTime.Now.AddDays(10);//設置Cookie過期時間
Response.AppendCookie(mycookie);//將一個HTTP Cookie添加到內部Cookie集合中
//Response.Cookies.Add(mycookie);//添加到內部Cookie集合中,與上面相同
}
2.獲取Cookie對象
復制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
//獲取Cookie對象
try
{
HttpCookie mycookie = new HttpCookie("MyCookie");
mycookie.Value = Server.HtmlEncode("Hello,我是Cookie");
mycookie.Expires = DateTime.Now.AddHours(10);
Response.AppendCookie(mycookie);
Response.Write("創建Cookie成功");
Response.Write("<hr>");
//----------使用------------
HttpCookie getMyCookie = Request.Cookies["MyCookie"];//獲取Cookie
Response.Write(getMyCookie.Name + getMyCookie.Value + getMyCookie.Expires);//輸出
}
catch
{
Response.Write("Cookie 創建失敗");
}
}
四、實例:Cookie的寫入和讀取
Response對象包含一個Cookies屬性。可以通過Cookies屬性設置、管理Cookies的信息。如果指定的Cookies不存在則創建該Cookies,如果存在則用新值替換舊值。
Cookie對象需要利用.NET提供的HttpCookie類重新定義。使用“Response.Cookies.Add”將信息發送並保存到客戶端的浏覽器,利用Request對象提供的方法可以將Cookies信息讀取出來。
如下實例:
代碼如下:
復制代碼 代碼如下:
在default1頁面中:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//保存cookie信息
HttpCookie c1 = new HttpCookie("user");//HttpCookie類實例化一個從cookie對象,創建並命名新的cookie
c1.Value = "cookie Value"; //設置單個cookie的值
Response.Cookies.Add(c1); //將指定的cookie保存到Cookies集合中
Response.Write("<script>alert('保存成功!')</script>");
}
protected void Button2_Click(object sender, EventArgs e)
{
//提交頁面
Response.Redirect("Default2.aspx");
}
復制代碼 代碼如下:
在default2頁面:
protected void Button1_Click(object sender, EventArgs e)
{
//讀取coookie
Response.Write("cookie的名稱(Name):" + Request.Cookies["user"].Name + "<br/>");
Response.Write("cookie的值(Value):" + Request.Cookies["user"].Value + "<br/>");
}
五、Cookie對象相比Session、Application的優缺點:
以下總結來自:ASP.NET 3.5 開發技術大全
相比Session和Application對象,使用Cookie能持久化保存用戶信息。Cookie保存在客戶端,而Session和Application保存在服務器端,故Cookie能長久保存。web應用程序可以通過獲取客戶端的Cookie來進行用戶身份認證。
Asp.net包含兩個Cookie集合,通過HttpRequest的Cookie集合進行訪問,Cookie不是Page類的子類,所以使用方法與Session和Application不同,相比於他們Cookie的優點如下:
1.可以配置過期時間
2.簡單:Cookie是一種基於文本的輕量級結構,包括簡單的鍵值對
3.數據持久:因為保存到客戶端
4.無任何服務器資源:因為存儲在本地客戶端
缺點如下:
1.大小限制:
2.不確定性:可能用戶刪除Cookie或者禁用
3.安全風險:可偽造修改
最後推薦一篇:Cookies