HTTP請(qǐng)求,響應(yīng)及狀態(tài)管理_第1頁(yè)
HTTP請(qǐng)求,響應(yīng)及狀態(tài)管理_第2頁(yè)
HTTP請(qǐng)求,響應(yīng)及狀態(tài)管理_第3頁(yè)
HTTP請(qǐng)求,響應(yīng)及狀態(tài)管理_第4頁(yè)
HTTP請(qǐng)求,響應(yīng)及狀態(tài)管理_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Web開(kāi)發(fā)技術(shù)1第第6章章 HTTP請(qǐng)求、響應(yīng)及狀態(tài)管理請(qǐng)求、響應(yīng)及狀態(tài)管理(P133)客戶端與服務(wù)器交互過(guò)程中狀態(tài)信息的獲取,頁(yè)面客戶端與服務(wù)器交互過(guò)程中狀態(tài)信息的獲取,頁(yè)面之間的數(shù)據(jù)傳遞,狀態(tài)變量的應(yīng)用與保存等。之間的數(shù)據(jù)傳遞,狀態(tài)變量的應(yīng)用與保存等。Web開(kāi)發(fā)技術(shù)2本章要點(diǎn):本章要點(diǎn): 掌握掌握HttpRequest對(duì)象的應(yīng)用對(duì)象的應(yīng)用 掌握掌握HttpResponse對(duì)象的應(yīng)用對(duì)象的應(yīng)用 掌握掌握HttpServerUtility對(duì)象的應(yīng)用,理解對(duì)象的應(yīng)用,理解不同方法的頁(yè)面重定向不同方法的頁(yè)面重定向 掌握跨頁(yè)面提交的應(yīng)用。了解掌握跨頁(yè)面提交的應(yīng)用。了解ViewState、Cookie

2、 ,掌握,掌握Session、Application應(yīng)用。應(yīng)用。Web開(kāi)發(fā)技術(shù)3目錄目錄 6.1 HTTP請(qǐng)求請(qǐng)求 6.2 HTTP響應(yīng)響應(yīng) 6.3 HttpServerUtility 6.4 跨網(wǎng)頁(yè)提交跨網(wǎng)頁(yè)提交 6.5 狀態(tài)管理狀態(tài)管理 6.6 小結(jié)小結(jié)Web開(kāi)發(fā)技術(shù)46.1 HTTP請(qǐng)求請(qǐng)求 Page類的屬性類的屬性Request是一個(gè)是一個(gè)HttpRequest對(duì)象,它封裝了對(duì)象,它封裝了HTTP請(qǐng)求信息。請(qǐng)求信息。 ASP.NET通過(guò)通過(guò)Request對(duì)象能夠獲取客戶對(duì)象能夠獲取客戶端和服務(wù)器的信息,如訪問(wèn)客戶端的瀏覽端和服務(wù)器的信息,如訪問(wèn)客戶端的瀏覽器信息、查詢字符串、器信息、查

3、詢字符串、Cookie等信息。等信息。Web開(kāi)發(fā)技術(shù)5 查詢字符串是指跟在查詢字符串是指跟在URL后面的變量及值,后面的變量及值,以以“?”與與URL間隔,不同的變量之間以間隔,不同的變量之間以“&”間隔。間隔。 可以實(shí)現(xiàn)不同頁(yè)面之間的數(shù)據(jù)可以實(shí)現(xiàn)不同頁(yè)面之間的數(shù)據(jù)傳遞。傳遞。 Cookie:中文名稱為小型文字檔案或小甜餅,中文名稱為小型文字檔案或小甜餅,指某些網(wǎng)站為了辨別用戶身份而儲(chǔ)存在用指某些網(wǎng)站為了辨別用戶身份而儲(chǔ)存在用戶本地終端(戶本地終端(Client Side)上的數(shù)據(jù)(通常)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。經(jīng)過(guò)加密)。Web開(kāi)發(fā)技術(shù)6HttpRequest對(duì)象對(duì)應(yīng)的數(shù)據(jù)集合對(duì)象

