亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

解析ASP的Application和Session對象

2024-05-04 11:07:40
字體:
來源:轉載
供稿:網友
在已經發表的系列文章中我們已經討論了兩個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用戶會話時,也觸發該事件

 

  使用Application和Session的事件

  ASP的Application和Session對象體現了其他ASP內置對象所沒有的特征——事件。然而,正像在前面的對象成員表中看到的那樣,這些都是ASP會話和應用程序的工作相聯系的事件。

  1. Application和Session的事件處理器
 
  每當一個應用程序或會話啟動或結束時,ASP觸發一個事件??梢酝ㄟ^在一個特殊的文件中編寫普通的腳本代碼來檢測和應答這些事件,這個文件名為global.asa,位于一個應用程序的根目錄中(對于缺省的Web網站是/InetPub/WWWRoot目錄,或是作為一個實際應用程序定義的一個文件夾)。這個文件可以包含一個或多個HTML的<OBJECT>元素,用于創建將在該應用程序或用戶會話內使用的組件實例。

  下面的代碼是global.asa文件的一個例子。我們只關注<OBJECT>元素以及以Set關鍵字開始的那些代碼行:
 

 

<!-- Declare instance of the ASPCounter component
with application-level scope //-->
<OBJECT ID=”ASPCounter” RUNAT=”Server” SCOPE=”Application”
PROGID=”MSWC.Counters”>
</OBJECT>

<!-- Declare instance of the ASPContentLimk component
with session-level scope //-->
<OBJECT ID=”ASPContentLink” RUNAT=”Server” SCOPE=”Session”
PROGID=”MSWC.NextLink”>
</OBJECT>

<SCRIPT LANGUAGE=”VBScript” RUNAT=”Server”>

Sub Application_onStart()
 ‘Create an instance of an ADO Recordset with application-level scope
 Set Application(“ADOConnection”)= Server.CreateObject(“ADODB.Connection”)
 Dim varArray(3) ‘Create a Variant array and fill it
 VarArray(0) = “This is a”
 VarArray(1) = “Variant array”
 VarArray(2) = “stored in the”
 VarArray(3) = “Application object”
 Application(“Variant_Array”) = varArray‘Store it in the Application
 Application(“Start_Time”) = CStr(Now) ‘Store the date/time as a string
 Application(“Visit_Count”) = 0 ‘Set Counter variable to zero
End Sub

Sub Application_onEnd()
 Set Application(“ADOConnection”) = Nothing
End Sub

Sub Sesson_onStart()
 ‘Create an instance of the AdRotator component with session-level scope
 Set Session(“ASPAdRotator”) = Server.CreateObject(“MSWC.AdRotator”)
 Dim varArray(3) ‘Create a Variant arry and fill it
 VarArray(0) = “This is a”
 VarArray(1) = “Variant array”
 VarArray(2) = “stored in the”
 VarArray(3) = “Session object”
 Session(“Variant_Array”) = varArray ‘Store it in the Session
 Session(“Start_Time”) = CStr(Now) ‘Store the date/time as a string
 
 ‘We can access the contents of the Request and Response in a Session_onStart
 ‘event handler for the page that initiated the session. This is the *only*
 ‘place that the ASP page context is available like this.
 ‘as an example, we can get the IP address of the user:
 Session(“Your_IP_Address”) = Request.ServerVariables(“REMOTE_ADDR”)
 Application.Lock
 intVisits = Application(“Visit_Count”) +1
 Application(“Visit_Count”) = intVisits
 Application.Unlock
End Sub

Sub Session_onEnd()
 Set Session(“ASPAdRotator”) = Nothing
End Sub
</SCRIPT>

  因為這個global.asa文件用于本章中的示例頁面,所以將需要將該文件放到Web網站的根目錄中,或者放到已配置為一個虛擬應用程序的目錄中,并且在該目錄中包含有其他示例文件。

  讀取和存儲值

  注意上面的例子怎樣讀取Application和Session的變量,與在Request和Response對象的集合中所采取的方式相同。設置這些變量的值:

Application(“variable_name”) = variable_value
Application(“variable_name”) = variant_array_variable_name
Set Application(“variable_name”) = object_reference

  獲取這些變量的值:

