第5章Web應(yīng)用的狀態(tài)管理_第1頁
第5章Web應(yīng)用的狀態(tài)管理_第2頁
第5章Web應(yīng)用的狀態(tài)管理_第3頁
第5章Web應(yīng)用的狀態(tài)管理_第4頁
第5章Web應(yīng)用的狀態(tài)管理_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第5章章web應(yīng)用的狀態(tài)管理應(yīng)用的狀態(tài)管理內(nèi)容vweb應(yīng)用狀態(tài)概述應(yīng)用狀態(tài)概述v客戶端狀態(tài)維護(hù)技術(shù)客戶端狀態(tài)維護(hù)技術(shù)v服務(wù)器端狀態(tài)維護(hù)技術(shù)服務(wù)器端狀態(tài)維護(hù)技術(shù)http協(xié)議“無狀態(tài)的協(xié)議”vweb服務(wù)器每分鐘對上千個(gè)用戶進(jìn)行管理的一種服務(wù)器每分鐘對上千個(gè)用戶進(jìn)行管理的一種方式就是執(zhí)行所謂的方式就是執(zhí)行所謂的“無狀態(tài)無狀態(tài)”連接。只要有一連接。只要有一個(gè)希望瀏覽器返回一個(gè)頁面、圖像或其他資源的個(gè)希望瀏覽器返回一個(gè)頁面、圖像或其他資源的請求,就發(fā)生以下事情:請求,就發(fā)生以下事情:連接到服務(wù)器連接到服務(wù)器告訴服務(wù)器想要的頁面、圖像或其他項(xiàng)告訴服務(wù)器想要的頁面、圖像或其他項(xiàng)服務(wù)器發(fā)送請求資源服務(wù)器發(fā)送

2、請求資源服務(wù)器切斷連接,把用戶忘得干干凈凈。服務(wù)器切斷連接,把用戶忘得干干凈凈。asp.net web form的“連續(xù)”和“有狀態(tài)”的假象vasp.net的設(shè)計(jì)者們,從實(shí)際訪問者的角度的設(shè)計(jì)者們,從實(shí)際訪問者的角度重新考慮了這一過程:訪問者打開一個(gè)頁面,重新考慮了這一過程:訪問者打開一個(gè)頁面,點(diǎn)擊一個(gè)按鈕,看到新的畫面點(diǎn)擊一個(gè)按鈕,看到新的畫面這一切似乎這一切似乎都是連續(xù)的。都是連續(xù)的。狀態(tài)管理vweb應(yīng)用本質(zhì)上是無狀態(tài)的,如需保存狀態(tài)應(yīng)用本質(zhì)上是無狀態(tài)的,如需保存狀態(tài)則需要做狀態(tài)管理,狀態(tài)維護(hù)是對同一頁或則需要做狀態(tài)管理,狀態(tài)維護(hù)是對同一頁或不同頁的多個(gè)請求維護(hù)狀態(tài)和頁信息的過不同頁的多個(gè)

3、請求維護(hù)狀態(tài)和頁信息的過程程 ,保持用戶信息(狀態(tài))的連續(xù)性。,保持用戶信息(狀態(tài))的連續(xù)性。狀態(tài)管理狀態(tài)維護(hù)技術(shù)狀態(tài)維護(hù)技術(shù)v視圖狀態(tài):視圖狀態(tài):使用一個(gè)或多個(gè)隱藏域來保存控件的狀態(tài)。使用一個(gè)或多個(gè)隱藏域來保存控件的狀態(tài)。v控件狀態(tài):控件狀態(tài):當(dāng)開發(fā)自定義控件時(shí),保存控件的狀態(tài)數(shù)據(jù)。當(dāng)開發(fā)自定義控件時(shí),保存控件的狀態(tài)數(shù)據(jù)。v隱藏域:隱藏域:標(biāo)準(zhǔn)的標(biāo)準(zhǔn)的html隱藏域。隱藏域。vcookie:用于在客戶端保存少量的數(shù)據(jù)。用于在客戶端保存少量的數(shù)據(jù)。v查詢字符串:查詢字符串:查詢字符串是在頁查詢字符串是在頁url的結(jié)尾附加的信息。的結(jié)尾附加的信息。v應(yīng)用程序狀態(tài):應(yīng)用程序狀態(tài):用于保存服務(wù)器端的