4、對(duì)應(yīng)的數(shù)據(jù)集合(屬性屬性)Web開(kāi)發(fā)技術(shù)7實(shí)例實(shí)例6-1 QueryString的使用的使用 當(dāng)單擊當(dāng)單擊QueryString1.aspx頁(yè)面上鏈接后,頁(yè)頁(yè)面上鏈接后,頁(yè)面重定向到面重定向到QueryString2.aspx;在頁(yè)面;在頁(yè)面 QueryString2.aspx中顯示從中顯示從QueryString1.aspx傳遞過(guò)來(lái)的查詢字符串?dāng)?shù)據(jù)信息。傳遞過(guò)來(lái)的查詢字符串?dāng)?shù)據(jù)信息。 源程序:源程序:QueryString1.aspx (P133) 源程序:源程序:QueryString2.aspx Web開(kāi)發(fā)技術(shù)8源程序:源程序: QueryString1.aspx 傳遞查詢字符串到傳遞查

5、詢字符串到QueryString2.aspx 源程序:源程序:QueryString2.aspx QueryString2.aspx.csusing System;public partial class chap6_QueryString2 : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) /獲取從獲取從QueryString1.aspx中傳遞過(guò)來(lái)的查詢字符串值中傳遞過(guò)來(lái)的查詢字符串值 lblMsg.Text = Request.QueryStringusername + ,你的年齡是:你的年齡

6、是: + Request.QueryStringage; Web開(kāi)發(fā)技術(shù)9ServerVariables數(shù)據(jù)集合數(shù)據(jù)集合 可很方便地取得服務(wù)器端或客戶端的環(huán)境變可很方便地取得服務(wù)器端或客戶端的環(huán)境變量信息,如客戶端的量信息,如客戶端的IP地址等。語(yǔ)法格式如地址等。語(yǔ)法格式如下:下:Request.ServerVariables環(huán)境變量名環(huán)境變量名 Web開(kāi)發(fā)技術(shù)10常用的環(huán)境變量表常用的環(huán)境變量表 Web開(kāi)發(fā)技術(shù)11Browser數(shù)據(jù)集合數(shù)據(jù)集合 用于判斷用戶的瀏覽器類型、版本等,以便用于判斷用戶的瀏覽器類型、版本等,以便根據(jù)不同的瀏覽器運(yùn)行不同的網(wǎng)頁(yè)。根據(jù)不同的瀏覽器運(yùn)行不同的網(wǎng)頁(yè)。 語(yǔ)法格

7、式為:語(yǔ)法格式為:Request.Browser瀏覽器特性名瀏覽器特性名。 Web開(kāi)發(fā)技術(shù)12瀏覽器特性名對(duì)應(yīng)表瀏覽器特性名對(duì)應(yīng)表 Web開(kāi)發(fā)技術(shù)13實(shí)例實(shí)例6-2 ServerVariables和和Browser應(yīng)用應(yīng)用 界面顯示信息為界面顯示信息為ServerVariables和和Brower數(shù)據(jù)集數(shù)據(jù)集合中相應(yīng)值。合中相應(yīng)值。 源程序:源程序:Request.aspx (P134) asp:Label ID=lblMsg runat=server Request.aspx.csusing System;public partial class chap6_Request : System

8、.Web.UI.Page protected void Page_Load(object sender, EventArgs e) lblMsg.Text = 服務(wù)器服務(wù)器IP地址:地址: + Request.ServerVariablesLocal_ADDR + ; lblMsg.Text += 客戶端客戶端IP地址:地址: + Request.ServerVariablesRemote_ADDR + ; lblMsg.Text += 瀏覽器類型:瀏覽器類型: + Request.BrowserBrowser + ; lblMsg.Text += 瀏覽器版本:瀏覽器版本: + Request

9、.BrowserVersion + ; lblMsg.Text += 是否支持是否支持Cookies: + Request.BrowserCookies; Web開(kāi)發(fā)技術(shù)146.2 HTTP響應(yīng)響應(yīng) ASP.NET通過(guò)通過(guò)Page類的屬性類的屬性Response(即(即HttpResponse類的對(duì)象)可以很好地控制輸類的對(duì)象)可以很好地控制輸出的內(nèi)容和方式,如頁(yè)面重定向、保存出的內(nèi)容和方式,如頁(yè)面重定向、保存Cookie等。等。Web開(kāi)發(fā)技術(shù)15HttpResponse對(duì)象的常用屬性和方法對(duì)象的常用屬性和方法 Web開(kāi)發(fā)技術(shù)16實(shí)例實(shí)例6-3 Write()方法應(yīng)用方法應(yīng)用 利用利用Writ

