一、瞭解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對象的屬性和方法
屬性:
(1).Name:擷取或設定Cookie的名稱
(2).Value:擷取或設定Cookie的值
(3).Expires:擷取或設定Cookie的到期時間
(4).Version:擷取或設定Cookie的符合HTTP維護狀態的版本
方法:
(1).Add:增加Cookie變數,將指定的cookie儲存到Cookies集合中
(2).Clear:清除Cookie集合中變數
(3).Get:通過變數名或索引得到Cookie變數的值
(4).Remove:通過Cookie變數名或索引刪除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