4、全局應(yīng)用程序信息。用于保存服務(wù)器端的全局應(yīng)用程序信息。v會話狀態(tài):會話狀態(tài):保存會話狀態(tài)信息。保存會話狀態(tài)信息。v配置文件屬性:配置文件屬性:asp.net提供了一個(gè)稱為配置文件屬提供了一個(gè)稱為配置文件屬性的功能,可以保存服務(wù)器端的全局應(yīng)用程序信息。性的功能,可以保存服務(wù)器端的全局應(yīng)用程序信息??蛻舳藸顟B(tài)管理v客戶端狀態(tài)管理客戶端狀態(tài)管理不如服務(wù)器端狀態(tài)管理選項(xiàng)安全不如服務(wù)器端狀態(tài)管理選項(xiàng)安全不如服務(wù)器端管理選項(xiàng)可靠不如服務(wù)器端管理選項(xiàng)可靠可存儲的信息量可能受到限制可存儲的信息量可能受到限制用戶可以刪用戶可以刪除除 cookie惡意的用戶可通過某惡意的用戶可通過某些方法來篡改些方法來篡改 或讀

5、取或讀取其中的內(nèi)容其中的內(nèi)容web 服務(wù)器服務(wù)器客戶端計(jì)算機(jī)客戶端計(jì)算機(jī)客戶端客戶端狀態(tài)信狀態(tài)信息息服務(wù)器端狀態(tài)管理可通過應(yīng)用程序狀態(tài)(可通過應(yīng)用程序狀態(tài)(application)、會話)、會話狀態(tài)(狀態(tài)(session)、配置文件、數(shù)據(jù)庫保存會)、配置文件、數(shù)據(jù)庫保存會話狀態(tài)來實(shí)現(xiàn)話狀態(tài)來實(shí)現(xiàn)web 服務(wù)器服務(wù)器客戶端計(jì)算機(jī)客戶端計(jì)算機(jī)服務(wù)器端狀態(tài)信息服務(wù)器端狀態(tài)信息sessionid客戶端狀態(tài)維護(hù)技術(shù)v視圖狀態(tài)視圖狀態(tài)v隱藏域隱藏域v查詢字符串查詢字符串vcookie視圖狀態(tài)v視圖狀態(tài)概述視圖狀態(tài)概述v設(shè)置頁面是否保留視圖狀態(tài)設(shè)置頁面是否保留視圖狀態(tài)v在配置文件設(shè)置是否保留視圖狀態(tài)在配置文

6、件設(shè)置是否保留視圖狀態(tài)設(shè)置頁面是否保留視圖狀態(tài)v設(shè)置設(shè)置page指令或指令或page的的enableviewstate屬性指示當(dāng)前頁請求結(jié)束屬性指示當(dāng)前頁請求結(jié)束時(shí),該頁是否保持其視圖狀態(tài)以及它包含的時(shí),該頁是否保持其視圖狀態(tài)以及它包含的任何服務(wù)器控件的視圖狀態(tài)任何服務(wù)器控件的視圖狀態(tài) v關(guān)閉頁面的視圖狀態(tài)關(guān)閉頁面的視圖狀態(tài)設(shè)置頁面是否保留視圖狀態(tài)(例)v關(guān)閉頁面的視圖狀態(tài)關(guān)閉頁面的視圖狀態(tài)protected void page_load(object sender, eventargs e) page.enableviewstate = false; 在配置文件中設(shè)置是否保留視圖狀態(tài)v在配置

7、文件在配置文件web.config的的system.web節(jié)點(diǎn)節(jié)點(diǎn)下,修改下,修改pages元素的元素的enableviewstate屬屬性,來控制所有頁面是否啟用視圖狀態(tài)信息性,來控制所有頁面是否啟用視圖狀態(tài)信息 對視圖狀態(tài)進(jìn)行分塊v 設(shè)置頁的設(shè)置頁的 maxpagestatefieldlength 屬性,對屬性,對viewstate 屬性中存儲的數(shù)據(jù)進(jìn)行分塊,可以在屬性中存儲的數(shù)據(jù)進(jìn)行分塊,可以在web.config文件中設(shè)置分塊大小文件中設(shè)置分塊大小使用視圖狀態(tài)存取數(shù)據(jù)使用視圖狀態(tài)存取數(shù)據(jù) v視圖狀態(tài)(視圖狀態(tài)(viewstate)是一個(gè)字典對象,通過)是一個(gè)字典對象,通過page類的類