10、e()方法除可以輸出提示信息、變量值外,方法除可以輸出提示信息、變量值外,也可以輸出也可以輸出XHTML文本或文本或JavaScript腳本。腳本。 源程序:源程序:Write.aspx (P136)實(shí)例實(shí)例6-4 Redirect()方法應(yīng)用方法應(yīng)用 選擇選擇“教師教師”后,頁(yè)面重定向到教師頁(yè)面后,頁(yè)面重定向到教師頁(yè)面Teacher.aspx,選擇選擇“學(xué)生學(xué)生”后頁(yè)面重定向到學(xué)生頁(yè)面后頁(yè)面重定向到學(xué)生頁(yè)面Student.aspx。 源程序:源程序:Redirect.aspx (P137) 源程序:源程序:Teacher.aspx (P138)using System;public part

11、ial class chap6_Write : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) Response.Write(); for (int i = 1; i = 4; i+) Response.Write(我喜歡我喜歡ASP.NET!); Response.Write(); Web開(kāi)發(fā)技術(shù)17實(shí)例實(shí)例6-3 Write()方法應(yīng)用方法應(yīng)用 利用利用Write()方法除可以輸出提示信息、變量值外,方法除可以輸出提示信息、變量值外,也可以輸出也可以輸出XHTML文本或文本或JavaScript

12、腳本。腳本。 源程序:源程序:Write.aspx (P136)實(shí)例實(shí)例6-4 Redirect()方法應(yīng)用方法應(yīng)用 選擇選擇“教師教師”后,頁(yè)面重定向到教師頁(yè)面后,頁(yè)面重定向到教師頁(yè)面Teacher.aspx,選擇選擇“學(xué)生學(xué)生”后頁(yè)面重定向到學(xué)生頁(yè)面后頁(yè)面重定向到學(xué)生頁(yè)面Student.aspx。 源程序:源程序:Redirect.aspx (P137) 源程序:源程序:Teacher.aspx (P138)Web開(kāi)發(fā)技術(shù)18Redirect.aspx.csusing System;public partial class chap6_Redirect : System.Web.UI.Pa

13、ge protected void btnSubmit_Click(object sender, EventArgs e) if (rdoltStatus.SelectedValue = teacher) Response.Redirect(Teacher.aspx?name= + txtName.Text); else Response.Redirect(Student.aspx?name= + txtName.Text); Teacher.aspx.csusing System;public partial class chap6_Teacher : System.Web.UI.Page

14、protected void Page_Load(object sender, EventArgs e) lblMsg.Text = Request.QueryStringname + 老師老師 ,歡迎您!,歡迎您!; Web開(kāi)發(fā)技術(shù)196.3 HttpServerUtility Page類的屬性類的屬性Server(即(即HttpServerUtility類的對(duì)象)封裝了服務(wù)器端的一些操作,類的對(duì)象)封裝了服務(wù)器端的一些操作,如轉(zhuǎn)換如轉(zhuǎn)換XHTML元素標(biāo)志、獲取網(wǎng)頁(yè)的物理元素標(biāo)志、獲取網(wǎng)頁(yè)的物理路徑等。路徑等。 Web開(kāi)發(fā)技術(shù)20Server對(duì)象的常用屬性和方法表對(duì)象的常用屬性和方法表 We

15、b開(kāi)發(fā)技術(shù)21Response.Write(Server.HtmlEncode(This is a dog ) + ); Response.Write( Student.aspx ); Response.Write( Student.aspx) );因使用了因使用了Server.UrlEncode()方法方法,將空格轉(zhuǎn)換為將空格轉(zhuǎn)換為“+”不不再丟失再丟失“張張”后面的信息。后面的信息。Web開(kāi)發(fā)技術(shù)226.4 跨網(wǎng)頁(yè)提交跨網(wǎng)頁(yè)提交 頁(yè)面重定向頁(yè)面重定向(頁(yè)面之間的調(diào)用及數(shù)據(jù)傳遞)頁(yè)面之間的調(diào)用及數(shù)據(jù)傳遞) 在在C#代碼中利用代碼中利用Response.Redirect(URL)、Server

