• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        ASP 3.0高級編程(8) 

        ASP 3.0高級編程(8) 

        更新時間:2022-05-09 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        3.3 ASP的Application對象和Session對象
               本章已經(jīng)討論了兩個ASP對象:Application對象和Session對象,因此能夠訪問Application對象和Session對象提供的集合、方法、屬性和事件。本節(jié)將從程序設(shè)計的角度對這兩個對象進(jìn)行研究。 
               · 當(dāng)載入ASP DLL并響應(yīng)對一個ASP網(wǎng)頁的第一個請求時,創(chuàng)建 Application對象。該對象提供一個存儲場所,用來存儲對于所有訪問者打開的所有網(wǎng)頁都可用的變量和對象。
               · 當(dāng)訪問者首次從站點請求一個ASP頁面時,為他創(chuàng)建一個Session對象,并保持有效直到缺省的超時周期(或由腳本確定的超時周期)。該對象提供一個存儲場所,用來存儲僅僅對該訪問者在會話的活動期間打開的網(wǎng)頁可用的變量和對象。
               圖3-12(即圖1-20)給出了用戶的請求和服務(wù)器的響應(yīng)在會話中的分布情況。所有的會話都在ASP應(yīng)用程序中。

        圖3-12  ASP對象關(guān)系

        3.3.1  ASP的Application對象成員概述
               本節(jié)說明Application對象的集合、方法和事件(Application對象沒有屬性)。在下一節(jié)對Session對象(具有屬性)進(jìn)行同樣的說明。然后將繼續(xù)探討使用這些對象所完成的任務(wù),更詳細(xì)地說明每個對象的各成員如何進(jìn)行工作。
        1.  Application對象的集合
        Application對象提供了兩個集合,可以用來訪問存儲于全局應(yīng)用程序空間中的變量和對象。集合及說明如表3-3所示: 
        表3-3  Application對象的集合及說明
        集 合 
        說 明 

        Contents 
        沒有使用<OBJECT>元素定義的存儲于Application對象中的所有變量(及它們的值)的一個集合。包括Variant數(shù)組和Variant類型對象實例的引用 

        StaticObjects 
        使用<OBJECT>元素定義的存儲于Application對象中的所有變量(及它們的值)的一個集合 

        2.  Application對象的方法
        Application對象的方法允許刪除全局應(yīng)用程序空間中的值,控制在該空間內(nèi)對變量的并發(fā)訪問。方法及說明如表3-4所示:
        表3-4  Application對象的方法及說明
        方 法 
        說 明 

        Contents.Remove(“variable_name”) 
        從Application.Content集合中刪除一個名為variable_name的變量 

        Contents.RemoveAll() 
        從Application.Content集合中刪除所有變量 

        Lock() 
        鎖定Application對象,使得只有當(dāng)前的ASP頁面對內(nèi)容能夠進(jìn)行訪問。用于確保通過允許兩個用戶同時地讀取和修改該值的方法而進(jìn)行的并發(fā)操作不會破壞內(nèi)容 

        Unlock() 
        解除對在Application對象上的ASP網(wǎng)頁的鎖定 

        注意,在運行期間不能從Application.StaticObjects集合中刪除變量。
        3.  Application對象的事件
        Application對象提供了在它啟動和結(jié)束時觸發(fā)的兩個事件,如表3-5所示:
        表3-5  Application對象的事件及說明
        事 件 
        說 明 

        OnStart 
        當(dāng)ASP啟動時觸發(fā),在用戶請求的網(wǎng)頁執(zhí)行之前和任何用戶創(chuàng)建Session對象之前。用于初始化變量、創(chuàng)建對象或運行其他代碼 

        OnEnd 
        當(dāng)ASP應(yīng)用程序結(jié)束時觸發(fā)。在最后一個用戶會話已經(jīng)結(jié)束并且該會話的OnEnd事件中的所有代碼已經(jīng)執(zhí)行之后發(fā)生。其結(jié)束時,應(yīng)用程序中存在的所有變量被取消 


        3.3.2  ASP的Session對象成員概述
        本節(jié)概述Session對象的所有成員。
        1.  Session對象的集合
        Session對象提供了兩個集合,可以用來訪問存儲于用戶的局部會話空間中的變量和對象。這些集合及說明如表3-6所示: 
        表3-6  Session對象的集合及說明
        集 合 
        說 明 

        Contents 
        存儲于這個特定Session對象中的所有變量和其值的一個集合,并且這些變量和值沒有使用<OBJECT>元素進(jìn)行定義。包括Variant數(shù)組和Variant類型對象實例的引用 

        StaticObjects 
        通過使用<OBJECT>元素定義的、存儲于這個Session對象中的所有變量的一個集合 

        2.  Session對象的特性
        Session對象提供了四個屬性。這些屬性及說明如表3-7所示:
        表3-7  Session對象的屬性及說明
        屬 性 
        說 明 

        CodePage 
        讀/寫。整型。定義用于在瀏覽器中顯示頁內(nèi)容的代碼頁(Code Page)。代碼頁是字符集的數(shù)字值,不同的語言和場所可能使用不同的代碼頁。例如,ANSI代碼頁1252用于美國英語和大多數(shù)歐洲語言。代碼頁932用于日文字 

        LCID 
        讀/寫。整型。定義發(fā)送給瀏覽器的頁面地區(qū)標(biāo)識(LCID)。LCID是唯一地標(biāo)識地區(qū)的一個國際標(biāo)準(zhǔn)縮寫,例如,2057定義當(dāng)前地區(qū)的貨幣符號是’£’。LCID也可用于FormatCurrency等語句中,只要其中有一個可選的LCID參數(shù)。LCID 也可在ASP處理指令<%…%>中設(shè)置,并優(yōu)先于會話的LCID屬性中的設(shè)置。本章后面提供一個ASP處理指令的列表  

        SessionID 
        只讀。長整型。返回這個會話的會話標(biāo)識符,創(chuàng)建會話時,該標(biāo)識符由服務(wù)器產(chǎn)生。只在父Application對象的生存期內(nèi)是唯一的,因此當(dāng)一個新的應(yīng)用程序啟動時可重新使用 

        Timeout 
        讀/寫。整型。為這個會話定義以分鐘為單位的超時周期。如果用戶在超時周期內(nèi)沒有進(jìn)行刷新或請求一個網(wǎng)頁,該會話結(jié)束。在各網(wǎng)頁中根據(jù)需要可以修改。缺省值是10min。在使用率高的站點上該時間應(yīng)更短 

        3.  Session對象的方法
        Session對象允許從用戶級的會話空間刪除指定值,并根據(jù)需要終止會話。Seesion對象的方法及說明如表3-8所示:
        表3-8  Session對象的方法及說明
        方 法 
        說 明 

        Contents.Remove(“variable_name”) 
        從Session.Content集合中刪除一個名為variable_name的變量 

        Contents.RemoveAll() 
        從Session.Content集合中刪除所有變量 

        Abandon() 
        當(dāng)網(wǎng)頁的執(zhí)行完成時,結(jié)束當(dāng)前用戶會話并撤消當(dāng)前Session對象。但即使在調(diào)用該方法以后,仍可訪問該頁中的當(dāng)前會話的變量。當(dāng)用戶請求下一個頁面時將啟動一個新的會話,并建立一個新的Session對象(如果存在的話)  

               注意,在運行期間不能從Session.StaticObjects集合中刪除變量。
        4.  Session對象的事件
        Session對象提供了在啟動和結(jié)束時觸發(fā)的兩個事件,如表3-9所示:
        表3-9  Session對象的事件及說明
        事 件 
        說 明 

        OnStart 
        當(dāng)ASP用戶會話啟動時觸發(fā),在用戶請求的網(wǎng)頁執(zhí)行之前。用于初始化變量、創(chuàng)建對象或運行其他代碼。  

        OnEnd 
        當(dāng)ASP用戶會話結(jié)束時觸發(fā)。從用戶對應(yīng)用程序的最后一個頁面請求開始,如果已經(jīng)超出預(yù)定的會話超時周期則觸發(fā)該事件。當(dāng)會話結(jié)束時,取消該會話中的所有變量。在代碼中使用Abandon方法結(jié)束ASP用戶會話時,也觸發(fā)該事件  


        3.3.3 使用Application和Session的事件
            ASP的Application和Session對象體現(xiàn)了其他ASP內(nèi)置對象所沒有的特征——事件。然而,正像在前面的對象成員表中看到的那樣,這些都是ASP會話和應(yīng)用程序的工作相聯(lián)系的事件。
        1.  Application和Session的事件處理器
        每當(dāng)一個應(yīng)用程序或會話啟動或結(jié)束時,ASP觸發(fā)一個事件。可以通過在一個特殊的文件中編寫普通的腳本代碼來檢測和應(yīng)答這些事件,這個文件名為global.asa,位于一個應(yīng)用程序的根目錄中(對于缺省的Web網(wǎng)站是\InetPub\WWWRoot目錄,或是作為一個實際應(yīng)用程序定義的一個文件夾)。這個文件可以包含一個或多個HTML的<OBJECT>元素,用于創(chuàng)建將在該應(yīng)用程序或用戶會話內(nèi)使用的組件實例。
        在第4章中將詳細(xì)地介紹如何創(chuàng)建組件實例。下面的代碼是global.asa文件的一個例子。我們只關(guān)注<OBJECT>元素以及以Set關(guān)鍵字開始的那些代碼行:
        <!-- 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.
                ‘a(chǎn)s 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網(wǎng)站的根目錄中,或者放到已配置為一個虛擬應(yīng)用程序的目錄中,并且在該目錄中包含有其他示例文件。
            讀取和存儲值
            注意上面的例子怎樣讀取Application和Session的變量,與在Request和Response對象的集合中所采取的方式相同。設(shè)置這些變量的值:
            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”)
            當(dāng)然,對于Session對象可采取同樣的方法。
            可以看到,當(dāng)從一個Session事件處理器訪問時,怎樣“鎖定”(Lock)和“解鎖”(unlock)該Application對象;當(dāng)從一個ASP網(wǎng)頁訪問時,需要進(jìn)行相同的處理。用Application事件內(nèi)的代碼訪問Application對象中的值時,不要求這么做。這是因為在任何應(yīng)用程序中只有一個Application對象的實例,并且其事件處理器的代碼只在沒有活動的用戶會話時進(jìn)行。
            也可以看到一個基本的用戶會話計數(shù)器是如何實現(xiàn)的。這里使用一個應(yīng)用程序級的變量 Visit_count,當(dāng)新的會話啟動時它就自動增加。    一般也不限制簡單地把值保存到Application 或Session對象中。例如,Web開發(fā)者的Web站點在http://webdev.wrox.co.uk上,有相應(yīng)的一個global.asa文件,當(dāng)一個新的會話啟動時該文件就在服務(wù)器上的數(shù)據(jù)庫中寫入相應(yīng)的條目,數(shù)據(jù)細(xì)節(jié)從Request.ServerVariables集合中獲取。這提供了一個基本的方法統(tǒng)計訪問者的數(shù)量,并收集訪問者的一些基本信息。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 国产精品99久久免费| 无码国产精品一区二区免费模式| 51精品视频免费国产专区| 中文国产成人精品久久亚洲精品AⅤ无码精品| 99在线精品视频观看免费| 久久精品蜜芽亚洲国产AV| 日本黄页网址在线看免费不卡| 午夜爱爱免费视频| 亚洲av日韩综合一区二区三区| 日本特黄特色aa大片免费| 免费手机在线看片| 丁香五月亚洲综合深深爱| 日本高清不卡aⅴ免费网站| 国产成A人亚洲精V品无码性色| 久久久久久成人毛片免费看| 亚洲一区二区成人| 黄瓜视频影院在线观看免费| 亚洲AV无码无限在线观看不卡| 免费观看理论片毛片| 特级av毛片免费观看| 亚洲欧洲美洲无码精品VA| 暖暖日本免费中文字幕| 亚洲综合一区二区| 日本人护士免费xxxx视频| h视频在线免费观看| 亚洲成熟xxxxx电影| 毛片免费观看网址| 一级午夜免费视频| 亚洲高清视频在线播放| 在线日韩av永久免费观看| 国产99精品一区二区三区免费| 久久亚洲国产精品成人AV秋霞| 蜜臀91精品国产免费观看| eeuss影院www天堂免费| 亚洲美女视频网址| 人人狠狠综合久久亚洲高清| 亚洲欧洲av综合色无码| 国外亚洲成AV人片在线观看| 成人免费在线看片| 四虎影视在线看免费观看| 免费国产成人高清视频网站|