8、的viewstate屬性公開,是頁用來在往返行屬性公開,是頁用來在往返行程之間保留頁和控件屬性值的默認(rèn)方法(只在本頁程之間保留頁和控件屬性值的默認(rèn)方法(只在本頁有效)有效)v視圖狀態(tài)可存儲的數(shù)據(jù)類型:視圖狀態(tài)可存儲的數(shù)據(jù)類型:字符串;整數(shù);布爾字符串;整數(shù);布爾值;值;array 和和arraylist 對象;哈希表;自定義類型對象;哈希表;自定義類型轉(zhuǎn)換器轉(zhuǎn)換器viewstateview1 = hello world;【例【例5-1】視圖狀態(tài)示例程序?!恳晥D狀態(tài)示例程序。參見示例參見示例第第05章章clientstatedemoviewstatedemo.aspx使用視圖狀態(tài)具有以下使用視圖

9、狀態(tài)具有以下3個(gè)優(yōu)點(diǎn):個(gè)優(yōu)點(diǎn):耗費(fèi)的服務(wù)器資源較少(與耗費(fèi)的服務(wù)器資源較少(與application、session相比相比)。因?yàn)椋晥D狀態(tài)數(shù)據(jù)都寫入了客戶端計(jì)算機(jī)中。)。因?yàn)?,視圖狀態(tài)數(shù)據(jù)都寫入了客戶端計(jì)算機(jī)中。易于維護(hù)。默認(rèn)情況下,易于維護(hù)。默認(rèn)情況下,.net系統(tǒng)自動(dòng)啟用對控件狀系統(tǒng)自動(dòng)啟用對控件狀態(tài)數(shù)據(jù)的維護(hù)。態(tài)數(shù)據(jù)的維護(hù)。增強(qiáng)的安全功能。視圖狀態(tài)中的值經(jīng)過哈希計(jì)算和增強(qiáng)的安全功能。視圖狀態(tài)中的值經(jīng)過哈希計(jì)算和壓縮,并且針對壓縮,并且針對unicode實(shí)現(xiàn)進(jìn)行編碼,其安全性要高實(shí)現(xiàn)進(jìn)行編碼,其安全性要高于使用隱藏域。于使用隱藏域。使用視圖狀態(tài)具有以下使用視圖狀態(tài)具有以下3個(gè)缺點(diǎn):個(gè)缺

10、點(diǎn):性能問題。由于視圖狀態(tài)存儲在頁本身,因此性能問題。由于視圖狀態(tài)存儲在頁本身,因此如果存儲較大的值,用戶顯示頁和發(fā)送頁時(shí)的速如果存儲較大的值,用戶顯示頁和發(fā)送頁時(shí)的速度可能減慢。度可能減慢。設(shè)備限制。移動(dòng)設(shè)備可能沒有足夠的內(nèi)存容量設(shè)備限制。移動(dòng)設(shè)備可能沒有足夠的內(nèi)存容量來存儲大量的視圖狀態(tài)數(shù)據(jù)。因此,對于移動(dòng)設(shè)來存儲大量的視圖狀態(tài)數(shù)據(jù)。因此,對于移動(dòng)設(shè)備上的服務(wù)器控件,將使用其它的實(shí)現(xiàn)方法。備上的服務(wù)器控件,將使用其它的實(shí)現(xiàn)方法。潛在的安全風(fēng)險(xiǎn)。視圖狀態(tài)存儲在頁上的一個(gè)潛在的安全風(fēng)險(xiǎn)。視圖狀態(tài)存儲在頁上的一個(gè)或多個(gè)隱藏域中。雖然視圖狀態(tài)以哈希格式存儲或多個(gè)隱藏域中。雖然視圖狀態(tài)以哈希格式存儲

11、數(shù)據(jù),但它可以被篡改。如果在客戶端直接查看數(shù)據(jù),但它可以被篡改。如果在客戶端直接查看頁源文件,可以看到隱藏域中的信息,這導(dǎo)致潛頁源文件,可以看到隱藏域中的信息,這導(dǎo)致潛在的安全性問題。在的安全性問題。隱藏域v隱藏域是一個(gè)存儲庫,直接存儲在頁中的任何特定隱藏域是一個(gè)存儲庫,直接存儲在頁中的任何特定于頁的信息,在視圖狀態(tài)、會話狀態(tài)和于頁的信息,在視圖狀態(tài)、會話狀態(tài)和 cookie 等方等方法被禁用或不可用,則可以使用法被禁用或不可用,則可以使用 hiddenfield 控件控件來存儲狀態(tài)值來存儲狀態(tài)值 v隱藏域的設(shè)置和讀取隱藏域的設(shè)置和讀取protected void page_load(obje

12、ct sender, eventargs e) string strusername = jakey; h1.value = strusername;查詢字符串v查詢字符串提供了一種維護(hù)狀態(tài)信息的方法查詢字符串提供了一種維護(hù)狀態(tài)信息的方法 ,輸入查詢字符串以問號輸入查詢字符串以問號 (?) 開始的屬性開始的屬性/值對,值對,且可以有多個(gè)查詢字符串,它們之間以且可以有多個(gè)查詢字符串,它們之間以“&”分隔分隔http:/ 使用查詢字符串的優(yōu)點(diǎn):使用查詢字符串的優(yōu)點(diǎn):不需要任何服務(wù)器資源。查詢字符串包含在對特定不需要任何服務(wù)器資源。查詢字符串包含在對特定url的的http請求中。請求中。廣泛

