asp3高级编程(九)
在会话和应用程序对象中,还没有讨论创建和使用变体数组存储值的方法,这里讨论的是一种非常有用的技术。
存储二进制序列的数组行在内存中的一个连续区域中指定。为了安排变量,您需要指向第一个条目并给出大小和结构的信息,脚本引擎可以完成剩下的事情。
可以在变量中创建一维、二维或多维数组,然后将数组分配给应用程序层或用户会话层的变量,整个数组可用于相应的位置。
昏暗的vararray(3)
VarArray(0),这是一个
VarArray(1)=变量数组
VarArray(2)=存储在
VarArray(3)=会话对象
会话(variant_array)= vararray
何时和何时3。应用程序和会话开始和结束
在介绍ASP应用程序以及会话如何工作时,已经提到了这个内容:
当第一个用户请求应用程序范围,即Web站点的默认根目录,或者当用户定义的虚拟应用程序的ASP页面位于网站的子目录中时,应用程序就启动了。
当任何用户在默认应用程序或虚拟应用程序中首次请求ASP页面时,它将启动会话(如果还没有激活会话)。
当用户在会话指定的超时时间内不下载ASP网页时,会话结束。它可以在属性对话框中的每个应用程序中单独设置,也可以在Active Directory的IIS中设置:在IIS元数据库中对默认值进行部分修改。
应用程序在应用程序中的最后一个活动会话结束后立即结束。
4.asp处理指令
正如你可以看到,在第一章中,你可以添加一个处理指令的一个ASP网页。处理指令可以包含多个条目根据需要,可以用在语句和指令表3-10所示的关键词。
表3-10 ASP指令和指令的关键词
教学关键词
解释
语言= language_name
为Web页面设置默认脚本语言,例如:
| EnableSessionState =真实的谎言
当设置为true时,它阻止会话的cookie被发送到浏览器,因此它不会创建新的会话对象,并且任何现有会话的内容将不再可用。
代码= code_page
设置页面的代码页,例如
LCID = locale_identifier
设置Web页面的位置标识符,例如
交易= transaction_type
它指示Web文件在一个事务环境中运行:
需要:如果有可用的事务,脚本将在其中运行;如果没有可用的事务,则启动一个新事务。
requires_new:脚本将初始化一个新的交易。
支持:如果事务可用,则脚本将在其中运行;它不会启动新事务。
not_supported:脚本将不会运行任何现有的交易和没有初始化一个新的交易。
在第十八章中详细描述了事务。
只有一个处理指令可以在网页上被允许,并且它应该放在第一行。多个这样的条目可以包含在处理指令中,但是它必须在等号的两端用空格和空格隔开,例如:
3.3.4活性的ASP应用程序对象
我们提供了一些简单的网页,证明过程中用到的ASP应用程序和会话对象。为了能够正常运行,我们必须把它们放在服务器上的虚拟应用程序,并把Global.asa文件提供了在应用程序的根目录。最简单的方法是把Global.asa文件默认的Web站点的根目录(默认是C: / / inetpub wwwroot)。
这是重命名现有的Global.asa文件,可以恢复后的一个好方法。
所有本书的实例,可以从我们的网站上获得的,并在该实例的chapter03子目录,所有本章的示例页,其余的也可以。
在chapter03子目录default.asp页面是一个简单的菜单,它允许应用程序和会话样本网页运行,且运行屏幕图3-13所示。
图3-13 default.asp运行屏幕
1。显示应用程序集合的内容。
点击第一个链接打开应用程序对象的页面命名show_application.asp.it显示的虚拟应用程序的当前应用程序对象的内容,如图3-14所示:
图3-14内容屏幕应用程序对象
请注意,aspcounter的静的物体对象集的成员(由元素定义),但其余的部分(由服务器。CreateObject实例化)是内容的成员集。
你可以看到使用global.asa网页把价值在这些藏品的价值,这是见过的:
ProgID = MSWC。计数器>
…
…
(1)遍历内容集的代码
为了遍历内容集合,您可以使用每一个…下一个结构。集合中的每个项目可以是一个简单的变体类型变量、一个变量数组或一个对象引用。因为每个类型的值都需要不同的处理,必须对每个类型进行检查以区分其类型。
的VarType函数可以使用VBscript来做这项工作,采用和ISArray函数代替:
在应用程序的每个objitem含量。
如果IsObject(application.contents(objitem))然后
响应。写对象的引用:objitem
ElseIf IsArray(application.contents(objitem))然后
响应。写的内容是:objitem阵列:
vararray =应用内容(objitem)。
注:以下仅适用于一维数组
对于日本盈联= 0 UBound(vararray)
响应。写指数(日本盈联)= _
VarArray(日本盈联)
下一个
其他的
响应。写变量:=objitem_
应用内容(objitem)。
最后如果
下一个
请注意程序是如何从应用程序对象检索数组的:
vararray =应用内容(objitem)。
该函数可以用来找到数组的大小(元素个数),可以作为一个终止条件遍历性:
对于日本盈联= 0 UBound(vararray)
这个例子是一维数组,只显示这样一个数组的内容:
对于日本盈联= 0 UBound(vararray)
intnumberofdimensions = UBound(vararray,1)
对于intdimension = 0 intnumberofdimensions
响应。写指数(日本盈联)= _
VarArray(日本盈联,intdimension)
下一个
写响应。
下一个
(2)遍历的静的物体代码集
静的物体的集合包含所有对象的引用,使用元素声明的global.asa.since每个项目都是一个对象变量,数组可以遍历简单代码。我们把输出对象的名称(在ID属性的原始定义):
每个objitem在application.staticobjects
如果IsObject(application.staticobjects(objitem))然后
响应。写元素:id =objitem
最后如果
下一个