16、.Execute(URL)和和Server.Transfer(URL)方法。方法。 在頁(yè)面中可以采用在頁(yè)面中可以采用元素、元素、HyperLink控件;利用控件;利用Button控件方式也可以實(shí)現(xiàn)跨網(wǎng)頁(yè)提交。控件方式也可以實(shí)現(xiàn)跨網(wǎng)頁(yè)提交。 Web開(kāi)發(fā)技術(shù)23區(qū)分區(qū)分Response.Redirect()、Server.Execute()和和Server.Transfer() Redirect()方法盡管在服務(wù)器端執(zhí)行,但重定向?qū)嶋H發(fā)方法盡管在服務(wù)器端執(zhí)行,但重定向?qū)嶋H發(fā)生在客戶端,可從瀏覽器地址欄中看到地址變化;而生在客戶端,可從瀏覽器地址欄中看到地址變化;而Execute()和和Transf

17、er()方法的重定向?qū)嶋H發(fā)生在服務(wù)器方法的重定向?qū)嶋H發(fā)生在服務(wù)器端,在瀏覽器的地址欄中看不到地址變化。端,在瀏覽器的地址欄中看不到地址變化。 Redirect()和和Transfer()方法執(zhí)行完新網(wǎng)頁(yè)后,并不返回方法執(zhí)行完新網(wǎng)頁(yè)后,并不返回原網(wǎng)頁(yè);而原網(wǎng)頁(yè);而Execute()方法執(zhí)行完新網(wǎng)頁(yè)后會(huì)返回原網(wǎng)頁(yè)方法執(zhí)行完新網(wǎng)頁(yè)后會(huì)返回原網(wǎng)頁(yè)繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。Web開(kāi)發(fā)技術(shù)24(續(xù)) Redirect()方法可重定向到同一網(wǎng)站的不同網(wǎng)頁(yè),也可方法可重定向到同一網(wǎng)站的不同網(wǎng)頁(yè),也可重定向到其它網(wǎng)站的網(wǎng)頁(yè);而重定向到其它網(wǎng)站的網(wǎng)頁(yè);而Execute()和和Transfer()方方法只能重定向到同一網(wǎng)

18、站的不同網(wǎng)頁(yè)。法只能重定向到同一網(wǎng)站的不同網(wǎng)頁(yè)。 利用利用Redirect()方法在不同網(wǎng)頁(yè)之間傳遞數(shù)據(jù)時(shí),采用方法在不同網(wǎng)頁(yè)之間傳遞數(shù)據(jù)時(shí),采用查詢字符串形式;而查詢字符串形式;而Execute()和和Transfer()方法傳遞數(shù)方法傳遞數(shù)據(jù)方式與據(jù)方式與Button按鈕按鈕相同。相同。Web開(kāi)發(fā)技術(shù)25Button控件方式控件方式 在實(shí)現(xiàn)跨網(wǎng)頁(yè)提交時(shí),需要將源網(wǎng)頁(yè)上在實(shí)現(xiàn)跨網(wǎng)頁(yè)提交時(shí),需要將源網(wǎng)頁(yè)上Button控件的屬性控件的屬性PostBackUrl值設(shè)置為目標(biāo)網(wǎng)頁(yè)路值設(shè)置為目標(biāo)網(wǎng)頁(yè)路徑。而徑。而在目標(biāo)頁(yè)上在目標(biāo)頁(yè)上,需要在頁(yè)面頭部添加,需要在頁(yè)面頭部添加PreviousPageTyp

19、e指令,設(shè)置屬性指令,設(shè)置屬性VirtualPath值為源網(wǎng)頁(yè)路徑,如:值為源網(wǎng)頁(yè)路徑,如:Web開(kāi)發(fā)技術(shù)26 從目標(biāo)網(wǎng)頁(yè)訪問(wèn)源網(wǎng)頁(yè)中數(shù)據(jù)的方法從目標(biāo)網(wǎng)頁(yè)訪問(wèn)源網(wǎng)頁(yè)中數(shù)據(jù)的方法1、利用、利用PreviousPage.FindControl(ID)方法訪方法訪問(wèn)源網(wǎng)頁(yè)上的控件;問(wèn)源網(wǎng)頁(yè)上的控件;2、在源網(wǎng)頁(yè)上定義公共屬性,再在目標(biāo)網(wǎng)頁(yè)、在源網(wǎng)頁(yè)上定義公共屬性,再在目標(biāo)網(wǎng)頁(yè)上利用上利用“PreviousPage.屬性名屬性名”獲取源網(wǎng)頁(yè)獲取源網(wǎng)頁(yè)中數(shù)據(jù)。中數(shù)據(jù)。 Button控件方式(續(xù))控件方式(續(xù))Web開(kāi)發(fā)技術(shù)27實(shí)例實(shí)例6-6 跨網(wǎng)頁(yè)提交應(yīng)用跨網(wǎng)頁(yè)提交應(yīng)用 在在Cross1.aspx中輸入