13、的支持。幾乎所有的瀏覽器和客戶端設(shè)備均支持使用查廣泛的支持。幾乎所有的瀏覽器和客戶端設(shè)備均支持使用查詢字符串傳遞值。詢字符串傳遞值。實(shí)現(xiàn)簡單。實(shí)現(xiàn)簡單。asp.net完全支持查詢字符串方法,其中包含了使完全支持查詢字符串方法,其中包含了使用用httprequest對象的對象的params屬性讀取查詢字符串的方法。屬性讀取查詢字符串的方法。使用查詢字符串的缺點(diǎn):使用查詢字符串的缺點(diǎn):潛在的安全性風(fēng)險(xiǎn)。用戶可以通過瀏覽器直接看到查詢字符潛在的安全性風(fēng)險(xiǎn)。用戶可以通過瀏覽器直接看到查詢字符串中的信息。用戶可將此串中的信息。用戶可將此url設(shè)置為書簽或發(fā)送給別的用戶,設(shè)置為書簽或發(fā)送給別的用戶,從而通

14、過此從而通過此url傳遞查詢字符串中的信息。傳遞查詢字符串中的信息。有限的容量。有些瀏覽器和客戶端設(shè)備對有限的容量。有些瀏覽器和客戶端設(shè)備對url的長度有的長度有2083個(gè)個(gè)字符的限制。字符的限制。cookievcookie概述概述v編寫編寫cookiev演示和練習(xí):編寫演示和練習(xí):編寫cookiev編寫多值編寫多值cookiev演示和練習(xí):編寫多值演示和練習(xí):編寫多值cookiev控制控制cookie的范圍的范圍v演示和練習(xí):控制演示和練習(xí):控制cookie的范圍的范圍v修改和刪除修改和刪除cookiev演示和練習(xí):刪除演示和練習(xí):刪除cookie和刪除多值和刪除多值cookie的子鍵的子鍵

15、vcookie和會話狀態(tài)和會話狀態(tài)cookie概述vcookie 是存儲在客戶端文件系統(tǒng)的文本文件中,或者是存儲在客戶端文件系統(tǒng)的文本文件中,或者存儲在客戶端瀏覽器會話的內(nèi)存中的少量的數(shù)據(jù)存儲在客戶端瀏覽器會話的內(nèi)存中的少量的數(shù)據(jù)vcookie 是隨頁輸出并由服務(wù)器發(fā)送到客戶端的特定于是隨頁輸出并由服務(wù)器發(fā)送到客戶端的特定于站點(diǎn)的信息站點(diǎn)的信息vcookie 可以是臨時(shí)的(隨著瀏覽器關(guān)閉而自動(dòng)消失),可以是臨時(shí)的(隨著瀏覽器關(guān)閉而自動(dòng)消失),也可以是永久性的也可以是永久性的vcookie 保存在客戶端設(shè)備上,當(dāng)瀏覽器請求某頁時(shí),保存在客戶端設(shè)備上,當(dāng)瀏覽器請求某頁時(shí),客戶端會將客戶端會將 co

16、okie 中的信息連同請求信息一起發(fā)送。中的信息連同請求信息一起發(fā)送。服務(wù)器可以讀取服務(wù)器可以讀取 cookie 的值的值cookie的用途v用戶的個(gè)人配置用戶的個(gè)人配置v登錄和登錄和“remember me”v彈出窗口彈出窗口編寫cookiev使用使用httpresponse 對象對象 來設(shè)置來設(shè)置cookie,需要設(shè),需要設(shè)置置cookie名稱、值、過期時(shí)間等信息名稱、值、過期時(shí)間等信息/通過新建通過新建httpcookie對象來添加對象來添加cookiehttpcookie acookie = new httpcookie(lastvisit);/新建新建httpcookie對象對象ac

