第6章2狀態(tài)控制_第1頁
第6章2狀態(tài)控制_第2頁
第6章2狀態(tài)控制_第3頁
第6章2狀態(tài)控制_第4頁
第6章2狀態(tài)控制_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1回顧q 傳遞Form表單中的控件值用Request.Form 獲取值,地址欄中傳遞的參數(shù)用 Request.QueryString獲取q 通常用HttpResponse 類的屬性Buffer、Cache、Cookie 和 Expires來設(shè)置站點的一些特性q HttpResponse 類常用方法是 Write()、End() 和 Redirect()q HttpServerUtility 類的Execute()和Transfer()的區(qū)別關(guān)鍵在于執(zhí)行后控制權(quán)是否返回原先頁面、URLEncode()和HTMLEncode()主要用于對HTML 標(biāo)簽和URL進行編碼,對站點或程序的安全具有重要意

2、思, MapPath()獲取物理路徑時需要注意是絕對路徑還是相對路徑第第6章章-2Application、Session和Cookie對象ASP.NET應(yīng)用程序的生命周期3aspnet_isapi.dll起點ApplicationManager HostingEnvironment 4Global.asax5 Global.asax 2-1“Global.asax” q 存儲所有事件的事件處理程序q 存儲在應(yīng)用程序的根目錄下q 它的位置定義應(yīng)用程序的限界q 包含所有應(yīng)用程序的配置設(shè)置6Global.asax 2-2httpApplication類類實例事件事件處理程序Global.asax配置

3、設(shè)置存儲于文件事件說明Application_Start調(diào)用當(dāng)前應(yīng)用程序目錄(或其子目錄)下的第一個 ASP.NET 頁面時觸發(fā)。Application_End應(yīng)用程序的最后一個會話結(jié)束時觸發(fā)。用 Internet 服務(wù)管理器管理單元停止 Web 應(yīng)用程序時也會觸發(fā)Application_BeginRequest每次頁面請求開始時觸發(fā)(理想情況下是在頁面加載或刷新時)Application_EndRequest每次頁面請求結(jié)束時(即每次在瀏覽器上執(zhí)行頁面時)觸發(fā)Session_Start每次新的會話開始時觸發(fā)Session_End會話結(jié)束時觸發(fā)。(關(guān)于會話可以采用何種方式結(jié)束,請參見會話對象)

4、7TestingGlobal.aspx示例 會話尚未結(jié)束 輸出結(jié)果8TestingGlobal.aspx示例 -1 protected void Application_Start(Object sender, EventArgs e) protected void Session_Start(Object sender, EventArgs e)Response.Write( “會話已開始 ); protected void Application_BeginRequest(Object sender, EventArgs e) Response.Write(“應(yīng)用程序開始); Respon

5、se.Write (“應(yīng)用程序請求開始);Global.asax 文件打開代碼隱藏類文件 Global.asax.cs。將代碼分別添加到 Global.asax.cs 中的各個事件中9TestingGlobal.aspx示例 -2 protected void Application_EndRequest(Object sender, EventArgs e) Response.Write (“應(yīng)用程序請求結(jié)束); protected void Session_End(Object sender, EventArgs e)Response.Write(“會話已結(jié)束); protected vo

6、id Application_End (Object sender, EventArgs e)10TestingGlobal.aspx示例 -3private void Page_Load(object sender, System.EventArgs e)Response.Write(“頁面加載事件);將默認(rèn) ASP.NET 頁面WebForm1.aspx重命名為TestingGlobal.aspx, 并添加給定的代碼片段11TestingGlobal.aspx示例 -4會話尚未結(jié)束 輸出結(jié)果實現(xiàn)狀態(tài)管理的對象qHttp協(xié)議“無狀態(tài)協(xié)議”qSessionqApplicationqViewSt

7、ateqCookie1213變量用于在應(yīng)用程序執(zhí)行時存儲數(shù)據(jù)Application應(yīng)用程序級Session會話級ViewState級Cookie級string myname = “張三;Response.Write (“歡迎 + myname);14ViewStatecount = 0;Sessioncount = null;Applicationcount = ncount;Label3.Text = Sessioncount.ToString();15一 Session 對象qSession 對象用于存儲用戶的信息 q當(dāng)新用戶請求應(yīng)用程序的網(wǎng)頁時,Server 對象會檢查用戶是否有 Ses

