您的位置:首页精文荟萃软件资讯 → ASP 3.0高级编程(九)

ASP 3.0高级编程(九)

时间:2004/10/7 19:15:00来源:本站整理作者:蓝点我要评论(3)


            
             
              
             
            

               
               

            



            2.  创建Variant数组
在Session和Application对象中创建和使用一个Variant数组来存储值的方法目前尚未讨论,在这里作为一个非常有用的技术进行讨论。正如已经看到的那样,一个Variant数据类型可以包含一个数组,而不仅仅是一个值。
一个数组只是在内存的一个连续区域中以指定的次序存储二进制值的一个长行。要安排Variant,需要指向首项,并给出有关大小和结构的信息,脚本引擎可以做余下的事情。
可在一个Variant变量中创建一维、二维或多维数组,然后把该数组分配给一个应用程序层或用户会话层的变量,并保证整个数组可在相应的地方使用。下面代码演示了一个简单的一维数组的使用技术:
Dim varArray(3)
varArray(0) = “This is a”
varArray(1) = “Variant array”
varArray(2) = “stored in the”
varArray(3) = “Session object”
Session(“Variant_Array”) = varArray
3.  应用程序和会话在何时启动和结束
在介绍ASP应用程序和会话如何进行工作时提到过这个内容。以最基本的术语概述如下:
· 当第一个用户请求应用程序作用域内(即Web网站的缺省根目录内),或者在该网站的一个子目录内的一个用户定义的虚拟应用程序的一个ASP网页时,启动该应用程序。在任何用户会话启动之前发生。
· 当任意用户第一次请求在缺省应用程序或一个虚拟应用程序内的一个ASP网页时,启动一个会话(如果还没一个活动的会话)。
· 当用户在会话指定的超时周期内没有下载一个ASP网页时,会话结束。超时时间可以在脚本代码中使用Session.Timeout属性进行设置,可在Properties对话框中对各个应用程序单独设置,或者通过Active Directory的IIS:部分修改IIS元数据库中的缺省值进行设置。调用Session.Abandon方法的一个网页完成执行以后,会话也会结束。
· 在一个应用程序中的最后一个活动会话结束以后,该应用程序立即结束。
4.  ASP处理指令
正如在第1章中所看到的,可以把一条处理指令增加到一个ASP网页。处理指令可以根据需要包含一个以上的条目。可以在语句中使用的关键字及其说明如表3-10所示:
表3-10  ASP指令关键字及说明




















指令关键字

说 明

LANGUAGE=”language_name

设置该网页的缺省的脚本语言,如:<% @ LANGUAGE=”VBScript” %>

ENABLESESSIONSTATE=”True”|”Fasle

当设置为“True”时,防止一个会话的cookie发送到浏览器,因此将不会创建新的Session对象,任何现有会话的内容将不再可用

CODEPAGE=”code_page

设置该网页的代码页,如<% @CODEPAGE=”1252” %>

LCID=”locale_identifier

设置该网页的位置标识符,如<% @LCID=”2057” %>

TRANSACTION=”transaction_type

指明该网页文件在一个事务环境下运行。有效值是:
“Required”:如果已有可用的事务,脚本将在其中运行;如果没有可用的事务,启动一个新的事务。
“Requires_New”:脚本将初始化一个新的事务。
“Supported”:如果已有可用的事务,脚本将在其中运行;而且不启动一个新的事务。
“Not_Supported”:脚本将不运行于任何已有的事务中,并且不初始化一个新的事务。
在第18章中详细介绍事务。

在一个网页上只能允许有一条处理指令,并且应该放在第一行。在处理指令中可以包含不止一个这样的条目,但必须用空格进行分隔,等号两端不能有空格,例如:
<% @LANGUAGE=”VBScript” CODEPAGE=”1252” LCID=”2057” %>

3.3.4 活动的ASP Application对象
    我们提供一些简单的网页,这些网页示范了使用过程中的ASP Application和Session对象。为了能够正常使用,必须把它们放到服务器上的一个虚拟应用程序内,并且把所提供的global.asa文件放到该应用程序的根目录中。最简单的办法是把global.asa文件放到缺省Web网站的根目录(缺省情况下是C:/InetPub/WWWRoot)中。
    对任何已有的global.asa文件重命名是一个好办法,可以在以后对该文件进行恢复。
    本书的所有例子文件都可以从我们的Web网站上得到,在例子的Chapter03子目录中还有本章的所有其余示例网页。
    在Chapter03子目录中,Default.asp网页是一个简单的菜单,该菜单允许运行Application和Session示例网页,运行屏幕如图3-13所示:

图3-13  Default.asp运行屏幕
1.  显示Application集合的内容
单击第一个链接,打开名为show_application.asp的Application对象示例页面。它显示了虚拟应用程序当前的Application对象的内容,如图3-14所示:

图3-14  Application对象的内容屏幕
注意到ASPCounter对象是StaticObjects集合的一个成员(通过元素进行定义),但是其余部份(由Server.CreateObject实例化)是Contents集合的成员。
可以看到使用global.asa例子网页放到这些集合中的值,这在前面已经看到:

            PROGID=”MSWC.Counters”>

...
...

(1)  遍历Contents集合的代码
为了遍历Contents集合,可使用一个For Each ... Next结构。集合中的每一项可以是一个简单的Variant类型变量、一个Variant数组或者一个对象的引用。因为需要对每种类型的值进行不同的处理,所以就不得不对每一个进行检查来判别其类型。
在VBScript中可使用VarType函数完成这个工作。这里使用IsObject和IsArray函数代替:
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对象检索该数组。将其分配给一个局部(Variant)变量,使用下面的语句:
varArray = Application.Contents(objItem)
使用UBound函数可以查找出数组的大小(元素的数量),这个值可以作为遍历的终止条件:
For intLoop = 0 UBound(varArray)
这个例子是一维数组,并将只显示这样的一个数组的内容。可根据需要编辑代码以处理多维数组,例如:
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中使用元素声明的对象引用。因为每个条目都是一个对象变量,可用简单些的代码对这个数组进行遍历。我们将输出对象的名字(在ID属性中原有的定义):
For Each objItem in Application.StaticObjects
    If IsObject(Application.StaticObjects(objItem)) Then
        Response.Write “ element: ID=’” & objItem & “’

    End If
Next

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本