17、ookie.value = datetime.now.tostring();acookie.expires = datetime.now.adddays(1);/設(shè)置設(shè)置cookie的過期的過期response.cookies.add(acookie);/將將cookie添加到添加到cookies集合集合/讀取讀取cookie值值string username;if (request.cookiesusername != null) username = request.cookiesusername .value; 編寫多值cookiev在一個(gè)在一個(gè) cookie 中存儲多個(gè)名稱中存儲多個(gè)名

18、稱/值對,名稱值對,名稱/值對值對稱為子鍵稱為子鍵/直接添加直接添加cookieresponse.cookiesuserinfousername = patrick;response.cookiesuserinfolastvisit = datetime.now.tostring();response.cookiesuserinfo.expires = datetime.now.adddays(1);/讀取讀取cookie值值string username;if (request.cookiesusername != null) if (request.cookiesuserinfo user

19、name != null) username = request.cookiesuserinfousername ; 控制cookie的范圍v限制限制 cookie 的域范圍的域范圍v將將 cookie 限制到某個(gè)文件夾或應(yīng)用程序限制到某個(gè)文件夾或應(yīng)用程序 控制cookie的范圍v限制限制 cookie 的域范圍的域范圍response.cookiesdomain.value = datetime.now.tostring();response.cookiesdomain.expires = datetime.now.adddays(1);response.cookiesdomain.doma

20、in = support. ;控制cookie的范圍v將將 cookie 限制到某個(gè)文件夾或應(yīng)用程序限制到某個(gè)文件夾或應(yīng)用程序httpcookie appcookie = new httpcookie(appcookie);appcookie.value = written + datetime.now.tostring();appcookie.expires = datetime.now.adddays(1);appcookie.path = /app1;response.cookies.add(appcookie);修改和刪除cookiev由于由于cookie存儲在客戶端,不能直接修改和存

21、儲在客戶端,不能直接修改和刪除刪除 cookieu通過給通過給cookie賦新值替換舊版本賦新值替換舊版本cookie的辦法來的辦法來修改修改u可以通過設(shè)置可以通過設(shè)置cookie立即過期的辦法來刪除立即過期的辦法來刪除cookiecookie的應(yīng)用的應(yīng)用 一般只要有會員、用戶機(jī)制的網(wǎng)站或論壇在登錄的時(shí)候都會一般只要有會員、用戶機(jī)制的網(wǎng)站或論壇在登錄的時(shí)候都會有這么一個(gè)復(fù)選框有這么一個(gè)復(fù)選框記住我的名字記住我的名字|兩周內(nèi)不再登錄兩周內(nèi)不再登錄|在此在此計(jì)算機(jī)上保存我的信息計(jì)算機(jī)上保存我的信息,說法較多,實(shí)現(xiàn)起來差不多,下,說法較多,實(shí)現(xiàn)起來差不多,下面就來實(shí)現(xiàn)這樣一個(gè)簡單的例子。面就來實(shí)現(xiàn)這

22、樣一個(gè)簡單的例子?!纠纠?-3】演示】演示cookie的使用。的使用。 參見示例參見示例第第05章章clientstatedemocookiedemo.aspx 服務(wù)器端狀態(tài)維護(hù)技術(shù)v會話狀態(tài)會話狀態(tài)v應(yīng)用程序狀態(tài)應(yīng)用程序狀態(tài)會話狀態(tài)v會話標(biāo)識符會話標(biāo)識符v配置會話狀態(tài)配置會話狀態(tài) v會話狀態(tài)事件會話狀態(tài)事件v會話狀態(tài)變量的使用會話狀態(tài)變量的使用 v會話狀態(tài)的利弊會話狀態(tài)的利弊 v會話狀態(tài)是會話狀態(tài)是asp.net中非常重要的服務(wù)器端狀態(tài)管中非常重要的服務(wù)器端狀態(tài)管理技術(shù),同時(shí)也是功能很強(qiáng)大的狀態(tài)管理技術(shù)。理技術(shù),同時(shí)也是功能很強(qiáng)大的狀態(tài)管理技術(shù)。v會話狀態(tài)是特定于用戶的,當(dāng)一個(gè)用戶開始訪問

