• <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高級編程(109)

        ASP 3.0高級編程(109)

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

        5.3.2 Dictionary對象示例
               本書提供了一系列示例文件可用來試驗?zāi)_本運行時間庫的各種屬性。
               本章代碼的缺省頁面提供了一系列可使用的VBScript示例鏈接。有些示例對JScript同樣有效。這些示例存放在Chapter05目錄下相應(yīng)的子目錄里,顯示的界面如圖5-2所示:

        圖5-2  ASP腳本運行期對象示例頁面
               要查看Dictionary對象的運行,在菜單頁面點擊第一個鏈接,打開名叫show_dictionary.asp的頁面。這個頁面顯示了我們提供的Dictionary對象的內(nèi)容,允許試驗其屬性和方法。屏幕如圖5-3所示:

        圖5-3  Dictionary對象的屬性和方法
        1.  Dictionary的global.asa文件
        隨Dictionary對象示例頁面提供的文件之一是global.asa。它創(chuàng)建并預(yù)先填充了一個會話層作用域的Dictionary對象,因此其內(nèi)容在頁面請求之間不會丟失。一般說來(考慮到可擴(kuò)展性),這不是一個理想的做法。在這個例子里,可以看到Dictionary的屬性和方法的效果。
        如果在自己的服務(wù)器上下載并安裝示例,必須創(chuàng)建一個基于此global.asa文件的虛擬應(yīng)用程序;蛘邔⑵鋬(nèi)容添加到缺省站點的根文件夾中的global.asa文件里。在第3章講述了如何用向?qū)?chuàng)建虛擬應(yīng)用程序。然而對于本示例,創(chuàng)建一個虛擬應(yīng)用程序最簡單的方法是在Chapter05示例文件夾內(nèi)右擊dictionary子文件夾,在Properties對話框的Home Directory選項卡里,點擊Create按鈕,如圖5-4所示:

        圖5-4  創(chuàng)建虛擬應(yīng)用程序
        在這個global.asa文件里,代碼使用<OBJECT>元素創(chuàng)建一個會話層作用域的Scripting.Dictionary對象實例。然后在Session_onStart事件處理程序里將一系列值用Add方法放入Dictionary中,并將對Dictionary對象的引用指定給ASP會話變量MyDictionary:
        <OBJECT ID="objBookList" RUNAT="SERVER" SCOPE="SESSION"
                PROGID="Scripting.Dictionary">
        </OBJECT>

        <SCRIPT LANGUAGE="VBScript" RUNAT="SERVER">

        Sub Session_onStart()
          objBookList.Add "2610", "Professional Active Server Pages 3.0"
          objBookList.Add "1274", "Instant JavaScript"
          objBookList.Add "2882", "Beginning ASP Components"
          objBookList.Add "1797", "Professional ASP Techniques"
          objBookList.Add "1835", "AD0 2.0 Programmer's Reference"
          Set Session("MyDictionary") = objBookList
        End Sub

        </SCRIPT>
        2.  Dictionary示例頁面
        在“Scripting.Dictionary Object”主頁面里,首要的任務(wù)是得到一個會話層作用域的Dictionary對象實例的引用。注意,這個引用是一個對象變量,因此必須在VBScript里使用Set關(guān)鍵字。
        然后,檢查一下是否得到了一個對象(這是個好習(xí)慣),如果沒有正確地建立包含global.asa文件的虛擬應(yīng)用程序,檢查一下問題出在哪里。你將看到我們自己的消息代替了ASP的錯誤消息(但是注意,對于這一操作必須關(guān)閉缺省的錯誤處理)。
        <%

        on error resume next  ' turn off error handling to test if object exists

        'retrieve Dictionary object from user's session
        Set objMyData = Session("MyDictionary")

        If IsObject(objMyData) Then  'found Dictionary object in Session

        %>

        <P><DIV CLASS="subhead">Iterating the Dictionary with Arrays</DIV>
        <%
        arrKeysArray = objMyData.Keys           'get all the keys into an array
        arrItemsArray = objMyData.Items         'get all the items into an array
        For intLoop = 0 To objMyData.Count - 1   'iterate through the array
            Response.Write "Key: <B>" & arrKeysArray(intLoop) & "</B> &nbsp; Value: <B>" _
                         & arrItemsArray(intLoop)& "</B><BR>"
        Next
        %>

        … Other code and controls go here …

          <%
        Else

          'could not find Dictionary object in the session
          Response.Write "Dictionary object not available in global.asa for session"

        End If
        %>
        顯示在頁面上的Dictionary內(nèi)容列表是使用Dictionary對象的Key和Items方法創(chuàng)建的兩個數(shù)組,可使用前面的代碼遍歷它們。
        3.  Dictionary頁面控件
        在Dictionary的內(nèi)容列表下是一系列的HTML控件,可用于設(shè)定Dictionary對象的某些屬性和執(zhí)行各種方法。這些控件全部在一個<FORM>內(nèi),其ACTION屬性值是本頁面,所以窗體的內(nèi)容提交回本頁面。在前面的章節(jié)的示例里使用了同樣的技術(shù)。
        在<FORM>段中,改變屬性或執(zhí)行一個方法是通過一個按鈕(沒有標(biāo)題)實現(xiàn)的。用于屬性和方法的值放入按鈕旁的文本框或列表框中。
        該頁的第一個按鈕用于設(shè)定Dictionary里的條目的Key屬性。這里使用了一個下拉列表,可以選擇一個已經(jīng)存在的Key值。下面的代碼創(chuàng)建了頁面內(nèi)該部分的控件。為了填充列表,使用了另外一個遍歷Dictionary對象的技術(shù),即For Each … Next語句。代碼如下:

        <FORM ACTION="<% = Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">

          <P><DIV CLASS="subhead">The Dictionary Properties</DIV>
          <INPUT TYPE="SUBMIT" NAME="cmdChangeKey" VALUE="&nbsp;&nbsp;&nbsp;">
          &nbsp; Dictionary.Key ("
          <SELECT NAME="lstChangeKey" SIZE="1">
          <%
          For Each objItem in objMyData
            Response.Write "<OPTION>" & objItem
          Next
          %>
          </SELECT> ") = "
          <INPUT TYPE="TEXT" NAME="txtChangeKey" SIZE="15" VALUE="New Key Name"> "
          <BR>
          …
          … Other controls go here …
          …
        </FORM>

        4.  使用Dictionary的屬性和方法
        在“Scription.Dictionary Object”頁面,點擊用來檢查并改變條目的Key屬性的按鈕,如圖5-5所示:

        圖5-5  使用Dictionary的Key屬性
        把窗體再次提交給頁面。該頁面包含一個腳本段,檢查被點擊的按鈕的值。它通過在Resquest.Form集合里查找按鈕的名字來斷定單擊的是哪個按鈕。如果發(fā)現(xiàn)一個對應(yīng)于cmdChangKey的值,則從列表中或文本框中得到相應(yīng)的值并用來改變Key屬性:

        'look for a command sent from the FORM section buttons
        If Len(Request.Form("cmdChangeKey")) Then
            strKeyName = Request.Form("lstChangeKey")           'Existing key from list box
            strNewKey = Request.Form("txtChangeKey")            'New key value from text box
            objMyData.Key(strKeyName) = strNewKey               'Set key property of this item
        End If

        頁面重新載入后,在Dictionary的內(nèi)容列表里能看到相應(yīng)的結(jié)果,如圖5-6所示:

        圖5-6  頁面重載后的結(jié)果
        頁面的其余代碼用來設(shè)定一個條目的Item屬性,或者執(zhí)行Dictionary對象的方法。下面是這些操作的代碼,每段代碼與演示Key屬性的代碼非常類似。每次都將結(jié)果顯示在Dictionary的內(nèi)容列表中:

        If Len(Request.Form("cmdChangeItem")) Then
            strKeyName = Request.Form("lstChangeItem")   'Existing key from list box
            strNewValue = Request.Form("txtChangeItem")   'New item value from text box
            objMyData.Item(strKeyName) = strNewValue     'Set the Item property
        End If

        If Len(Request.Form("cmdAdd")) Then
        strKeyName = Request.Form("txtAddKey")         'New key value from text box
            strItemValue = Request.Form("txtAddItem")        'New item value from text box
            objMyData.Add strKeyName, strItemValue          'Execute the Add method
        End If

        If Len(Request.Form("cmdRemove")) Then
            strKeyName = Request.Form("lstRemove")         'Existion key from list box
            objMyData.Remove strKeyName                        'Execute the Remove method
        End If

        If Len(Request.Form("cmdRemoveAll")) Then
            objMyData.RemoveAll                                      'Execute the RemoveAll method
        End If

        例如,如果現(xiàn)在點擊Add方法的按鈕,在Dictionary的內(nèi)容列表里將增加一個新的條目,如圖5-7所示:

        圖5-7  增加一個新方法
        結(jié)果如圖5-8所示:

        圖5-8  Add方法的結(jié)果
        可以在這個頁面中試驗Dictionary對象的屬性和方法,你將會發(fā)現(xiàn)什么因素及在什么環(huán)境下能引起Dictionary對象錯誤。例如,嘗試用與已經(jīng)存在的一個條目相同的鍵值增加一個條目,看看會出現(xiàn)什么結(jié)果。

        5.4 Scripting.FileSystemObject對象
               FileSystemObject對象提供對計算機文件系統(tǒng)的訪問,它允許我們在代碼內(nèi)操作文本文件、文件夾及驅(qū)動器。它是腳本運行期庫提供的對象之一,對于服務(wù)器ASP頁面內(nèi)的VBScript和JScript都有效。如果頁面的擴(kuò)展名為.hta(表示它們是HTA的一部分),它也可用在客戶端的IE 5中。本節(jié)僅討論在服務(wù)器上的ASP腳本如何使用FileSystemObject對象。
               超級文本應(yīng)用程序(HTA)由指定的“受信任的”頁面組成,在頁面的<HEAD>段里包含<HTA: APPLICATION>元素。例如:
            <HTA:APPLICATION ID=”objMyApp” APPLICATIONNAME=”myApp”>
        這些頁面可以使用客戶端腳本引擎中的一些不常用特性,這些特性中有FileSystemObject對象和TextStream對象。關(guān)于超級文本應(yīng)用程序的更多信息,請訪問Microsoft Workshop網(wǎng)站。
        可以使用下面的程序創(chuàng)建一個FileSystemObject對象實例:
        ‘ In VBScript:
        Dim objMyFSO
        Set objMyFSO = Server.CreateObject(“Scripting.FileSystemObject”)

        // In JScript:
        var objMyFSO = Server.CreateObject(‘Scripting.FileSystemObject’);

        <!-- Server-side with an OBJECT element -->
        <OBJECT RUNAT=”SERVER” SCOPE=”PAGE” ID=”objFSO”
                      PROGID=”Scripting.FileSystemObject”>
        </OBJECT>
        在ASP頁面里,增加一個對于FileSystemObject類型庫的引用是非常有用的。這允許使用它直接定義的內(nèi)置常數(shù),不用像過去那樣用數(shù)字等效表達(dá)式代替。整個腳本運行期庫的類型庫可以增加到任何ASP頁面中,代碼如下:
        <!-- METADATA TYPE=”typelib” FILE=”C:\WinNT\System32\scrrun.dll” -->如果你是在另一個目錄下安裝Windows,必須編輯FILE的屬性值。


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

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 精品亚洲麻豆1区2区3区| 亚洲精品无码乱码成人| 亚洲天天做日日做天天欢毛片| 一级毛片a免费播放王色电影| www亚洲精品少妇裸乳一区二区| 亚洲欧美日韩一区二区三区在线| 性短视频在线观看免费不卡流畅| 亚洲国产91在线| 青青青国产免费一夜七次郎| 亚洲av无码成人精品国产| 免费一级大黄特色大片| 一级中文字幕免费乱码专区| 久久精品亚洲福利| 三年片在线观看免费西瓜视频| 亚洲AV成人片色在线观看| 99热精品在线免费观看| 91亚洲国产成人久久精品| 久久综合AV免费观看| 色婷婷亚洲一区二区三区| 伊在人亚洲香蕉精品区麻豆| 一级特黄a大片免费| 亚洲精品国产成人专区| 18勿入网站免费永久| 国产亚洲一卡2卡3卡4卡新区| 中文字幕精品亚洲无线码一区| 日韩成人免费视频| 亚洲看片无码在线视频| 亚洲成人国产精品| 小草在线看片免费人成视久网| 亚洲精品美女网站| 久久亚洲国产精品五月天婷| 91精品免费高清在线| 亚洲人成无码网站在线观看| 亚洲热线99精品视频| 美女裸身网站免费看免费网站| 亚洲av成人无码网站… | 国产美女做a免费视频软件| 一级做a毛片免费视频| 亚洲依依成人精品| 久久久久亚洲?V成人无码| 亚洲综合免费视频|