在已經發表的系列文章中我們已經討論了兩個ASP對象:Application對象和Session對象,因此能夠訪問Application對象和Session對象提供的集合、方法、屬性和事件。本節將從程式設計的角度對這兩個對象進行研究。
· 當載入ASP DLL並響應對一個ASP網頁的第一個請求時,建立Application對象。該對象提供一個儲存場所,用來儲存對於所有訪問者開啟的所有網頁都可用的變數和對象。
· 當訪問者首次從網站請求一個ASP頁面時,為他建立一個Session對象,並保持有效直到預設的逾時周期(或由指令碼確定的逾時周期)。該對象提供一個儲存場所,用來儲存僅僅對該訪問者在會話的活動期間開啟的網頁可用的變數和對象。
關係
1、ASP的Application對象成員概述
本節說明Application對象的集合、方法和事件(Application對象沒有屬性)。在下一節對Session對象(具有屬性)進行同樣的說明。然後將繼續探討使用這些對象所完成的任務,更詳細地說明每個對象的各成員如何進行工作。
1. Application對象的集合
Application對象提供了兩個集合,可以用來訪問儲存於全域應用程式空間中的變數和對象。集合及說明如下所示:
表Application對象的集合及說明
| 集 合 |
說 明 |
| Contents |
沒有使用<OBJECT>元素定義的儲存於Application對象中的所有變數(及它們的值)的一個集合。包括Variant數組和Variant類型對象執行個體的引用 |
| StaticObjects |
使用<OBJECT>元素定義的儲存於Application對象中的所有變數(及它們的值)的一個集合 |
| |
|
2. Application對象的方法
Application對象的方法允許刪除全域應用程式空間中的值,控制在該空間內對變數的並發訪問。方法及說明如下表所示:
表Application對象的方法及說明
| 方 法 |
說 明 |
| Contents.Remove(“variable_name”) |
從Application.Content集合中刪除一個名為variable_name的變數 |
| Contents.RemoveAll() |
從Application.Content集合中刪除所有變數 |
| Lock() |
鎖定Application對象,使得只有當前的ASP頁面對內容能夠進行訪問。用於確保通過允許兩個使用者同時地讀取和修改該值的方法而進行的並行作業不會破壞內容 |
| Unlock() |
解除對在Application對象上的ASP網頁的鎖定 |
注意,在運行期間不能從Application.StaticObjects集合中刪除變數。
3. Application對象的事件
Application對象提供了在它啟動和結束時觸發的兩個事件,如下表所示:
表Application對象的事件及說明
| 事 件 |
說 明 |
| OnStart |
當ASP啟動時觸發,在使用者請求的網頁執行之前和任何使用者建立Session對象之前。用於初始設定變數、建立對象或運行其他代碼 |
| OnEnd |
當ASP應用程式結束時觸發。在最後一個使用者會話已經結束並且該會話的OnEnd事件中的所有代碼已經執行之後發生。其結束時,應用程式中存在的所有變數被取消 |
ASP的Session對象成員概述
本節概述Session對象的所有成員。
1. Session對象的集合
Session對象提供了兩個集合,可以用來訪問儲存於使用者的局部會話空間中的變數和對象。這些集合及說明如下表所示:
表 Session對象的集合及說明
| 集 合 |
說 明 |
| Contents |
儲存於這個特定Session對象中的所有變數和其值的一個集合,並且這些變數和值沒有使用<OBJECT>元素進行定義。包括Variant數組和Variant類型對象執行個體的引用 |
| StaticObjects |
通過使用<OBJECT>元素定義的、儲存於這個Session對象中的所有變數的一個集合 |
2. Session對象的特性
Session對象提供了四個屬性。這些屬性及說明如下表所示:
表3-7 Session對象的屬性及說明
| 屬 性 |
說 明 |
| CodePage |
讀/寫。整型。定義用於在瀏覽器中顯示頁內容的字碼頁(Code Page)。字碼頁是字元集的數字值,不同的語言和場所可能使用不同的字碼頁。例如,ANSI字碼頁1252用於美國英語和大多數歐洲語言。字碼頁932用於日文字 |
| LCID |
讀/寫。整型。定義發送給瀏覽器的頁面地區標識(LCID)。LCID是唯一地標識地區的一個國際標準縮寫,例如,2057定義當前地區的貨幣符號是’£’。LCID也可用於FormatCurrency等語句中,只要其中有一個可選的LCID參數。LCID也可在ASP處理指示<%…%>中設定,並優先於會話的LCID屬性中的設定。本章後面提供一個ASP處理指示的列表 |
| SessionID |
唯讀。長整型。返回這個會話的工作階段識別項,建立會話時,該標識符由伺服器產生。只在父Application對象的生存期內是唯一的,因此當一個新的應用程式啟動時可重新使用 |
| Timeout |
讀/寫。整型。為這個會話定義以分鐘為單位的逾時周期。如果使用者在逾時周期內沒有進行重新整理或請求一個網頁,該會話結束。在各網頁中根據需要可以修改。預設值是10min。在使用率高的網站上該時間應更短 |
3. Session對象的方法
Session對象允許從使用者級的會話空間刪除指定值,並根據需要終止會話。Seesion對象的方法及說明如下表所示:
表Session對象的方法及說明
| 方 法 |
說 明 |
| Contents.Remove(“variable_name”) |
從Session.Content集合中刪除一個名為variable_name的變數 |
| Contents.RemoveAll() |
從Session.Content集合中刪除所有變數 |
| Abandon() |
當網頁的執行完成時,結束目前使用者會話並撤消當前Session對象。但即使在調用該方法以後,仍可訪問該頁中的當前會話的變數。當使用者請求下一個頁面時將啟動一個新的會話,並建立一個新的Session對象(如果存在的話) 注意,在運行期間不能從Session.StaticObjects集合中刪除變數。 |
4. Session對象的事件
Session對象提供了在啟動和結束時觸發的兩個事件,如表3-9所示:
表3-9 Session對象的事件及說明
| 事 件 |
說 明 |
| OnStart |
當ASP使用者會話啟動時觸發,在使用者請求的網頁執行之前。用於初始設定變數、建立對象或運行其他代碼。 |
| OnEnd |
當ASP使用者會話結束時觸發。從使用者對應用程式的最後一個頁面請求開始,如果已經超出預定的會話逾時周期則觸發該事件。當會話結束時,取消該會話中的所有變數。在代碼中使用Abandon方法結束ASP使用者會話時,也觸發該事件 |