23、會話狀態(tài)是特定于用戶的,當(dāng)一個(gè)用戶開始訪問web應(yīng)用程序時(shí),將會產(chǎn)生一個(gè)會話狀態(tài)。應(yīng)用程序時(shí),將會產(chǎn)生一個(gè)會話狀態(tài)。v不同的用戶具有不同的會話狀態(tài),如果有一萬個(gè)用不同的用戶具有不同的會話狀態(tài),如果有一萬個(gè)用戶,將會有一萬個(gè)會話狀態(tài)。戶,將會有一萬個(gè)會話狀態(tài)。v會話狀態(tài)在存儲與用戶相關(guān)的信息方面非常有用,會話狀態(tài)在存儲與用戶相關(guān)的信息方面非常有用,如博客登錄后就可以使用會話狀態(tài)存儲通過驗(yàn)證的如博客登錄后就可以使用會話狀態(tài)存儲通過驗(yàn)證的用戶信息。用戶信息。會話標(biāo)識符v瀏覽器的會話使用存儲在瀏覽器的會話使用存儲在 sessionid 屬性中的唯一屬性中的唯一標(biāo)識符進(jìn)行標(biāo)識標(biāo)識符進(jìn)行標(biāo)識v會話會話 i

24、d 使使 asp.net 應(yīng)用程序能夠?qū)⑻囟ǖ臑g覽器應(yīng)用程序能夠?qū)⑻囟ǖ臑g覽器與與 web 服務(wù)器上相關(guān)的會話數(shù)據(jù)和信息相關(guān)聯(lián)服務(wù)器上相關(guān)的會話數(shù)據(jù)和信息相關(guān)聯(lián)v會話會話 id 的值在瀏覽器和的值在瀏覽器和 web 服務(wù)器間通過服務(wù)器間通過 cookie 進(jìn)行傳輸,如果指定了無進(jìn)行傳輸,如果指定了無 cookie 會話,則通過會話,則通過 url 進(jìn)行傳輸進(jìn)行傳輸 會話標(biāo)識符v無無cookie的的sessionidu將將web.config 文件的文件的 sessionstate 節(jié)的節(jié)的 cookieless 屬性設(shè)置為屬性設(shè)置為 true,可以指定不將會話,可以指定不將會話標(biāo)識符存儲在標(biāo)識

25、符存儲在 cookie 中,而是存儲在中,而是存儲在url中中 http:/localhost:10765/statemanagedemo/(s(hfuvhje2whhmnhyaocja54r0)/default.aspx會話標(biāo)識符會話標(biāo)識符配置會話狀態(tài)配置會話狀態(tài) v會話狀態(tài)模式概述會話狀態(tài)模式概述uasp.net 會話狀態(tài)支持若干用于會話數(shù)據(jù)的存儲會話狀態(tài)支持若干用于會話數(shù)據(jù)的存儲選項(xiàng)選項(xiàng)u在在 web.config 文件中為文件中為 sessionstate 元素的元素的 mode 屬性分配一個(gè)屬性分配一個(gè) sessionstatemode 枚舉值,枚舉值,可以指定可以指定asp.net

26、 會話狀態(tài)使用的模式會話狀態(tài)使用的模式配置會話狀態(tài)(續(xù))配置會話狀態(tài)(續(xù)) vinproc模式(進(jìn)程內(nèi)模式)模式(進(jìn)程內(nèi)模式)u是默認(rèn)會話狀態(tài)模式,使用是默認(rèn)會話狀態(tài)模式,使用sessionstatemode枚舉的枚舉的inproc值指定值指定u進(jìn)程內(nèi)模式將會話狀態(tài)值和變量存儲在本地進(jìn)程內(nèi)模式將會話狀態(tài)值和變量存儲在本地 web 服務(wù)器的內(nèi)存中服務(wù)器的內(nèi)存中u是唯一支持是唯一支持 session_end 事件的模式事件的模式配置會話狀態(tài)(續(xù))配置會話狀態(tài)(續(xù)) vstateserver模式(狀態(tài)服務(wù)器模式)模式(狀態(tài)服務(wù)器模式)u會話狀態(tài)存儲在一個(gè)稱為會話狀態(tài)存儲在一個(gè)稱為 asp.net 狀

27、態(tài)服務(wù)的進(jìn)程狀態(tài)服務(wù)的進(jìn)程中,該進(jìn)程是獨(dú)立于中,該進(jìn)程是獨(dú)立于 asp.net 輔助進(jìn)程或輔助進(jìn)程或 iis 應(yīng)用應(yīng)用程序池的單獨(dú)進(jìn)程程序池的單獨(dú)進(jìn)程u使用此模式可以確保在重新啟動(dòng)使用此模式可以確保在重新啟動(dòng) web 應(yīng)用程序時(shí)保應(yīng)用程序時(shí)保留會話狀態(tài),并使會話狀態(tài)可用于網(wǎng)絡(luò)場中的多個(gè)留會話狀態(tài),并使會話狀態(tài)可用于網(wǎng)絡(luò)場中的多個(gè) web 服務(wù)器服務(wù)器 配置會話狀態(tài)配置會話狀態(tài) (續(xù))(續(xù)) vsql server模式模式u會話狀態(tài)存儲到一個(gè)會話狀態(tài)存儲到一個(gè) sql server 數(shù)據(jù)庫中數(shù)據(jù)庫中u可以確保在重新啟動(dòng)可以確保在重新啟動(dòng) web 應(yīng)用程序時(shí)保留會話狀應(yīng)用程序時(shí)保留會話狀態(tài),并使會

28、話狀態(tài)可用于網(wǎng)絡(luò)場中的多個(gè)態(tài),并使會話狀態(tài)可用于網(wǎng)絡(luò)場中的多個(gè) web 服服務(wù)器務(wù)器 配置會話狀態(tài)(續(xù))配置會話狀態(tài)(續(xù)) vcustom摸式(自定義模式)摸式(自定義模式)u指定使用自定義會話狀態(tài)存儲提供程序來存儲會指定使用自定義會話狀態(tài)存儲提供程序來存儲會話狀態(tài)數(shù)據(jù)話狀態(tài)數(shù)據(jù)u在在web.config中配置中配置sessionstate 的提供程序?yàn)榈奶峁┏绦驗(yàn)樽远x的會話狀態(tài)存儲提供程序自定義的會話狀態(tài)存儲提供程序voff模式:此模式禁用會話狀態(tài)。模式:此模式禁用會話狀態(tài)。 會話狀態(tài)事件v在在global.asax文件編寫用于管理用戶會話的文件編寫用于管理用戶會話的事件:事件:usess