20、中輸入“用戶名、密碼用戶名、密碼”后單擊后單擊“確定確定”,此時(shí)頁(yè),此時(shí)頁(yè)面提交到面提交到Cross2.aspx,在該頁(yè)面中顯示,在該頁(yè)面中顯示Cross1.aspx中輸入的數(shù)中輸入的數(shù)據(jù)信息。據(jù)信息。 源程序:源程序:Cross1.aspx (P141) 源程序:源程序:Cross2.aspx Cross1 中定義公共屬性中定義公共屬性Name,在,在Cross2中利用中利用“PreviousPage. Name”獲取源網(wǎng)頁(yè)中數(shù)據(jù)。獲取源網(wǎng)頁(yè)中數(shù)據(jù)。 利用利用PreviousPage.FindControl()方法訪問(wèn)源網(wǎng)頁(yè)上的控件方法訪問(wèn)源網(wǎng)頁(yè)上的控件Web開(kāi)發(fā)技術(shù)28Cross1.asp

21、xasp:Label ID=“Label1” runat=“server” Text=“用戶名:用戶名:” Cross1.aspx.cspublic partial class chap6_Cross1 : System.Web.UI.Page public string Name /公共屬性公共屬性Name,獲取用戶名文本框中內(nèi)容獲取用戶名文本框中內(nèi)容 get return txtName.Text; Web開(kāi)發(fā)技術(shù)29Cross2.aspx Cross2.aspx.csprotected void Page_Load(object sender, EventArgs e) /判斷是否為判斷

22、是否為Button跨網(wǎng)頁(yè)提交跨網(wǎng)頁(yè)提交 if (PreviousPage.IsCrossPagePostBack=true) /通過(guò)公共屬性獲取值通過(guò)公共屬性獲取值 lblMsg.Text = 用戶名:用戶名: + PreviousPage.Name + ; /先通過(guò)先通過(guò)FindControl()找到源頁(yè)中控件,再利用控件屬性獲找到源頁(yè)中控件,再利用控件屬性獲 取值取值 TextBox txtPassword = (TextBox)PreviousPage.FindControl(txtPassword); lblMsg.Text += 密碼:密碼: + txtPassword.Text;

23、從這個(gè)例子中得到什么啟示?從這個(gè)例子中得到什么啟示?Web開(kāi)發(fā)技術(shù)30Server.Execute() 和和Server.Transfer()方法也是通方法也是通過(guò)過(guò) PreviousPage訪問(wèn)源網(wǎng)頁(yè),如何與訪問(wèn)源網(wǎng)頁(yè),如何與Button區(qū)分?區(qū)分? PreviousPage. IsCrossPagePostBack的值。如的值。如果是果是Button跨網(wǎng)頁(yè)提交,那么屬性跨網(wǎng)頁(yè)提交,那么屬性IsCrossPagePostBack值為值為true;如果是調(diào)用;如果是調(diào)用Server.Execute()或或Server.Tranfer()方法,那方法,那么屬性么屬性IsCrossPagePost

