返回首頁
當前位置: 主頁 > 網絡編程 > Asp實例教程 >

asp中session的具體用法詳解

時間:2010-08-05 20:27來源:知行網www.gbjajh.tw 編輯:麥田守望者

我們可以使用 Session 對象存儲特定的用戶會話所需的信息。當用戶在應用程序的頁之間跳轉時,存儲在 Session 對象中的變量不會清除,而用戶在應用程序中訪問頁面時,這些變量始終存在。當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄后,服務器將終止該會話。

通過向客戶程序發送唯一的 Cookie 可以管理服務器上的 Session 對象。當用戶第一次請求 ASP 應用程序中的某個頁面時,ASP 要檢查 HTTP 頭信息,查看是否有在報文中有名為 ASPSESSIONID 的 Cookie 發送過來,如果有,則服務器會啟動新的會話,并為該會話生成一個全局唯一的值,在把這個值作為新 ASPSESSIONID Cookie 的值發送給客戶端,正是使用這種 Cookie,可以訪問存儲在服務器上的屬于客戶程序的信息。Session 對象最常見的作用就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。另外其還經常被用在鑒別客戶身份的程序中。要注意的是,會話狀態僅在支持 cookie 的瀏覽器中保留,如果客戶關閉了 Cookie 選項,Session 也就不能發揮作用了。
一、屬性

1、SessionID

SessionID 屬性返回用戶的會話標識。在創建會話時,服務器會為每一個會話生成一個單獨的標識。會話標識以長整形數據類型返回。在很多情況下 SessionID 可以用于 WEB 頁面注冊統計。

2、TimeOut

Timeout 屬性以分鐘為單位為該應用程序的 Session 對象指定超時時限。如果用戶在該超時時限之內不刷新或請求網頁,則該會話將終止。

二、方法

Session 對象僅有一個方法,就是 Abandon,Abandon 方法刪除所有存儲在 Session 對象中的對象并釋放這些對象的源。如果您未明確地調用 Abandon 方法,一旦會話超時,服務器將刪除這些對象。當服務器處理完當前頁時,下面示例將釋放會話狀態。
< % Session.Abandon %>


三、事件

Session 對象有兩個事件可用于在 Session 對象啟動和釋放是運行過程。

1、Session_OnStart 事件在服務器創建新會話時發生。服務器在執行請求的頁之前先處理該腳本。Session_OnStart 事件是設置會話期變量的最佳時機,因為在訪問任何頁之前都會先設置它們。

盡管在 Session_OnStart 事件包含 Redirect 或 End 方法調用的情況下 Session 對象仍會保持,然而服務器將停止處理 Global.asa 文件并觸發 Session_OnStart 事件的文件中的腳本。

為了確保用戶在打開某個特定的 Web 頁時始終啟動一個會話,就可以在 Session_OnStart 事件中調用 Redirect 方法。當用戶進入應用程序時,服務器將為用戶創建一個會話并處理 Session_OnStart 事件腳本。您可以將腳本包含在該事件中以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調用 Response.Redirect 方法啟動網頁。程序如下 :

< SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
startPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")
if strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
< /SCRIPT>

上述程序只能在支持 cookie 的瀏覽器中運行。因為不支持 cookie 的瀏覽器不能返回 SessionID cookie,所以,每當用戶請求 Web 頁時,服務器都會創建一個新會話。這樣,對于每個請求服務器都將處理 Session_OnStart 腳本并將用戶重定向到啟動頁中。
2、Session_OnEnd 事件在會話被放棄或超時發生。

關于使用 Session 對象需要注意的事項 Application 對象相近,請參照前文。

會話可以通過以下三種方式啟動 :

1、一個新用戶請求訪問一個 URL,該 URL 標識了某個應用程序中的 .asp 文件,并且該應用程序的 Global.asa 文件包含 Session_OnStart 過程。

2、用戶在 Session 對象中存儲了一個值。

3、用戶請求了一個應用程序的 .asp 文件,并且該應用程序的Global.asa 文件使用 < OBJECT> 標簽創建帶有會話作用域的對象的實例。

如果用戶在指定時間內沒有請求或刷新應用程序中的任何頁,會話將自動結束。這段時間的默認值是 20 分鐘。可以通過在 Internet 服務管理器中設置“應用程序選項”屬性頁中的“會話超時”屬性改變應用程序的默認超時限制設置。應依據您的 Web 應用程序的要求和服務器的內存空間來設置此值。例如,如果您希望瀏覽您的 Web 應用程序的用戶在每一頁僅停留幾分鐘,就應該縮短會話的默認超時值。過長的會話超時值將導致打開的會話過多而耗盡您的服務器的內存資源。對于一個特定的會話,如果您想設置一個小于默認超時值的超時值,可以設置 Session 對象的 Timeout 屬性。例如,下面這段腳本將超時值設置為 5 分鐘。

< % Session.Timeout = 5 %>

當然你也可以設置一個大于默認設置的超時值,Session.Timeout 屬性決定超時值。你還可以通過 Session 對象的 Abandon 方法顯式結束一個會話。例如,在表格中提供一個“退出”按鈕,將按鈕的 ACTION 參數設置為包含下列命令的 .asp 文件的 URL。
< % Session.Abandon %>
 

------分隔線----------------------------
標簽(Tag):
------分隔線----------------------------
推薦內容
猜你感興趣
黑龙江快乐十分20190730开奖结果