當(dāng)沒有會話的用戶在打開應(yīng)用程序中的 Web 頁時(shí),Web 服務(wù)器會自動創(chuàng)建會話。當(dāng)超時(shí)或服務(wù)器調(diào)用 Abandon 方法時(shí),服務(wù)器將終止該會話。 會話有兩個(gè)事件,即 Session_OnStart 事件和 Session_OnEnd 事件。 可以在全局文件 Global.asa 中為這兩個(gè)事件指定腳本。當(dāng)會話開始時(shí),服務(wù)器在 Global.asa 文件中查找并處理 Session_OnStart 事件腳本。該腳本將在處理用戶請求的 Web 頁之前處理。在會話結(jié)束時(shí),服務(wù)器將處理 Session_OnEnd 事件腳本。 1.Session_OnStart Session_OnStart 事件在服務(wù)器創(chuàng)建新會話時(shí)發(fā)生。服務(wù)器在執(zhí)行請求的頁之前先處理該腳本。Session_OnStart 事件是設(shè)置會 話期變量的最佳時(shí)機(jī),因?yàn)樵谠L問任何頁之前都會先設(shè)置它們。所有內(nèi)建對象 (Application、ObjectContext、Request、 Response、Server 和 Session) 都可以在 Session_OnStart 事件腳本中使用和引用。語法 <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnStart. . .End Sub </SCRIPT> 參數(shù)ScriptLanguage 指定用于編寫事件腳本的腳本編寫語言。可以是任何一種支持腳本的語言,例如 VBScript 或 JScript。如果有多個(gè)事件使用同 一種腳本編寫語言,就可以將它們組織在一組 <SCRIPT> 標(biāo)記下。 示例 盡管在 Session_OnStart 事件包含 Redirect 或 End 方法調(diào)用的情況下 Session 對象仍會保持,然而服務(wù)器將停止處理 Global.asa 文件并觸發(fā) Session_OnStart 事件的文件中的腳本。 舉一個(gè)例子,為了確保用戶在打開某個(gè)特定的 Web 頁時(shí)始終啟動一個(gè)會話,就可以在 Session_OnStart 事件中調(diào)用 Redirect 方法。當(dāng)用戶進(jìn)入應(yīng)用程序時(shí),服務(wù)器將為用戶創(chuàng)建一個(gè)會話并處理 Session_OnStart 事件腳本。您可以將腳本包含在該事件中 以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調(diào)用 Response.Redirect 方法啟動網(wǎng)頁。其演示如下例所示。 <SCRIPT RUNAT=Server Language=VBScript>Sub Session_OnStart ' Make sure that new users start on the correct ' page of the ASP application. ' Replace the value given to startPage below ' with the virtual path to your application's ' start page. startPage = "/MyApp/StartHere.asp" currentPage = Request.ServerVariables("SCRIPT_NAME") ' Do a case-insensitive compare, and if they ' don't match, send the user to the start page. if strcomp(currentPage,startPage,1) then Response.Redirect(startPage) end ifEnd Sub</SCRIPT> 上述示例只能在支持 cookie 的瀏覽器中運(yùn)行。因?yàn)椴恢С?cookie 的瀏覽器不能返回 SessionID cookie,所以,每當(dāng)用戶請 求 Web 頁時(shí),服務(wù)器都會創(chuàng)建一個(gè)新會話。這樣,對于每個(gè)請求,服務(wù)器都將處理 Session_OnStart 腳本并將用戶重定向到啟 動頁中。如果您要使用下面的腳本,建議您在啟動頁上放一個(gè)通知,告訴用戶該站點(diǎn)要求支持 cookie 的瀏覽器。注釋 請注意,在 Redirect 方法之后的任何 Session_OnStart 事件腳本都不會執(zhí)行。因此,應(yīng)該在您的事件腳本的最后再調(diào)用 Redirect 方法。其演示如下例所示。<SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart ' Session initialization script Response.Redirect "http:/server/app/StartHere.asp" End sub</SCRIPT> 在上面的例子中,Redirect 方法在執(zhí)行會話初始化腳本期間隱藏所有顯示給客戶的文字。 2.Session_OnEnd Session_OnEnd 事件在會話被放棄或超時(shí)發(fā)生。在服務(wù)器內(nèi)建對象中,只有 Application、Server 和 Session 對象可用。語法 <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnEnd. . . End Sub </SCRIPT> 參數(shù)ScriptLanguage 指定用于編寫事件腳本的腳本編寫語言。可以是任一支持腳本編寫的語言,例如 VBScript 或 JScript。如果有多個(gè)事件使用同 一種腳本編寫語言,則可以將其組織在一組 <SCRIPT> 標(biāo)記下。 注釋在 Session_OnEnd 腳本中不能調(diào)用 MapPath 方法。 (出處:熱點(diǎn)網(wǎng)絡(luò))
|