




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
3.1一個簡單的ASP.NET應用程序3.2關于ASP.NET3.3ASP.NET控件和內(nèi)置對象
Response Request Session Application Cookie第3
-1章開發(fā)環(huán)境和內(nèi)置對象3.1一個簡單的ASP.NET應用程序3.1.1創(chuàng)建ASP.NET應用程序【例11.1】基于C#的簡單ASP.NET應用程序。這是一個簡單的ASP.NET應用程序,其作用是將文本框中輸入的字符串顯示在網(wǎng)頁上。創(chuàng)建步驟如下:(1)啟動VS2008,選擇“文件”|“新建”|“項目”,打開“新建項目”對話框。在此對話框的“項目類型”框中選擇“VisualC#”項,在“模板”框中選擇“ASP.NETWeb應用程序”,表示要創(chuàng)建基于C#的ASP.NET應用程序,將程序名設置為MyFirstWebApp:(2)單擊【確定】按鈕,然后在生成界面的“解決方案資源管理器”中右擊“Default.aspx”節(jié)點,在彈出的菜單中選擇“視圖設計器”,以可打開頁面的視圖設計器。(3)將工具箱中的三個控件拖到設計界面中,這三個控件分別是Label、TextBox和Button控件,并適當設置它們的屬性和位置:3.1一個簡單的ASP.NET應用程序3.1.1創(chuàng)建ASP.NET應用程序(4)在設計界面中,雙擊【訪問控件】按鈕,即可進入到該按鈕的事件處理函數(shù)中,實際上是在Default.aspx.cs文件中生成了Button1_Click函數(shù)。在該函數(shù)中,添加下列代碼:
Label1.Text=TextBox1.Text;Label1.Font.Size=20;(5)運行程序MyFirstWebApp。方法是:按【Ctrl】+【F5】按鈕直接運行,也可以單擊快捷菜單欄上的“啟動調(diào)試”按鈕(相當于按【F5】)。在打開的IE瀏覽器界面的文本框中輸入一些字符串,然后單擊【訪問控件】按鈕:——至此,一個簡單的ASP.NET應用程序開發(fā)完畢。3.1一個簡單的ASP.NET應用程序3.1.1創(chuàng)建ASP.NET應用程序讀者可能注意到,雖然做的是網(wǎng)頁程序,但沒有感覺到要編寫任何的網(wǎng)頁代碼(編寫HTML代碼是一件煩雜的事情),而只是進行控件的拖放、控件屬性的設置以及C#代碼的編寫,這與開發(fā)C#窗體應用程序幾乎沒有什么區(qū)別。這是ASP.NET對Web應用程序設計的極大改進。造成這種改進主要是由于.NET平臺采用了界面和代碼分開的策略,即網(wǎng)頁文件放在Default.aspx文件中,而C#代碼則放在Default.aspx.cs文件中。3.1一個簡單的ASP.NET應用程序3.1.1創(chuàng)建ASP.NET應用程序Default.aspx.cs文件是與頁面元素相關聯(lián)的C#文件,它就是ASP.NET代碼隱藏的地方。對ASP.NET應用程序來說,這里就是程序員的“用武之地”。前面指出的“界面元素和代碼分開”,指的就是將程序文件分為ASP.NET應用中的.aspx文件和.aspx.cs文件。ASP(ActiveServerPages)是Microsfot公司于1996年11月推出的面向WEB應用程序開發(fā)的技術框架,但它不是程序設計語言,也不是開發(fā)工具。簡單地,ASP主要是由“<%”和“%>”掛起來的代碼嵌入到HTML中的一種技術。這些代碼是在服務器端執(zhí)行,執(zhí)行時無需編譯,可以用任何的文本編輯器編寫(如記事本等)。此外,ASP可以通過內(nèi)置的組件實現(xiàn)更強大的功能,如使用ADO可以輕松地訪問數(shù)據(jù)庫。ASP.NET則是從HTML發(fā)展到ASP,然后伴隨著微軟的.NET技術的推出而出現(xiàn)的。ASP.NET不是ASP的簡單升級,而是全新一代的動態(tài)網(wǎng)頁開發(fā)系統(tǒng),用于在一臺Web服務器上建立強大的應用程序。它是Microsoft.NET技術的一個組成部分,是ASP和.NET技術結(jié)合的產(chǎn)物。在MicrosoftVisualStudio2005/2008中,利用.NET提供的控件,可快速開發(fā)ASP.NET應用程序,大大簡化了編碼的過程。3.2關于ASP.NET3.1.1創(chuàng)建ASP.NET應用程序相對ASP而言,ASP.NET具有的主要優(yōu)勢包括:實現(xiàn)界面和代碼的分開編譯執(zhí)行使用強類型(strongly-type)編程語言3.2關于ASP.NET3.1.1創(chuàng)建ASP.NET應用程序ASP.NET主要包括兩種編程模型:WebForm:提供了建立功能強大、外觀豐富的基于表單(Form)的可編程Web頁面,這幾乎與VB.NET、C#.NET的窗體開發(fā)界面是一樣的WebService
:通過對HTTP、XML、SOAP、WSDL等Internet標準的支持提供在異構網(wǎng)絡環(huán)境下獲取遠程服務、連接遠程設備、交互遠程應用的編程界面ASP.NET提供了大量的控件,當用戶將控件拖到Web窗體設計界面時,會自動生成相應的HTML代碼和C#代碼。這為Web應用程序的可視化界面設計提供極大的便利,避免了使用HTML標記語言編寫大量代碼的麻煩。ASP.NET控件主要分為兩大類:Web窗體控件和HTML控件:3.3ASP.NET控件和對象3.3.1ASP.NET控件對于Web窗體控件和HTML控件,需要注意以下幾點:
(1)Web窗體控件是服務器端控件,即它們在服務器端運行,因此不要求客戶端瀏覽器支持Web窗體控件(如不要求安裝.NETFramework等),我們在瀏覽器看到的只是這些控件運行后輸出的結(jié)果;HTML控件是客戶端控件,只有瀏覽器支持這些控件,它們才能運行。(2)Web窗體控件是以C#
為腳本語言,其功能十分強大。HTML控件則以javascript等為腳本語言,其功能較前者弱得多。(3)在設計界面上,當雙擊Web窗體控件時,會自動在.cs文件中形成并打開控件的Click事件處理函數(shù)(C#語言),以供用戶編寫代碼;當雙擊HTML控件時,則會自動在.aspx文件中形成并打開控件的onclick事件處理函數(shù)(javascript語言)。3.3ASP.NET控件和對象3.3.1ASP.NET控件【例11.2】使用ASP.NET控件實現(xiàn)頁面之間傳遞數(shù)據(jù)的ASP.NET應用程序。本例介紹如何使用QueryString來解決這個問題。3.3ASP.NET控件和對象3.3.1ASP.NET控件(1)在VS2008中創(chuàng)建一個ASP.NET應用程序testWebControlApp。(2)添加一個Web頁,方法是:選擇“項目”|“添加新項”,在打開的“添加新項”對話框中選擇“Web窗體”。(3)在視圖設計器中打開文件Default.aspx的設計界面,然后在其設計界面中分別添加2個Label控件、2個TextBox控件和1個Button控件,并在屬性編輯器中修改Label和Button控件的Text屬性、將TextBox控件的ID分別改為username和password,還將后一個TextBox控件的TextModel屬性值設置為password,以將框作為密碼輸入框。設計界面如下:(4)在視圖設計器中打開文件WebForm1.aspx的設計界面,在設計界面中直接添加2個Label控件即可,它們的ID自動被設置為Label1和Label2。(5)在文件Default.aspx的設計界面中,雙擊【登錄】按鈕,在產(chǎn)生的Click事件處理函數(shù)中添加如下代碼:
stringdataStr;dataStr="WebForm1.aspx?username="+username.Text+"&password="+password.Text;Response.Redirect(dataStr);(6)在文件WebForm1.aspx的設計界面中,雙擊任意一個空白處,將自動產(chǎn)生Page_Load函數(shù),在該函數(shù)中添加下列代碼:Label1.Text=Request.QueryString["username"];Label2.Text=Request.QueryString["password"];3.3ASP.NET控件和對象3.3.1ASP.NET控件(7)運行文件Default.aspx,在文本框中輸入用戶名和密碼。然后單擊【登錄】按鈕,結(jié)果輸入的用戶名和密碼被傳送到文件WebForm1.aspx對應的頁面中。3.3ASP.NET控件和對象3.3.1ASP.NET控件——從運行結(jié)果可以看到,Default.aspx頁面中的數(shù)據(jù)已經(jīng)成功傳送到WebForm1.aspx頁面中。1.Response對象系統(tǒng)根據(jù)用戶的請求(打開一個頁面)自動創(chuàng)建一個Response對象。該對象用于向客戶端傳遞或輸出相關的信息,這些信息包括用戶定義的內(nèi)容、內(nèi)容的報頭、服務器的狀態(tài)等。其常用的屬性和方法包括:Buffer屬性該屬性用于設置服務器端是否開啟緩存功能。如果其值為true,表示開啟IIS緩存功能,這時服務器會處理整個頁面后再發(fā)給客戶端,這樣用戶就可以看到連續(xù)的界面,當然這是以犧牲服務器的內(nèi)存資源為代價;如果其值為false,表示不開啟IIS緩存功能,這時服務器會一邊處理一邊發(fā)送,這時用戶看到的界面可能是間斷的。Expires屬性該屬性的值表示頁面的有效期,單位為分鐘。如果用戶請求其有效期滿之前的相同頁面,將直接讀取顯示緩沖區(qū)中的內(nèi)容,這個有效期間過后,頁面將不再保留緩沖區(qū)中的內(nèi)容。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象Write()方法該方法用于向客戶端輸出指定的內(nèi)容,由客戶端解釋執(zhí)行。例如:Response.Write("今天的日期時間:");Response.Write(DateTime.Now.ToString());Redirect()方法該方法用于重定向到指定的URL。例如:Response.Redirect("/");//重定向到“搜狐”主頁Response.Redirect("WebForm1.aspx");//重定向到WebForm1.aspx頁面也可以在重定向的同時傳遞一些數(shù)據(jù),例如,下列語句在重定向到WebForm1.aspx頁面的同時傳遞字符串“abc”:Response.Redirect("WebForm1.aspx?strname="+"abc");3.3ASP.NET控件和對象3.3.2ASP.NE常用對象AddHeade()方法增加HTTP頭的集合中的元素。如:Response.AddHeader("headname","headvalue");Clear()方法該方法用于清空IIS緩沖區(qū)中的內(nèi)容(Response.Buffer為True時)。Flush()方法執(zhí)行該方法時,將IIS緩沖區(qū)中的內(nèi)容發(fā)給客戶端(Response.Buffer為True時),對客戶端來說,其作用就是刷新網(wǎng)頁。End()方法當程序執(zhí)行到該方法時,將終止腳本的處理,起到終止程序繼續(xù)運行的作用。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象2.Request對象當客戶端瀏覽器向ASP.NET服務器端程序發(fā)出請求時,服務器端程序?qū)⑨槍φ埱蟮拇饝畔⒎庋b在Request對象中,客戶端通過調(diào)用Request對象的屬性和方法可以獲取想要的信息。Request對象的常用屬性和方法包括:ApplicationPath屬性返回服務器上ASP.NET應用程序的虛擬根路徑(string類型)。Path屬性返回當前請求頁的虛擬路徑(包含請求頁對應的
.aspx文件名)。PhysicalPath屬性返回與請求的URL相對應的物理文件系統(tǒng)的絕對路徑(包含請求頁對應的
.aspx文件名)。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象PhysicalApplicationPath屬性返回當前正在執(zhí)行的服務器應用程序的根目錄在物理文件系統(tǒng)中的絕對路徑。ContentLength屬性返回所獲得內(nèi)容的長度。ContentEncoding屬性返回所獲得內(nèi)容的編碼方式。ContentType屬性返回所獲得內(nèi)容的類型。Headers屬性返回HTTP頭的集合。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象HttpMethod屬性返回客戶端使用的HTTP數(shù)據(jù)傳輸?shù)姆椒?,如GET、POST或HEAD。Url屬性返回當前請求的URL。Browser屬性這個屬性返回瀏覽器的有關信息,這些信息十分豐富,包括瀏覽器是否支持ActiveX控件、是否為測試版、瀏覽器的名稱和版本號等信息。UserHostAddress屬性返回客戶機的IP地址(string類型)。利用這個屬性可以拒絕惡意用戶的訪問。UserHostName屬性返回客戶機的DNS名稱。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象QueryString屬性該屬性返回URL所帶的附加信息項的集合,集合的類型為System.Collections.Specialized.NameValueCollection,通常用于實現(xiàn)頁面之間的數(shù)據(jù)傳遞。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象例如,下面語句重定向到WebForm1.aspx頁面,同時傳遞三個信息項:Response.Redirect("WebForm1.aspx?s1=str1&s2=str2&s3=str3");在WebForm1.aspx頁面中可以用下面三條語句分別獲取這三項信息:strings;s=Request.QueryString["s1"];//結(jié)果s="str1"s=Request.QueryString["s2"];//結(jié)果s="str2"s=Request.QueryString["s3"];//結(jié)果s="str3"當然,也可以通過下標訪問集合中的元素來獲取信息項:strings;System.Collections.Specialized.NameValueCollectionstrs=Request.QueryString;for(inti=0;i<strs.Count;i++){s=strs[i];}顯然,QueryString屬性通常與Response對象的Redirect屬性搭配使用。實際上,例11.2中的程序testWebControlApp已經(jīng)使用過這兩個屬性來實現(xiàn)頁面之間的數(shù)據(jù)傳遞。用Request對象獲取表單傳遞值使用Request對象的Form屬性獲取表單傳遞的信息,一般格式為:
Request.Form("表單元素名")
通過POST方式發(fā)送的數(shù)據(jù)不會顯示在URL中,因此POST發(fā)送數(shù)據(jù)會比GET發(fā)送安全。用Request對象獲取服務器變量值當用戶向服務器請求信息或者服務器對用戶的請求做出應答時,他們的信息都包含在HTTPHeader(HTTP頭)中。HTTP頭提供了有關請求和響應的附加信息,同時還包括瀏覽器生成請求和服務器做出響應的過程信息。通過Request對象的ServerVariables屬性,可以獲得當前環(huán)境的這些信息。ServerVariables屬性該屬性是一個string類型對象的集合,它保存了服務器的有關信息。3.3ASP.NET控件和對象3.3.2ASP.NE常用對象例如,我們可以用下列語句輸出該屬性包含的所有有關服務器的信息:for(inti=0;i<Request.ServerVariables.Count;i++){Response.Write((i+1).ToString()+":"+Request.ServerVariables[i].ToString()+"<br>");}一般情況下是通過對象的名稱來訪問ServerVariables屬性中有關服務器的信息。常用的包括:Request.ServerVariables["Local_Addr"] //返回服務器的IPRequest.ServerVariables["Path_Info"]//返回被請求頁的虛擬路徑Request.ServerVariables["Path_Translated"]//返回被請求頁的絕對路徑Request.ServerVariables["Server_Name"]//返回服務器的名稱Request.ServerVariables["Server_Port"] //返回服務器所使用的端口Request.ServerVariables["Url"]//返回請求頁的URL地址Request.ServerVariables[“REMOTE_ADDR”]//返回請求者的IP地址3.Server對象Server對象封裝了服務器的相關信息,利用該對象提供的方法可以獲取這些信息。MapPath()方法返回與Web服務器上的指定虛擬路徑相對應的物理文件路徑,如Server.MapPath(“\\WebForm1.aspx”)返回“D:\VS2008\第11章\test1\test1\WebForm1.aspx”。Transfer()方法該方法與Response對象的Redirect()方法具有相同調(diào)用方法。例如,下面兩個語句的作用是一樣的:Response.Redirect("WebForm1.aspx?s1=str1&s2=str2");Server.Transfer("WebForm1.aspx?s1=str1&s2=str2");3.3ASP.NET控件和對象3.3.2ASP.NE常用對象Transfer與Redirect的區(qū)別:
Server.Transfer方法把執(zhí)行流程從當前的ASPX文件轉(zhuǎn)到同一服務器上的另一個ASPX頁面。調(diào)用Server.Transfer時,當前的ASPX頁面終止執(zhí)行,執(zhí)行流程轉(zhuǎn)入另一個ASPX頁面,但新的ASPX頁面仍使用前一ASPX頁面創(chuàng)建的應答流。用Server.Transfer方法實現(xiàn)頁面之間的導航,瀏覽器中的URL不會改變,因為重定向完全在服務器端進行,瀏覽器根本不知道服務器已經(jīng)執(zhí)行了一次頁面變換。Response.Redirect則是客戶端第一次請求服務器返回狀態(tài)代碼302及新URL,客戶端再次請求新URL,服務器再返回新頁面,比Server.Transfer多一次應答。注意使用方式Post表單請求表單不runat=“server”通過提交按鈕自動切換到Action對應的目標頁面目標頁可以用Request.Form的形式訪問請求信息例(classexamples\1-1)非Post表單-Web窗體表單Runat=“server”,無提交按鈕Request.QueryStringServer.TransferWeb窗體表單傳遞數(shù)據(jù)Request.QueryString形式
把表單各個元素的名字和值形成QueryString里的參數(shù)例(classexamples\1-2)Server.Transfer例(classexamples\1-3)HtmlEncode()方法對給定的字符串進行HTML編碼,使得瀏覽器不再按照HTML語法對其進行解釋,而是原樣輸出。例如,對于下面的兩條語句:
Response.Write("<h1>中國人</h1>"+"<br>");Response.Write(Server.HtmlEncode("<h1>中國人</h1>")+"<br>");3.3ASP.NET控件和對象3.3.2ASP.NE常用對象——因此,如果想將HTML語法中的代碼在瀏覽器輸出,就需要使用HtmlEncode()方法。Global.asaxGlobal.asax文件(也稱為ASP.NET應用程序文件)是一個可選的文件,該文件包含響應ASP.NET或HTTP模塊所引發(fā)的應用程序級別和會話級別事件的代碼。Global.asax文件駐留在ASP.NET應用程序的根目錄中。運行時,分析Global.asax并將其編譯到一個動態(tài)生成的.NETFramework類,該類是從HttpApplication基類派生的。配置ASP.NET,以便自動拒絕對Global.asax文件的任何直接的URL請求;外部用戶不能下載或查看其中的代碼。Global.asax文件是可選的。只在希望處理應用程序事件或會話事件時,才應創(chuàng)建它。3.3.2Application對象利用Application對象存取變量創(chuàng)建Application對象同步和互斥Application的事件和Global.asax2022年10月18日第37頁利用Application對象存取變量Application對象可以存取變量,并且這些變量可以被多個用戶共享。對Application對象的變量賦值的格式為:
Application[變量名]=值引用變量的值用Application(變量名)就可以了。2022年10月18日第38頁同步和互斥在頁面共享變量時也引發(fā)一個問題,那就是各個頁面都可以修改共享變量的值。為了避免這種沖突出現(xiàn),Application對象提供了Lock方法解決這樣的問題。其語句如下:
Application.Lock
在這個語句之后,Application對象變量的值只能由一個用戶改動,這樣就避免了多個用戶同時改變一個變量值的情況。當用戶改動結(jié)束后,應該允許其他用戶改動該變量,這就要求解除對變量值的鎖定。語句如下:
Application.UnLock2022年10月18日第39頁Application的事件和Global.asaxApplication擁有自己的事件和生命周期,當Application開始啟動時,會觸發(fā)Application_Start事件;當Application終止時或者webconfig被修改保存時,會觸發(fā)Application_End事件。這兩個事件代碼都存放在Global.asax文件中。Global.asax文件中主要定義了8個主要事件:Application_Start、Session_Start、Application_BeginRequest、Application_EndRequest、Application_AuthenticateRequest、Application_Error、Session_End和Application_End。2022年10月18日第40頁Session對象利用Session對象存取變量Session的唯一性和Session的終止Session事件2022年10月18日第41頁利用Session對象存取變量與Application對象一樣,Session對象也可以存取變量,但它和Application對象在存儲信息所使用的對象是完全不同的。Application對象存儲的是共享信息,而Session對象存儲的信息是局部的,它只是針對某個特定的用戶。2022年10月18日第42頁Session對象3.3ASP.NET控件和對象3.3.2ASP.NE常用對象例如,下面兩條語句的作用是將字符串“Petter”和“C_sharp”依次添加到Session對象中:
Session[“username”]=“Petter”;
//Session.Add(“username”,”peter”);Session["userpass"]="C_sharp";這兩個字符串在Session中的“名稱”分別為username和userpass,通過它們的名稱即可訪問相應的數(shù)據(jù)和對象。例如,對于下列語句:
Response.Write(Session["username"]+"<br>");Response.Write(Session["userpass"]+"<br>");執(zhí)行后將輸出:PetterC_sharp當然,也可以通過下標來訪問Session對象中的數(shù)據(jù):Response.Write(Session[0]+"<br>");Response.Write(Session[1]+"<br>");語句輸出Session對象中的所有數(shù)據(jù):
for(inti=0;i<Session.Count;i++){Response.Write(Session[i]+"<br>");}Session事件與Application對象相同,Session對象也擁有自己的事件。正如在介紹關于Global.asax文件內(nèi)容時所見到的,Session對象擁有Start和End事件,他們都存在于文件Global.asax中。當一個Session對象被創(chuàng)建時,觸發(fā)Session_Start事件;當一個Session對象被終止時,觸發(fā)Session_End事件。利用這兩個事件可以處理一些有用的事情,如用戶信息初始化等等。2022年10月18日第44頁Session的方法Abandon()方法刪除存儲在session對象中的所有會話變量并釋放它們占用的服務器資源,所以要慎重使用不過在當前頁中所有腳本命令都處理完后,對象才會被真正刪除。在SessionState=“proc”的設置下,會觸發(fā)Session_End事件Clear()或Remove()方法Session.Clear只是清除Session中的所有數(shù)據(jù)并不會中止該Session,因此也不會觸發(fā)Session_EndSessionWeb.config<sessionState>節(jié)的定義TimeoutCookieless4.Session對象和Application對象3.3ASP.NET控件和對象3.3.2ASP.NE常用對象共同點:都是用于在服務器端保存數(shù)據(jù)和對象,它們都是object類型的數(shù)組,使用方法相同,可以通過對象名或下標引用其中的對象。通常用于保存用戶信息、實現(xiàn)網(wǎng)站訪問計數(shù)等功能。不同點:它們的作用范圍不同,Session對象的作用范圍是一次會話期內(nèi)),只為一個用戶所擁有;Application對象的作用范圍則是Web服務器的一次生存期(從啟動服務器到關閉服務器這個時間段),可為所有用戶共享。Application和Session的聯(lián)合使用網(wǎng)站訪問計數(shù)器網(wǎng)站在線人數(shù)(例子aspnet1-4)Global.asaxWebconfig的修改<sessionStatemode="InProc"timeout="1"></sessionState>Application和Session的聯(lián)合使用2提高:加入文件的處理stringcountfile=Server.MapPath("count.txt");StreamReadersrd;srd=File.OpenText(countfile);intcount=0;while(srd.Peek()!=-1){stringstr=srd.ReadLine();count=int.Parse(str);
}srd.Close();Application["count"]=count;提高:加入文件的處理intcount=0;count=(int)Application["count"];stringfile_path=Server.MapPath("count.txt");StreamWritersrw=newStreamWriter(file_path,false);srw.WriteLine(count);srw.Close();Session的特殊應用場合用戶登錄界面,每個頁面都要判斷用戶名是否為空演示無判斷的狀況增加一個公共判斷類publicclassvalidatePage:System.Web.UI.Page
{protectedoverridevoidOnInit(EventArgse)
{if(Session["valid"]==null||Session["valid"].ToString().CompareTo(Session.SessionID)!=0)
{Response.Write("error");Response.End();
}
}//protectedoverridevoidOnLoad(EventArgse)
//{//if(Session["valid"]==null||Session["valid"].ToString().CompareTo(Session.SessionID)!=0)
//{//Response.Write("error");//Response.End();
//}
//}
}publicpartialclassrequestform:validatePage
{注意不要重載OnLoad方法,會讓子類的Page_Load事件失效重載OnInit方法CookieCookie是一種能夠讓網(wǎng)站服務器把少量數(shù)據(jù)存儲到客戶端的硬盤或內(nèi)存。并且讀可以取出來的一種技術。Cookie是一段文本信息,在客戶端存儲Cookie是ASP.NET的會話狀態(tài)將請求與會話關聯(lián)的方法之一。Cookie也可以直接用于在請求之間保持數(shù)據(jù),但數(shù)據(jù)隨后將存儲在客戶端并隨每個請求一起發(fā)送到服務器。瀏覽器對Cookie的大小有限制,因此,只有不超過4096字節(jié)才能保證被接受。
Cookie查看CookieSessionID默認是用Cookie來存儲的,試一試修改webconfig如下所示:
<sessionStatemode="InProc"timeout="1"cookieless="true"></sessionState>創(chuàng)建cookie//方式1:
Response.Cookies["username"].value="mike";
Response.Cookies["username"].Expires=DateTime.MaxValue;
//方式2:
HttpCookieacookie=newHttpCookie(“username");
acookie.Value=“mike";
acookie.Expires=DateTime.MaxValue;//cookie.Expires=System.DateTime.Now.AddDays(1);//設置過期時間1天
Response.Cookies.Add(acookie);
創(chuàng)建cookie-子鍵(多值)//方式1:
Response.Cookies["userinfo1"]["name"].value="mike";
Response.Cookies["userinfo1"][“gender"].value=“m";
Response.Cookies["userinfo1"].Expires=DateTime.MaxValue;
//方式2:
HttpCookiecookie=newHttpCookie("userinfo1");
cookie.Values["name"]="mike";
cookie.Values[“gender"]=“m“;
cookie.Expires=DateTime.Now.AddDays(1);
//設置過期時間1天
Response.Cookies.Add(cookie);
CookieC:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies上面是2個單值Cookie下面是1個多值Cookie讀取CookieInternetExplorer將站點的Cookie保存在文件名格式為<user>@<domain>.txt的文件中,其中<user>是您的帳戶名。注意:在獲取Cookie的值之前,應該確保該Cookie確實存在。否則,您將得到一個異常
If(Request.Cookies["userName"]!=null)
{
stringstr=Request.Cookies("userName").Value;
}
讀取Cookie-子鍵(多值)//多值Cookie的讀取
If(Request.Cookies["userInfo1"]!=null)
{
stringname=Request.Cookies["userInfo1"]["name"];
stringlast=Request.Cookies["userInfo1"][“gender"];
}
注意創(chuàng)建依賴于Reponse對象讀取依賴于Request對象讀取Cookie集合for(inti=0;i<Request.Cookies.Count;i++){HttpCookiecookie=Request.Cookies[i];Response.Write("name="+cookie.Name+"<br/>");if(cookie.HasKeys)//是否有子鍵
{System.Collections.Specialized.NameValueCollectionNameColl=cookie.Values;for(intj=0;j<NameColl.Count;j++){Response.Write("子鍵名="+NameColl.AllKeys[j]+"<br/>");Response.Write("子鍵值="+NameColl[j]+"<br/>");
}
}else
{Response.Write("value="+cookie.Value+"<br/>");
}}Aspnet1-6/webformreadcookies銷毀Cookie沒有權限刪除客戶端文件設置過期日期
正確的寫法
ArrayListcookiesnames=newArrayList();for(inti=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- web項目驗收合同樣本
- 分包木工材料合同標準文本
- 農(nóng)村銷售板材合同樣本
- 企業(yè)委托采購合同樣本
- 上海中介合同樣本
- 信息維護勞務合同樣本
- 農(nóng)村房子修建合同范例
- 農(nóng)村種菜合同樣本
- 出口茶葉合同樣本
- 養(yǎng)牛雇工合同標準文本
- 自行車發(fā)展歷史
- 《基礎寫作教程》 課件全套 第1-11章 基礎寫作概論- 理論文體
- 護士如何處理患者的不合理訴求和抱怨
- 石油化工項目可行性研究報告編制規(guī)定
- 液壓式隨鉆震擊器設計
- 廣東省義務教育學生畢(結(jié)、肄)業(yè)鑒定表
- 人教部編版六年級下冊語文【選擇題】專項復習訓練真題100題(附答案解析)
- H3C新員工文化培訓報到指引(201607期)
- 《輔酶q10》教學講解課件
- 第十章痰液檢查課件
- 《融媒體實務》教學課件(全)
評論
0/150
提交評論