24、Back值為值為false。 Web開(kāi)發(fā)技術(shù)316.5 狀態(tài)管理狀態(tài)管理 客戶端狀態(tài)客戶端狀態(tài)是指網(wǎng)頁(yè)系統(tǒng)的一些信息保留在客戶端計(jì)算是指網(wǎng)頁(yè)系統(tǒng)的一些信息保留在客戶端計(jì)算機(jī)上。機(jī)上。 服務(wù)器端狀態(tài)服務(wù)器端狀態(tài)是指網(wǎng)頁(yè)系統(tǒng)的一些數(shù)據(jù)保存于服務(wù)器。是指網(wǎng)頁(yè)系統(tǒng)的一些數(shù)據(jù)保存于服務(wù)器。 客戶端狀態(tài)由于狀態(tài)數(shù)據(jù)保存在客戶端,所以不消耗服客戶端狀態(tài)由于狀態(tài)數(shù)據(jù)保存在客戶端,所以不消耗服務(wù)器內(nèi)存資源,但容易泄露數(shù)據(jù)信息,安全性較差。務(wù)器內(nèi)存資源,但容易泄露數(shù)據(jù)信息,安全性較差。 服務(wù)器端狀態(tài)將消耗服務(wù)器端內(nèi)存資源,但具有較高的服務(wù)器端狀態(tài)將消耗服務(wù)器端內(nèi)存資源,但具有較高的安全性。安全性。Web開(kāi)發(fā)技術(shù)3

25、2 禁用禁用ViewState:屬性:屬性EnableViewState設(shè)置為設(shè)置為false 。 禁止整個(gè)網(wǎng)頁(yè)的禁止整個(gè)網(wǎng)頁(yè)的ViewState:使用:使用Page指令。指令。1、 客戶端狀態(tài)客戶端狀態(tài)ViewState 又稱為視圖狀態(tài),在瀏覽器中選擇又稱為視圖狀態(tài),在瀏覽器中選擇“查看查看”“源文件源文件”可查看可查看ViewState。 Web開(kāi)發(fā)技術(shù)332、客戶端狀態(tài)客戶端狀態(tài)Cookie 保存到客戶端硬盤(pán)或內(nèi)存中的一小段文本信息,如保存到客戶端硬盤(pán)或內(nèi)存中的一小段文本信息,如站點(diǎn)、客戶、會(huì)話等有關(guān)的信息。站點(diǎn)、客戶、會(huì)話等有關(guān)的信息。 用戶訪問(wèn)不同站點(diǎn)時(shí),各個(gè)站點(diǎn)都可能會(huì)向用戶的用戶

26、訪問(wèn)不同站點(diǎn)時(shí),各個(gè)站點(diǎn)都可能會(huì)向用戶的瀏覽器發(fā)送一個(gè)瀏覽器發(fā)送一個(gè)Cookie,瀏覽器會(huì)分別存儲(chǔ)所有的,瀏覽器會(huì)分別存儲(chǔ)所有的Cookie。 Cookie文本文件存儲(chǔ)于文本文件存儲(chǔ)于“盤(pán)符盤(pán)符: Documents and SettingsCookies”文件夾文件夾 。 ASP.NET提供提供System.Web.HttpCookie類來(lái)處理類來(lái)處理Cookie,常用的屬性是,常用的屬性是Value和和Expires。 可以在客戶端修改可以在客戶端修改Cookie設(shè)置和禁用設(shè)置和禁用Cookie。 Web開(kāi)發(fā)技術(shù)343、服務(wù)器端狀態(tài)服務(wù)器端狀態(tài)Session 又稱會(huì)話狀態(tài),用戶訪問(wèn)網(wǎng)站,就

27、會(huì)產(chǎn)生一個(gè)又稱會(huì)話狀態(tài),用戶訪問(wèn)網(wǎng)站,就會(huì)產(chǎn)生一個(gè)Session對(duì)象,對(duì)象, ASP.NET用一個(gè)唯一的用一個(gè)唯一的120位位Session ID來(lái)標(biāo)識(shí)每一個(gè)會(huì)話。來(lái)標(biāo)識(shí)每一個(gè)會(huì)話。 典型的應(yīng)用有儲(chǔ)存用戶信息、多網(wǎng)頁(yè)間信息傳遞、購(gòu)物車等。典型的應(yīng)用有儲(chǔ)存用戶信息、多網(wǎng)頁(yè)間信息傳遞、購(gòu)物車等。 從用戶開(kāi)始訪問(wèn)網(wǎng)站時(shí)計(jì)時(shí),當(dāng)計(jì)時(shí)達(dá)到會(huì)話設(shè)定時(shí)間并且從用戶開(kāi)始訪問(wèn)網(wǎng)站時(shí)計(jì)時(shí),當(dāng)計(jì)時(shí)達(dá)到會(huì)話設(shè)定時(shí)間并且期間沒(méi)有訪問(wèn)操作時(shí),則會(huì)話自動(dòng)結(jié)束。如果同一個(gè)用戶在期間沒(méi)有訪問(wèn)操作時(shí),則會(huì)話自動(dòng)結(jié)束。如果同一個(gè)用戶在瀏覽期間關(guān)閉瀏覽器后再訪問(wèn)同一個(gè)網(wǎng)頁(yè),服務(wù)器會(huì)為該用瀏覽期間關(guān)閉瀏覽器后再訪問(wèn)同一個(gè)網(wǎng)頁(yè),服務(wù)器會(huì)