8、sionIDqSession 對象包含特定于某個用戶的信息q在用戶會話期間可以記錄和監(jiān)視特定于用戶的信息q當(dāng)會話過期或終止時,服務(wù)器就會清除 Session 對象優(yōu)點161.1Session 變量qSession 變量僅提供給會話中的特定用戶qSession 變量可用于存儲在整個用戶會話過程中都可以訪問的值1.2向Session對象中存入數(shù)據(jù)protected void Button1_Click(object sender, EventArgs e) SessionMyVal1 = 這是Session傳遞的數(shù)據(jù)1; string Val2 = 這是Session傳遞的數(shù)據(jù)2; Session

9、MyVal2 = Val2;1.2 從Session對象中取出數(shù)據(jù)protected void Page_Load(object sender, EventArgs e) Label1.Text = (string)(SessionMyVal1); Label2.Text = (string)(SessionMyVal2);19ASP.NET中數(shù)值傳遞模型介紹1.3 示例1qLogin.aspx:登陸頁面,用戶輸入用戶名。qSessionV.aspx:用戶名輸出頁面,輸出login頁接收到的用戶名。qNolink.aspx:用戶名輸出頁面,輸出login頁接收到的用戶名。2021 privat

10、e void btnLogin_Click(object sender, System.EventArgs e) SessionUserName=this.txtName.Text.Trim(); Response.Redirect(SessionVariableWelcome.aspx?pwd= +this.txtPwd.Text );1.3 上機練習(xí) 3-1221.2使用示例 3-2private void Page_Load(object sender, System.EventArgs e)Response.Write (“歡迎 +SessionUserName + 光臨,你的密碼是:

11、 +Requestpwd.ToString()+);231.3Session事件Session 事件事件Session_StartSession_End241.4Session 屬性屬性說明SessionID包含一個唯一的用戶會話標(biāo)識符。它用于在會話過程中跟蹤用戶的信息。要檢索 SessionID,使用 Session.SessionIDTimeOut設(shè)置用戶超時,即它以分鐘為單位,默認(rèn)值為 20 分鐘??赏ㄟ^在 ASPX 文件中賦值來更改此設(shè)置。例如,LCID用于設(shè)定本地標(biāo)志符. 它可存儲本地信息,如日期、貨幣和時間格式。例如 Session.LCID = 0 x040C 將本地標(biāo)識符設(shè)定為

12、法國本地標(biāo)識符IsNewSession若該會話是由當(dāng)前請求創(chuàng)建的,該屬性將返回值 trueItem獲取或設(shè)置會話值的名稱Count獲得會話狀態(tài)集合中的項數(shù)1.5 示例q用戶只能通過default.aspx登錄welcome.aspx.qZhangsan 123456 adminqLisi 234567 normalqWangwu 345678 normal2526Application 對象存儲并維護應(yīng)用程序級的數(shù)據(jù)二、 Application 對象Application 狀態(tài)狀態(tài)HttpApplicationState方法集合Application 狀態(tài)狀態(tài)由它們表示由它們表示類類272.1

13、Application 變量變量用于在應(yīng)用程序執(zhí)行時存儲數(shù)據(jù)應(yīng)用程序級會話級string myname = “張三;Response.Write (“歡迎 + myname);282.2Lock 和 Unlock 方法 Lock()Lock() 用于防止用戶更改 Application 對象的屬性 Lock() 可用作 Application.Lock() UnLock()Unlock() 方法用于釋放對應(yīng)用程序變量的鎖定UnLock() 可用作Application.UnLock()292.3向應(yīng)用程序添加、更新和移除項 方法方法說明說明Add()向 Application 狀態(tài)添加新對象。

14、Application.Add(“對象名”, 對象值);或 Application(“對象名”) = “對象值”;例如,下列代碼會向應(yīng)用程序狀態(tài)添加項:Application.Add(“Title”, article board);或 Application(“Title”) = “Article Board”; Clear()從 Application 狀態(tài)中移除所有對象 Remove()從 Application 集合中按名稱移除項。例如,下列代碼移除 Title 項:Application.Remove(Title) HttpApplicationState 方法方法q修改Applica

15、tion對象中的數(shù)據(jù):Application.Lock();Application“Test”= Application“Test”= + 1);Application.Set(“Test”,Application“Test” + 1);Application.Unlockq讀取Application對象中的數(shù)據(jù)string User;User=Application(“UserName”).Tostring();3031對象級變量 示例網(wǎng)站計數(shù)器protected void Application_Start(Object sender, EventArgs e)Application.Lo

