Asp.net内置对象之Cookies
一、了解Cookies對象
Cookies是由Web服務(wù)器管理的存放在客戶計(jì)算機(jī)中的一個(gè)數(shù)據(jù)集合。這些數(shù)據(jù)是客戶端、服務(wù)器端相關(guān)的。也就是說客戶瀏覽器每登錄一個(gè)網(wǎng)站, 在Cookies中就會保存客戶瀏覽器與該網(wǎng)站的相關(guān)信息。即使客戶用同一個(gè)瀏覽器登陸了多個(gè)網(wǎng)站,在Cookies中依然會保存瀏覽器與多個(gè)網(wǎng)站的相關(guān) 信息,但Cookies中這些信息的管理是有序的,當(dāng)客戶瀏覽器再次登錄某網(wǎng)站時(shí),只有Cookies中相對應(yīng)的信息會發(fā)生作用。
Cookies是Web應(yīng)用程序設(shè)計(jì)的一項(xiàng)很重要的技術(shù),當(dāng)Web服務(wù)器想知道某個(gè)用戶的相關(guān)資料或幾個(gè)ASP.NET文件之間傳送的數(shù)據(jù)時(shí)就可以使用Cookies。
很多網(wǎng)站中的Web應(yīng)用程序都是由多個(gè)ASP.NET文件組成的,為完成某一特定功能,要求在這些ASP.NET文件之間能夠傳送一些參數(shù),這些參 數(shù)就可以存為Cookies,這樣當(dāng)文件1想傳送數(shù)據(jù)給文件2時(shí),只要文件1中的數(shù)據(jù)將參數(shù)作為Cookies寫入Cookies.txt文件中,然后文 件2再從Cookies.txt文件中將指定名稱的Cookies信息讀出即可。Cookies中信息的寫入工作由Response對象完 成,Cookies信息的讀取工作由Request對象完成。
二、Cookie對象的屬性和方法
屬性:(1).Name:獲取或設(shè)置Cookie的名稱
(2).Value:獲取或設(shè)置Cookie的值
(3).Expires:獲取或設(shè)置Cookie的過期時(shí)間
(4).Version:獲取或設(shè)置Cookie的符合HTTP維護(hù)狀態(tài)的版本
?
方法:(1).Add:增加Cookie變量,將指定的cookie保存到Cookies集合中
(2).Clear:清除Cookie集合中變量
(3).Get:通過變量名或索引得到Cookie變量的值
(4).Remove:通過Cookie變量名或索引刪除Cookie對象
三、Cookie的基本操作
1.創(chuàng)建Cookie對象并設(shè)置過期時(shí)間
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 //創(chuàng)建Cookie對象 4 HttpCookie mycookie = new HttpCookie("MyCookie");//創(chuàng)建一個(gè)名稱為“MyCookie”的Cookie 5 mycookie.Value = Server.HtmlEncode("大家好,我是Cookie");//設(shè)置Cookie的值 6 mycookie.Expires = DateTime.Now.AddDays(10);//設(shè)置Cookie過期時(shí)間 7 Response.AppendCookie(mycookie);//將一個(gè)HTTP Cookie添加到內(nèi)部Cookie集合中 8 //Response.Cookies.Add(mycookie);//添加到內(nèi)部Cookie集合中,與上面相同 9 }2.獲取Cookie對象
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 //獲取Cookie對象 4 try 5 { 6 HttpCookie mycookie = new HttpCookie("MyCookie"); 7 mycookie.Value = Server.HtmlEncode("Hello,我是Cookie"); 8 mycookie.Expires = DateTime.Now.AddHours(10); 9 Response.AppendCookie(mycookie); 10 Response.Write("創(chuàng)建Cookie成功"); 11 Response.Write("<hr>"); 12 //----------使用------------ 13 HttpCookie getMyCookie = Request.Cookies["MyCookie"];//獲取Cookie 14 Response.Write(getMyCookie.Name + getMyCookie.Value + getMyCookie.Expires);//輸出 15 } 16 catch 17 { 18 Response.Write("Cookie 創(chuàng)建失敗"); 19 } 20 }?
四、實(shí)例:Cookie的寫入和讀取
Response對象包含一個(gè)Cookies屬性??梢酝ㄟ^Cookies屬性設(shè)置、管理Cookies的信息。如果指定的Cookies不存在則創(chuàng)建該Cookies,如果存在則用新值替換舊值。
Cookie對象需要利用.NET提供的HttpCookie類重新定義。使用“Response.Cookies.Add”將信息發(fā)送并保存到客戶端的瀏覽器,利用Request對象提供的方法可以將Cookies信息讀取出來。
如下實(shí)例:
?
?
代碼如下:
1 在default1頁面中: 2 protected void Page_Load(object sender, EventArgs e) 3 { 4 5 } 6 protected void Button1_Click(object sender, EventArgs e) 7 { 8 //保存cookie信息 9 10 HttpCookie c1 = new HttpCookie("user");//HttpCookie類實(shí)例化一個(gè)從cookie對象,創(chuàng)建并命名新的cookie 11 c1.Value = "cookie Value"; //設(shè)置單個(gè)cookie的值 12 Response.Cookies.Add(c1); //將指定的cookie保存到Cookies集合中 13 Response.Write("<script>alert('保存成功!')</script>"); 14 15 } 16 protected void Button2_Click(object sender, EventArgs e) 17 { 18 //提交頁面 19 Response.Redirect("Default2.aspx"); 20 } 1 在default2頁面: 2 protected void Button1_Click(object sender, EventArgs e) 3 { 4 //讀取coookie 5 Response.Write("cookie的名稱(Name):" + Request.Cookies["user"].Name + "<br/>"); 6 Response.Write("cookie的值(Value):" + Request.Cookies["user"].Value + "<br/>"); 7 8 }?五、Cookie對象相比Session、Application的優(yōu)缺點(diǎn):
以下總結(jié)來自:ASP.NET 3.5 開發(fā)技術(shù)大全
相 比Session和Application對象,使用Cookie能持久化保存用戶信息。Cookie保存在客戶端,而Session和 Application保存在服務(wù)器端,故Cookie能長久保存。web應(yīng)用程序可以通過獲取客戶端的Cookie來進(jìn)行用戶身份認(rèn)證。
Asp.net包含兩個(gè)Cookie集合,通過HttpRequest的Cookie集合進(jìn)行訪問,Cookie不是Page類的子類,所以使用方法與Session和Application不同,相比于他們Cookie的優(yōu)點(diǎn)如下:
1.可以配置過期時(shí)間
2.簡單:Cookie是一種基于文本的輕量級結(jié)構(gòu),包括簡單的鍵值對
3.數(shù)據(jù)持久:因?yàn)楸4娴娇蛻舳?br />4.無任何服務(wù)器資源:因?yàn)榇鎯υ诒镜乜蛻舳?br />
缺點(diǎn)如下:
1.大小限制:
2.不確定性:可能用戶刪除Cookie或者禁用
3.安全風(fēng)險(xiǎn):可偽造修改
轉(zhuǎn)載于:https://www.cnblogs.com/jqmtony/archive/2013/02/13/2910814.html
總結(jié)
以上是生活随笔為你收集整理的Asp.net内置对象之Cookies的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 2947 Widget Fact
- 下一篇: Java jdbc中的date,大文本等