28、為該用戶產(chǎn)生新的戶產(chǎn)生新的Session。 Session是是System.Web.HttpSessionState類的實(shí)例,是類的實(shí)例,是Page類的類的屬性。屬性。Web開(kāi)發(fā)技術(shù)35 HttpSessionState常用的屬性、方法和事件表常用的屬性、方法和事件表 Global.asaxGlobal.asax文件在網(wǎng)站所在的目錄中,與首頁(yè)在同一個(gè)文件在網(wǎng)站所在的目錄中,與首頁(yè)在同一個(gè)文件夾。右擊網(wǎng)站文件夾,選擇文件夾。右擊網(wǎng)站文件夾,選擇“添加新項(xiàng)添加新項(xiàng)”,再選擇,再選擇“全局應(yīng)用程序類全局應(yīng)用程序類”,按,按“添加添加”。Web開(kāi)發(fā)技術(shù)36 Session狀態(tài)(變量)的定義與賦值:狀態(tài)

29、(變量)的定義與賦值:Session“Name”=“張林張林”;Session.Contents“Name”=“張林張林”; 注意:注意:Session使用的名稱不區(qū)分大小寫(xiě),因此不要使用的名稱不區(qū)分大小寫(xiě),因此不要用大小寫(xiě)區(qū)分不同變量。用大小寫(xiě)區(qū)分不同變量。 實(shí)例實(shí)例6-8 Session應(yīng)用應(yīng)用 本實(shí)例能保護(hù)某些網(wǎng)頁(yè),如要進(jìn)入本實(shí)例能保護(hù)某些網(wǎng)頁(yè),如要進(jìn)入Session.aspx頁(yè)面,頁(yè)面,則首先要通過(guò)登錄認(rèn)證。則首先要通過(guò)登錄認(rèn)證。 源程序:源程序:Session.aspx (P149)Web開(kāi)發(fā)技術(shù)37 程序說(shuō)明:程序說(shuō)明: 當(dāng)用戶直接訪問(wèn)當(dāng)用戶直接訪問(wèn)Session.aspx時(shí),會(huì)判

30、斷時(shí),會(huì)判斷SessionName狀態(tài)值,若為空則重定向到狀態(tài)值,若為空則重定向到SessionLogin.aspx,否則顯示歡迎信息。,否則顯示歡迎信息。 在在SessionLogin.aspx中用戶登錄成功后,將建立中用戶登錄成功后,將建立Session“Name”狀態(tài)值。此時(shí)要測(cè)試是否存在狀態(tài)值。此時(shí)要測(cè)試是否存在Session“Name”狀態(tài)值,應(yīng)在打開(kāi)狀態(tài)值,應(yīng)在打開(kāi)SessionLogin.aspx頁(yè)面的瀏覽器頁(yè)面的瀏覽器中直接更改地址來(lái)訪中直接更改地址來(lái)訪問(wèn)問(wèn)Session.aspx。繼續(xù)運(yùn)行其它網(wǎng)頁(yè),保持在同一個(gè)繼續(xù)運(yùn)行其它網(wǎng)頁(yè),保持在同一個(gè)會(huì)話期。主要代碼說(shuō)明:會(huì)話期。主要代

31、碼說(shuō)明:Web開(kāi)發(fā)技術(shù)38 / Session.aspx / Session.aspx.cs protected void Page_Load(object sender, EventArgs e) if (SessionName != null) lblMsg.Text = SessionName + ,歡迎您!,歡迎您!; else Response.Redirect(SessionLogin.aspx); Web開(kāi)發(fā)技術(shù)39 / SessionLogin.aspx及及cs代碼代碼 protected void btnSubmit_Click(object sender, EventArg

32、s e) if (txtName.Text = ssg & txtPassword.Text = 111) SessionName = ssg; /response.redirect() Web開(kāi)發(fā)技術(shù)40 / TestSession.aspx及及cs代碼代碼 鏈接一鏈接一 鏈接二鏈接二 鏈接三鏈接三 protected void Page_Load(object sender, EventArgs e) Session“userid” =“Gary111”; / session1.aspx、session2.aspx、session3.aspx cs代碼代碼 protected vo