29、ion_start 事件:在新會話開始時(shí)觸發(fā)事件:在新會話開始時(shí)觸發(fā)usession_end 事件:在會話被放棄或過期時(shí)觸發(fā)事件:在會話被放棄或過期時(shí)觸發(fā) vsession_start事件:事件:通過向通過向global.asax文件添加文件添加一個(gè)名為一個(gè)名為session_start的事件過程來處理。如果的事件過程來處理。如果請求開始一個(gè)新會話,請求開始一個(gè)新會話,session_start事件過程會事件過程會在請求開始時(shí)運(yùn)行。如果請求不包含在請求開始時(shí)運(yùn)行。如果請求不包含sessionid值值或請求所包含的或請求所包含的sessionid屬性引用一個(gè)已過期的屬性引用一個(gè)已過期的會話,則會

30、開始一個(gè)新會話??梢允褂脮挘瑒t會開始一個(gè)新會話。可以使用session_start事件初始化會話變量并跟蹤與會話事件初始化會話變量并跟蹤與會話相關(guān)的信息。相關(guān)的信息。vsession_end事件:事件:通過向通過向global.asax文文件添加一個(gè)名為件添加一個(gè)名為session_end的事件過程來的事件過程來處理。處理。session_end事件過程在調(diào)用事件過程在調(diào)用abandon方法或會話過期時(shí)運(yùn)行。如果超過方法或會話過期時(shí)運(yùn)行。如果超過了某一會話了某一會話timeout屬性指定的分鐘數(shù)并且屬性指定的分鐘數(shù)并且在此期間內(nèi)沒有請求該會話,則該會話過期。在此期間內(nèi)沒有請求該會話,則該會話

31、過期。會話狀態(tài)變量的使用會話狀態(tài)變量的使用 v向會話狀態(tài)添加項(xiàng)向會話狀態(tài)添加項(xiàng)u以鍵以鍵/值對形式直接向值對形式直接向session中添加項(xiàng)以持久保中添加項(xiàng)以持久保留值留值 ,并且根據(jù)添加的鍵名稱訪問會話狀態(tài)的值,并且根據(jù)添加的鍵名稱訪問會話狀態(tài)的值/添加添加sessionusername =mary;或:或:session.add(username ,mary); /訪問訪問if(session username != null) string strusername = session username.tostring();會話狀態(tài)變量的使用會話狀態(tài)變量的使用v會話的過期會話的過期u配置

