麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > ASP > 正文

ASP中遍歷和操作Application對(duì)象的集合

2024-05-04 11:07:40
字體:
供稿:網(wǎng)友
為了能夠正常使用,必須把它們放到服務(wù)器上的一個(gè)虛擬應(yīng)用程序內(nèi),并且把所提供的global.asa文件放到該應(yīng)用程序的根目錄中。最簡(jiǎn)單的辦法是把global.asa文件放到缺省Web網(wǎng)站的根目錄(缺省情況下是C:/InetPub/WWWRoot)中。

  對(duì)任何已有的global.asa文件重命名是一個(gè)好辦法,可以在以后對(duì)該文件進(jìn)行恢復(fù)。

  1. 顯示Application集合的內(nèi)容

  ASPCounter對(duì)象是StaticObjects集合的一個(gè)成員(通過<OBJECT>元素進(jìn)行定義),但是其余部份(由Server.CreateObject實(shí)例化)是Contents集合的成員。

  可以看到使用global.asa例子網(wǎng)頁放到這些集合中的值,這在前面已經(jīng)看到:

<!-- Declare instance of the ASPCounter component with
application-level scope //-->
<OBJECT ID=”ASPCounter” RUNAT=”Server” SCOPE=”Applicatoin”
PROGID=”MSWC.Counters”>
</OBJECT>
...
...
<SCRIPT LANGUAGE=”VBScript” RUNAT=”Server”>
Sub Application_onStart()
‘Create an instance of an ADO Connection 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 thd Application
Application(“Start_Time”) = CStr(Now) ‘Store the date/time as a string
Application(“Visit_Count”) = 0 ‘Set counter variable to zero
End Sub
...
...
</SCRIPT>

  (1) 遍歷Contents集合的代碼

  為了遍歷Contents集合,可使用一個(gè)For Each ... Next結(jié)構(gòu)。集合中的每一項(xiàng)可以是一個(gè)簡(jiǎn)單的Variant類型變量、一個(gè)Variant數(shù)組或者一個(gè)對(duì)象的引用。因?yàn)樾枰獙?duì)每種類型的值進(jìn)行不同的處理,所以就不得不對(duì)每一個(gè)進(jìn)行檢查來判別其類型。

  在VBScript中可使用VarType函數(shù)完成這個(gè)工作。這里使用IsObject和IsArray函數(shù)代替:

For Each objItem in Application.Contents
If IsObject(Application.Contents(objItem)) Then
Response.Write “Object reference: ‘” & objItem & “’

ElseIf IsArray(Application.Contents(objItem)) Then
Response.Write “Array: ‘” & objItem & “’ contents are:

VarArray = Application.Contents(objItem)
‘Note: the following only works with a one-dimensional array
For intLoop = 0 To UBound(varArray)
Response.Write “ Index(“ & intLoop & “) = “ & _
VarArray(intLoop) & “

Next
Else
Response.Write “Variable: ‘” & objItem & “’ = “ _
& Application.Contents(objItem) & “

End If
Next

  注意程序如何從Application對(duì)象檢索該數(shù)組。將其分配給一個(gè)局部(Variant)變量,使用下面的語句:

varArray = Application.Contents(objItem)

  使用UBound函數(shù)可以查找出數(shù)組的大小(元素的數(shù)量),這個(gè)值可以作為遍歷的終止條件:

For intLoop = 0 UBound(varArray)

  這個(gè)例子是一維數(shù)組,并將只顯示這樣的一個(gè)數(shù)組的內(nèi)容。可根據(jù)需要編輯代碼以處理多維數(shù)組,例如:

For intLoop = 0 To UBound(varArray)
IntNumberOfDimensions = UBound(varArray, 1)
For intDimension = 0 To intNumberOfDimensions
Response.Write “ Index(“ & intLoop & “) = “ _
& varArray(intLoop, intDimension)
Next
Response.Write “”
Next

  (2) 遍歷StaticObjects集合的代碼

  StaticObjects集合包含了所有在global.asa中使用<OBJECT>元素聲明的對(duì)象引用。因?yàn)槊總€(gè)條目都是一個(gè)對(duì)象變量,可用簡(jiǎn)單些的代碼對(duì)這個(gè)數(shù)組進(jìn)行遍歷。我們將輸出對(duì)象的名字(在ID屬性中原有的定義):

For Each objItem in Application.StaticObjects
If IsObject(Application.StaticObjects(objItem)) Then
Response.Write “<OBJECT> element: ID=’” & objItem & “’

End If
Next

 

  2、對(duì)集合的操作

  1) 增加值到Contents集合

  增加值到Contents集合的方法,與在global.asa網(wǎng)頁的腳本代碼中使用過的方法相同。允許把一個(gè)新的Variant值增加到Application對(duì)象中,并已有建議的名字和值(可根據(jù)需要進(jìn)行編輯),單擊按鈕,重新載入這個(gè)網(wǎng)頁,把值增加到Application.Contents集合中,并且在列表中顯示。

  增加新的Contents條目的代碼

  所有的按鈕和其他HTML控件放置在示例網(wǎng)頁中的一個(gè)窗體上。ACTION設(shè)置了當(dāng)前網(wǎng)頁的路徑,提交該窗體時(shí),重新裝入。METHOD屬性為“POST”,所以控件中的值出現(xiàn)在Request.Form集合中。在以前的章節(jié)中采用過這兩種技術(shù):
 

 

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

  該窗體上的按鈕都是普通的HTML INPUT控件,具有相同的標(biāo)題(三個(gè)空格)但名字不同。例如,創(chuàng)建第一個(gè)按鈕(把值增加到Application對(duì)象中)的代碼是:

<INPUT TYPE=”SUBMIT” NAME=”cmdAdd” VALUE=” ”>

  重新載入該網(wǎng)頁時(shí),檢查Request.Form集合,判定單擊的是哪個(gè)SUBMIT按鈕,并進(jìn)行相應(yīng)的處理。如果是增加一個(gè)值到Application對(duì)象的按鈕(該按鈕在HTML的<INPUT>元素中被命名為cmdAdd),使用下面的程序段:

If Len(Request.Form("cmdAdd")) Then
strVarName = Request.Form("txtVarName")
strVarValue = Request.Form("txtVarValue")
Application.Lock
Application("strVarName") = strVarValue
Application.Unlock
End If

  注意程序如何使用Application.Lock和Application.Unlock方法,確保這些值不會(huì)因兩個(gè)用戶并發(fā)地訪問而產(chǎn)生混亂。如果只是對(duì)一個(gè)特定的值進(jìn)行設(shè)置,一般不可能發(fā)生這種情況。但一直使用Lock和Unlock方法是明智的。

  2) Contents集合中刪除值

  通過遍歷Contents集合(如前面我們所做的)執(zhí)行ASP網(wǎng)頁時(shí),創(chuàng)建該列表。但是,我們僅收集每項(xiàng)的名字并把它們放到<SELECT>列表元素內(nèi)的<OPTION>元素中:


<SELECT NAME=”lstRemove” SIZE=”1”>
<%
For Each objItem in Application.Contents
Response.Write “<OPTION>” & objItem & “</OPTION>”
Next
&>
</SELECT>

  該ASP代碼執(zhí)行以后,在瀏覽器中看到的結(jié)果是:

<SELECT NAME=”lstRemove” SIZE=”1”>
<OPTION>ADOConnection</OPTION>
<OPTION>Variant_Array</OPTION>
<OPTION>Start_Time</OPTION>
<OPTION>Visit_Count</OPTION>
<OPTION>My_New_Value</OPTION>
</SELECT>

  (1) 刪除單個(gè)值

  當(dāng)單擊按鈕刪除單個(gè)值時(shí),該窗體再次提交給相同的網(wǎng)頁,但是這一次將設(shè)立一個(gè)為cmdRemoveThis的SUBMIT按鈕,然后調(diào)用Application.Contents集合的Remove方法:

If Len(Request.Form("cmdRemoveThis")) Then
strToRemove = Request.Form("lstRemove")
Response.Write "strToRemove = " & strToRemove
Application.Lock
Application.Contents.Remove(strToRemove)
Application.Unlock
End If

  注意這是Contents集合的一個(gè)方法,而不是Application對(duì)象的。語法是Application.Contents.Remove,而不是Application.Remove。
從Contents集合中刪除Start_Time值的結(jié)果。

  (2) 刪除所有的值

  如果單擊三個(gè)SUBMIT類型按鈕中的最后一個(gè),該網(wǎng)頁中的代碼將檢測(cè)到單擊的按鈕為cmdRemoveAll,將執(zhí)行 Application.Contents集合的RemoveAll方法:

If Len(Request.Form("cmdRemoveAll")) Then
Application.Lock
Application.Contents.RemoveAll
Application.Unlock
End If

  再次提醒,這是Contents集合的一個(gè)方法,而不是Application。語法是Application.Contents.RemoveAll,而不是Application.RemoveAll。

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 九九精品在线播放 | 精品国产一区二区三区久久久蜜月 | 欧美综合在线观看视频 | 热99热 | 国产毛片在线看 | 日韩黄色片免费看 | 一边吃奶一边摸下娇喘 | 免费观看高清视频网站 | 精品亚洲一区二区 | 成人在线激情视频 | a网站在线| 九九热视频免费在线观看 | 中文字幕网在线 | 久久亚洲线观看视频 | 天天操天天骑 | 2021免费日韩视频网 | 成人在线视频精品 | 中国hd高清xxxxvideo | 高清一区二区在线观看 | av在线观| 国产一区二区三区四 | 精品国产精品久久 | 一区二区三区手机在线观看 | 中文字幕网在线 | 成人三级电影网址 | 九九热精品视频在线免费观看 | 亚洲第一成人在线观看 | 免费一区二区三区 | 国产无遮挡一区二区三区毛片日本 | 国产欧美在线观看不卡一 | 92看片淫黄大片一级 | 日本高清无遮挡 | 黄色特级片黄色特级片 | 一区二区久久精品66国产精品 | 黄视频免费在线观看 | 久久99精品视频在线观看 | 91久久精品一 | 一边吃奶一边摸下娇喘 | 超碰97国产在线 | 精品国产一区二区三区久久久 | 成人午夜免费看 |