16、ck ();ApplicationUserNum =0;Application.UnLock();protected void Session_Start(Object sender, EventArgs e)Response.Write(調(diào)用Session_Start:會話已開始 );Application.Lock();ApplicationUserNum=int.Parse(ApplicationUserNum. ToString()+1;Application.UnLock();32對象級變量示例private void Page_Load(object sender, System.

17、EventArgs e)/ 在此處放置用戶代碼以初始化頁面Response.Write(你是第+ ApplicationUserNum.ToString() + 位訪客);33對象級變量 示例在線訪問人數(shù)protected void Application_Start(Object sender, EventArgs e)Application.Lock ();ApplicationUserNum =0;Application.UnLock();protected void Session_Start(Object sender, EventArgs e)Response.Write(調(diào)用Se

18、ssion_Start:會話已開始 );Application.Lock();ApplicationUserNum=int.Parse(ApplicationUserNum. ToString()+1;Application.UnLock();protected void Session_End(Object sender, EventArgs e) Response.Write(調(diào)用Session_End:會話已結(jié)束); Application.Lock(); ApplicationUserNum=int.Parse(Application UserNum.ToString()-1; App

19、lication.UnLock();34對象級變量示例private void Page_Load(object sender, System.EventArgs e)/ 在此處放置用戶代碼以初始化頁面Response.Write(你是第+ ApplicationUserNum.ToString() + 位訪客);35對象級變量 示例q例6-10簡易網(wǎng)絡(luò)聊天室(P174)36實例q一個簡易網(wǎng)上聊天室。用戶訪問網(wǎng)站的時候,首先打開登陸頁面。在輸入用戶名和相應(yīng)密碼后,進入聊天頁面。頁面分上下兩部分,下面是輸入?yún)^(qū)域,上面為聊天信息顯示區(qū)域。3738三、CookiesCookie在客戶端系統(tǒng)中維護客戶

20、的個人信息 會話會話 Cookie持久性持久性 Cookie3.1創(chuàng)建和讀取 Cookie-11、創(chuàng)建cookieq Response.Cookies“名稱名稱”.Value=變量;變量;q HttpCookie objHttpCookie = new HttpCookie(“name”, “value); Response.Cookies.Add(objHttpCookie); 392、讀取cookieq變量變量 = Request.Cookies名稱名稱.Value;q 3、清除cookie Response.Cookies名稱名稱.Value = null;或 Response.Cook

21、ies名稱名稱.Expires = new System.DateTime(2012,11,12);(過期)(過期)40413.2創(chuàng)建和讀取會話 CookieHttpCookie objHttpCookie = new HttpCookie(“UserName”, “張三); Response.Cookies.Add(objHttpCookie); 新建 Cookie將新 Cookie 添加到 Response 對象的 Cookie 集合中 創(chuàng)建 Cookie讀取 CookieResponse.Write(Request.Cookies(“UserName).Value);Value 屬性將

22、Cookie 的值作為字符串返回423.3創(chuàng)建和讀取持久性 Cookie讀取 CookieHttpCookie objHttpCookie = new HttpCookie(“UserName”,“張三); objHttpCookie.Expires = DateTime.Now.AddMinutes(2);Response.Cookies.Add(objHttpCookie); 新建 Cookie用 Cookie 的 Expires 屬性將 Cookie 的過期期限設(shè)置為兩分鐘創(chuàng)建 CookieResponse.Write(Request.Cookies(“UserName).Value);

23、練習(xí)q將Cookies集合中名為“MyCookie”的Cookie值讀出,并賦給變量GetCookie:string GetCookie = “”if (Request.CookiesMyCookie != null) GetCookie = Request.CookiesMyCookie.Value; 433.4 使用多值CookieResponse.CookiesPersonP_Name.Value = zhangsan;Response.CookiesPersonP_Email.Value = ;Response.CookiesPersonP_Home.Value = 北京;使用下列語句

24、可從上述多值Cookie中讀取數(shù)據(jù):yr_name = Request.CookiesPersonP_Name.Value;yr_email = Request.CookiesPersonP_Email.Value;yr_home = Request.CookiesPersonP_Home.Value;或string yr_name = Request.CookiesPerson.Values0;string yr_name = Request.CookiesPerson.Values1;string yr_name = Request.CookiesPerson.Values2;44示例1q在頁面上的TextBox中輸入一個用戶名,然后點“注冊”按鈕,此時將用戶名存入Cookie中,然后在頁面加載

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論