33、id Page_Load(object sender, EventArgs e) Response.Write(“用戶名為:用戶名為:”+Session“userid”; / 通過(guò)點(diǎn)擊超鏈接通過(guò)點(diǎn)擊超鏈接Session“userid”的值被傳到各個(gè)鏈接頁(yè)面上。的值被傳到各個(gè)鏈接頁(yè)面上。Web開(kāi)發(fā)技術(shù)414、Application(對(duì)象)(對(duì)象)又稱應(yīng)用程序狀態(tài),與應(yīng)用于單個(gè)用戶的又稱應(yīng)用程序狀態(tài),與應(yīng)用于單個(gè)用戶的Session狀態(tài)不同,它應(yīng)用于所有的用戶。狀態(tài)不同,它應(yīng)用于所有的用戶。 在網(wǎng)站運(yùn)行時(shí)存在,網(wǎng)站關(guān)閉時(shí)將被釋放在網(wǎng)站運(yùn)行時(shí)存在,網(wǎng)站關(guān)閉時(shí)將被釋放。因此,如果需要將狀態(tài)數(shù)據(jù)保存下來(lái)

34、,則適因此,如果需要將狀態(tài)數(shù)據(jù)保存下來(lái),則適宜保存在數(shù)據(jù)庫(kù)中。宜保存在數(shù)據(jù)庫(kù)中。 是是System.Web.HttpApplicationState類的實(shí)類的實(shí)例。例。 Web開(kāi)發(fā)技術(shù)42 ApplicationApplication是面對(duì)所有用戶的,當(dāng)要修改是面對(duì)所有用戶的,當(dāng)要修改ApplicationApplication狀態(tài)值時(shí),首先要調(diào)用狀態(tài)值時(shí),首先要調(diào)用Application.Lock()Application.Lock()方法鎖定,值修改后再調(diào)用方法鎖定,值修改后再調(diào)用Application.UnLock()Application.UnLock()方法解除鎖定。方法解除鎖定。

35、Application.Lock();Application.Lock(); ApplicationCountApplicationCount = (int)ApplicationCount + 1; = (int)ApplicationCount + 1; Application.UnLock(); Application.UnLock(); 與與ApplicationApplication相關(guān)的事件主要有相關(guān)的事件主要有Application_StartApplication_Start、Application_EndApplication_End與與SessionSession類類似,這

36、些事件代碼都存放于似,這些事件代碼都存放于Global.asaxGlobal.asax文件中。文件中。 Web開(kāi)發(fā)技術(shù)43實(shí)例實(shí)例6-9 統(tǒng)計(jì)網(wǎng)站在線人數(shù)統(tǒng)計(jì)網(wǎng)站在線人數(shù) 頁(yè)面呈現(xiàn)網(wǎng)站在線人數(shù)。需考慮頁(yè)面呈現(xiàn)網(wǎng)站在線人數(shù)。需考慮3個(gè)方面:初始化計(jì)個(gè)方面:初始化計(jì)數(shù)器;當(dāng)一個(gè)用戶訪問(wèn)網(wǎng)站時(shí),計(jì)數(shù)器增數(shù)器;當(dāng)一個(gè)用戶訪問(wèn)網(wǎng)站時(shí),計(jì)數(shù)器增1;當(dāng)一個(gè);當(dāng)一個(gè)用戶離開(kāi)網(wǎng)站時(shí),計(jì)數(shù)器減用戶離開(kāi)網(wǎng)站時(shí),計(jì)數(shù)器減1。 初始化計(jì)數(shù)器要利用初始化計(jì)數(shù)器要利用Application_Start事件,并在事事件,并在事件代碼中定義件代碼中定義Application狀態(tài)。用戶訪問(wèn)網(wǎng)站時(shí)增狀態(tài)。用戶訪問(wèn)網(wǎng)站時(shí)增加計(jì)數(shù)要利用加計(jì)數(shù)要利用Session_Start事件,并在事件代碼中增事件,并在事件代碼中增加加Application狀態(tài)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論