Asp.net內(nèi)置對象之Cookies(簡介/屬性方法/基本操作及實(shí)例)
一、了解Cookies對象
Cookies是由Web服務(wù)器管理的存放在客戶計(jì)算機(jī)中的一個(gè)數(shù)據(jù)集合。這些數(shù)據(jù)是客戶端、服務(wù)器端相關(guān)的。也就是說客戶瀏覽器每登錄一個(gè)網(wǎng)站,在Cookies中就會(huì)保存客戶瀏覽器與該網(wǎng)站的相關(guān)信息。即使客戶用同一個(gè)瀏覽器登陸了多個(gè)網(wǎng)站,在Cookies中依然會(huì)保存瀏覽器與多個(gè)網(wǎng)站的相關(guān)信息,但Cookies中這些信息的管理是有序的,當(dāng)客戶瀏覽器再次登錄某網(wǎng)站時(shí),只有Cookies中相對應(yīng)的信息會(huì)發(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對象完成。[在另一篇:Asp.net內(nèi)置對象之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í)間
protected void Page_Load(object sender, EventArgs e)
{
//創(chuàng)建Cookie對象
HttpCookie mycookie = new HttpCookie("MyCookie");//創(chuàng)建一個(gè)名稱為“MyCookie”的Cookie
mycookie.Value = Server.HtmlEncode("大家好,我是Cookie");//設(shè)置Cookie的值
mycookie.Expires = DateTime.Now.AddDays(10);//設(shè)置Cookie過期時(shí)間
Response.AppendCookie(mycookie);//將一個(gè)HTTP Cookie添加到內(nèi)部Cookie集合中
//Response.Cookies.Add(mycookie);//添加到內(nèi)部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("創(chuàng)建Cookie成功");
Response.Write("<hr>");
//----------使用------------
HttpCookie getMyCookie = Request.Cookies["MyCookie"];//獲取Cookie
Response.Write(getMyCookie.Name + getMyCookie.Value + getMyCookie.Expires);//輸出
}
catch
{
Response.Write("Cookie 創(chuàng)建失敗");
}
}
四、實(shí)例:Cookie的寫入和讀取
Response對象包含一個(gè)Cookies屬性。可以通過Cookies屬性設(shè)置、管理Cookies的信息。如果指定的Cookies不存在則創(chuàng)建該Cookies,如果存在則用新值替換舊值。
Cookie對象需要利用.NET提供的HttpCookie類重新定義。使用“Response.Cookies.Add”將信息發(fā)送并保存到客戶端的瀏覽器,利用Request對象提供的方法可以將Cookies信息讀取出來。
如下實(shí)例:
![]() |
![]() |
代碼如下:
在default1頁面中:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//保存cookie信息
HttpCookie c1 = new HttpCookie("user");//HttpCookie類實(shí)例化一個(gè)從cookie對象,創(chuàng)建并命名新的cookie
c1.Value = "cookie Value"; //設(shè)置單個(gè)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的優(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)榇鎯?chǔ)在本地客戶端
缺點(diǎn)如下:
1.大小限制:
2.不確定性:可能用戶刪除Cookie或者禁用
3.安全風(fēng)險(xiǎn):可偽造修改
- ASP.NET內(nèi)置對象之Application對象
- javascript function、指針及內(nèi)置對象
- JavaScript 核心參考教程 內(nèi)置對象
- js內(nèi)置對象 學(xué)習(xí)筆記
- javascript 基礎(chǔ)篇3 類,回調(diào)函數(shù),內(nèi)置對象,事件處理
- jsp內(nèi)置對象及方法詳細(xì)介紹
- Asp.net內(nèi)置對象之Request對象(概述及應(yīng)用)
- Asp.net內(nèi)置對象之Server對象(概述及應(yīng)用)
- JSP內(nèi)置對象:Request和Response的簡單介紹及使用
- 學(xué)習(xí)Java九大內(nèi)置對象
相關(guān)文章
ASP.NET技巧:請求網(wǎng)址并解析返回的html
ASP.NET技巧:請求網(wǎng)址并解析返回的html...2006-09-09C#利用服務(wù)器實(shí)現(xiàn)客戶端之間通信
這篇文章主要為大家詳細(xì)介紹了C#利用服務(wù)器實(shí)現(xiàn)客戶端之間通信,感興趣的小伙伴們可以參考一下2016-08-08DataGrid同時(shí)具有分頁和排序功能及注意點(diǎn)
DataGrid同時(shí)具有分頁和排序功能及注意點(diǎn)...2006-09-09.NET?Core分布式鏈路追蹤框架的基本實(shí)現(xiàn)原理
這篇文章介紹了.NET?Core分布式鏈路追蹤框架的基本實(shí)現(xiàn)原理,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03關(guān)于vs2005、vs2008和vs2010項(xiàng)目互轉(zhuǎn)的總結(jié)
有做.net的程序員和朋友曾經(jīng)問過我,關(guān)于vs2005和vs2008、vs2008和vs2010、vs2005和vs2010項(xiàng)目互轉(zhuǎn)的問題,特整理下分享給大家2012-04-04關(guān)于服務(wù)器或虛擬主機(jī)不支持 AjaxPro 的問題終極解決方法
asp.net的網(wǎng)站,訪問時(shí)提示不支持 AjaxPro,那就因?yàn)檎`刪的映射導(dǎo)致,可以通過下面的方法解決2012-03-03.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解
這篇文章主要給大家介紹了.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05ASP.NET FileUpload 上傳圖片實(shí)例
Add a FileUpload control to the aspx page2009-09-09ASP.NET Session對象保持會(huì)話使用說明
ASP.NET提供了Session對象,從而允許程序員識(shí)別、存儲(chǔ)和處理同一個(gè)瀏覽器對象對服務(wù)器上某個(gè)特定網(wǎng)絡(luò)應(yīng)用程序的若干次請求的上下文信息2012-12-12