variable_value = Application(“variable_name”)
variant_array_variable = Application(“variable_name”)
Set object_reference = Application(“variable_name”)

  當然,對于Session對象可采取同樣的方法。

  可以看到,當從一個Session事件處理器訪問時,怎樣“鎖定”(Lock)和“解鎖”(unlock)該Application對象;當從一個ASP網頁訪問時,需要進行相同的處理。用Application事件內的代碼訪問Application對象中的值時,不要求這么做。這是因為在任何應用程序中只有一個Application對象的實例,并且其事件處理器的代碼只在沒有活動的用戶會話時進行。

  也可以看到一個基本的用戶會話計數器是如何實現的。這里使用一個應用程序級的變量Visit_count,當新的會話啟動時它就自動增加。 一般也不限制簡單地把值保存到Application或Session對象中。例如,Web開發者的Web站點在http://webdev.wrox.co.uk上,有相應的一個global.asa文件,當一個新的會話啟動時該文件就在服務器上的數據庫中寫入相應的條目,數據細節從Request.ServerVariables集合中獲取。這提供了一個基本的方法統計訪問者的數量,并收集訪問者的一些基本信息。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人国产精品| 亚洲最大成人免费视频| 91免费精品国偷自产在线| 亚洲成人久久久久| 国产91九色视频| 国产日韩欧美在线观看| 亚洲理论电影网| 国模吧一区二区| 国产精品免费在线免费| 欧美成人黑人xx视频免费观看| 国模精品视频一区二区三区| 国产精品日韩一区| 国产精品678| 国产亚洲一区二区在线| 欧美性一区二区三区| 久久好看免费视频| 久久久视频免费观看| 91香蕉嫩草神马影院在线观看| 91欧美视频网站| 狠狠操狠狠色综合网| 久久九九有精品国产23| 日韩精品极品视频免费观看| 日韩av影片在线观看| 美日韩精品免费观看视频| 大伊人狠狠躁夜夜躁av一区| xxxxx91麻豆| 欧美日本高清一区| 宅男66日本亚洲欧美视频| 国产欧美日韩精品在线观看| 日韩亚洲欧美中文高清在线| 欧美性猛交xxxx免费看久久久| 亚洲人成伊人成综合网久久久| 高跟丝袜一区二区三区| 亚洲人在线视频| 中文字幕久久精品| 久久国产精品久久久久久久久久| 97超碰色婷婷| 亚洲欧美制服丝袜| 国产这里只有精品| 亚洲美女黄色片| 中文字幕日韩欧美在线视频| 不卡毛片在线看| 久久综合电影一区| 国产精品视频免费在线| 日本欧美黄网站| 国产激情综合五月久久| 日韩在线免费高清视频| 在线成人一区二区| 国产免费久久av| 国产精品久久久久秋霞鲁丝| 91国内产香蕉| 成人福利网站在线观看11| 欧美激情第6页| 97超级碰碰人国产在线观看| 97精品视频在线播放| 日韩av片永久免费网站| 国产91免费看片| 亚洲精品乱码久久久久久按摩观| 国产精品9999| 欧美精品在线第一页| 亚洲女人天堂视频| 一区二区三区视频在线| 日韩性xxxx爱| 亚洲韩国欧洲国产日产av| 国产aⅴ夜夜欢一区二区三区| 正在播放国产一区| 日韩av在线免费| 国产视频精品xxxx| 日韩电影网在线| 7m第一福利500精品视频| 亚洲第一黄色网| 欧美精品激情在线观看| 2021国产精品视频| 国产精品第七十二页| 久久免费成人精品视频| 久久色在线播放| 中文字幕在线精品| 国产精品日本精品| 国产成人拍精品视频午夜网站| 日韩在线观看免费网站| 亚洲最大的网站| 久久av红桃一区二区小说| 亚洲电影免费观看高清完整版| 亚洲a一级视频| 欧美成人免费在线视频| 在线观看成人黄色| 欧美激情视频网站| 91午夜理伦私人影院| 日韩欧美国产视频| 国产欧美日韩中文字幕在线| 精品视频久久久久久| 国产成人亚洲综合青青| 国产精品久久激情| 国产精品视频一| 国产日韩在线播放| 欧美中文字幕在线播放| 国产成人aa精品一区在线播放| 国产最新精品视频| 97热在线精品视频在线观看| 欧美日韩在线视频一区二区| 国产成人精品久久二区二区91| 亚洲va欧美va国产综合久久| 91精品在线影院| 日韩中文字幕久久| 欧美成人精品在线播放| 久久在线视频在线| 日韩人体视频一二区| 91po在线观看91精品国产性色| 在线丨暗呦小u女国产精品| 精品成人69xx.xyz| 亚洲成人三级在线| 亚洲字幕一区二区| 欧美性猛交xxxx| 欧美精品激情视频| 欧美国产日本高清在线| 成人免费午夜电影| 91麻豆国产语对白在线观看| 亚洲第一中文字幕在线观看| 亚洲丝袜av一区| 欧美国产日韩精品| 久久精品视频在线观看| 欧美日韩国产二区| 国产成+人+综合+亚洲欧美丁香花| 国产精品一区二区女厕厕| 欧美激情视频一区| 亚洲国产精品99| 日本精品性网站在线观看| 成人黄色免费看| 亚洲jizzjizz日本少妇| 在线视频欧美日韩精品| 国内免费久久久久久久久久久| 亚洲精品一区二区三区不| 亚洲欧美在线播放| 亚洲精品美女在线观看播放| 日韩av免费看网站| 亚洲午夜未满十八勿入免费观看全集| 欧美激情成人在线视频| 亚洲国产精品专区久久| 久久精品久久久久久国产 免费| 日韩精品极品在线观看播放免费视频| 久久99国产精品久久久久久久久| 欧美成人精品不卡视频在线观看| 国产精品私拍pans大尺度在线| 国产高清视频一区三区| 国产精品视频在线播放| 日韩精品极品视频免费观看| 国产日韩精品在线播放| 亚洲国产精品久久久久秋霞蜜臀| 亚洲第一精品电影| 日韩小视频在线| 亚洲性猛交xxxxwww| 日本国产精品视频| 亚洲国产三级网| 国产成人精品网站| 超碰日本道色综合久久综合| 7777免费精品视频| 一道本无吗dⅴd在线播放一区| 九九热这里只有精品免费看| 亚洲伊人一本大道中文字幕| 美女扒开尿口让男人操亚洲视频网站| 国产欧美一区二区三区久久人妖| 欧美激情精品久久久久久蜜臀| 欧美成人免费在线视频| 欧美成人国产va精品日本一级|