32、會話過期時(shí)間,默認(rèn)過期時(shí)間為配置會話過期時(shí)間,默認(rèn)過期時(shí)間為20分鐘分鐘u編寫代碼設(shè)置編寫代碼設(shè)置session對象的對象的timeout屬性,來屬性,來設(shè)置會話狀態(tài)過期時(shí)間設(shè)置會話狀態(tài)過期時(shí)間void session_start(object sender, eventargs e) session.timeout = 30; 使用會話狀態(tài)v刪除會話狀態(tài)中的項(xiàng)刪除會話狀態(tài)中的項(xiàng)u調(diào)用調(diào)用session對象的對象的clear和和removeall方法來刪除方法來刪除會話狀態(tài)集合中的所有項(xiàng)會話狀態(tài)集合中的所有項(xiàng)u調(diào)用調(diào)用remove和和removeat刪除其中的某一項(xiàng)刪除其中的某一項(xiàng)u調(diào)用調(diào)用a

33、bandon方法取消當(dāng)前會話,即會話立即過期方法取消當(dāng)前會話,即會話立即過期session.remove(username);session. abandon();【例【例5-4】演示會話狀態(tài)變量的使用?!垦菔緯挔顟B(tài)變量的使用。參見示例參見示例第第05章章serverstatedemologin.aspx 和和hello.aspx 會話狀態(tài)的利弊會話狀態(tài)的利弊 使用會話狀態(tài)的優(yōu)點(diǎn):使用會話狀態(tài)的優(yōu)點(diǎn):v實(shí)現(xiàn)簡單。實(shí)現(xiàn)簡單。v會話特定的事件。會話特定的事件。v數(shù)據(jù)持久性。數(shù)據(jù)持久性。v平臺可伸縮性。平臺可伸縮性。v無需無需cookie支持。支持。v可擴(kuò)展性??蓴U(kuò)展性。使用會話狀態(tài)的缺點(diǎn):使用會

34、話狀態(tài)的缺點(diǎn):v使用會話狀態(tài)時(shí),要注意其性能問題。使用會話狀態(tài)時(shí),要注意其性能問題。 應(yīng)用程序狀態(tài)v應(yīng)用程序狀態(tài)概述應(yīng)用程序狀態(tài)概述v添加和讀取應(yīng)用程序狀態(tài)中的值添加和讀取應(yīng)用程序狀態(tài)中的值v演示和練習(xí):使用應(yīng)用程序狀態(tài)來存儲信息演示和練習(xí):使用應(yīng)用程序狀態(tài)來存儲信息v刪除應(yīng)用程序狀態(tài)的值刪除應(yīng)用程序狀態(tài)的值應(yīng)用程序狀態(tài)概述應(yīng)用程序狀態(tài)概述v應(yīng)用程序狀態(tài)是一種全局存儲機(jī)制,可以供應(yīng)用程序狀態(tài)是一種全局存儲機(jī)制,可以供web應(yīng)應(yīng)用程序中的所有頁面(或用程序中的所有頁面(或global.asax文件)訪問文件)訪問v存儲在存儲在httpapplicationstate 類的實(shí)例中,該類在類的實(shí)例中

35、,該類在客戶端第一次從某個(gè)特定的客戶端第一次從某個(gè)特定的 asp.net 應(yīng)用程序虛應(yīng)用程序虛擬目錄中請求任何擬目錄中請求任何 url 資源時(shí)創(chuàng)建資源時(shí)創(chuàng)建 v目的在于存儲需要在服務(wù)器往返行程之間及頁請求目的在于存儲需要在服務(wù)器往返行程之間及頁請求之間維護(hù)的信息之間維護(hù)的信息 添加和讀取應(yīng)用程序狀態(tài)中的值v應(yīng)用程序狀態(tài)存儲在一個(gè)鍵應(yīng)用程序狀態(tài)存儲在一個(gè)鍵/值字典中,可以將特定于值字典中,可以將特定于應(yīng)用程序的信息添加到此結(jié)構(gòu)以在頁請求期間讀取它應(yīng)用程序的信息添加到此結(jié)構(gòu)以在頁請求期間讀取它v一般在一般在global.asax文件中的應(yīng)用程序啟動(dòng)事件中初文件中的應(yīng)用程序啟動(dòng)事件中初始化應(yīng)用程序狀態(tài)值,而在所有的頁面中都可以訪問始化應(yīng)用程序狀態(tài)

溫馨提示

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

評論

0/150

提交評論