asp3高级编程(十)
为了遍历内容集合,您可以使用每一个…下一个结构。集合中的每个项目可以是一个简单的变体类型变量、一个变量数组或一个对象引用。因为每个类型的值都需要不同的处理,必须对每个类型进行检查以区分其类型。
的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
最后如果
下一个
1。为内容集添加值
对收集内容增加价值的方法是使用在Global.asa网页脚本代码的方法,例如页面允许你的应用程序对象添加一个新的变量值,并建议的名称和值(可编辑的需要),如图3-15所示。
图3-15增值内容采集屏幕
点击按钮来重新加载网页,向应用程序添加价值。内容采集,并显示在列表中,如图3-16所示:
图3-16显示的内容采集内容的屏幕
添加新的内容栏代码
所有的按钮和其他HTML控件的示例Web page.action放置在一个窗体中设置当前网页的路径和加载它提交表单时,方法属性后,所以在控制值出现在请求。形式的集合。这两项技术已在前面的章节。
方法=后文>
表单上的按钮都是普通的HTML输入控件,具有相同的标题(三个空格),但名称不同:
当重新加载网页,检查要求。表收集,确定提交按钮被点击,并作出相应的处理。如果是增加价值的应用对象按钮(按钮是在HTML元素命名为cmdadd),使用下面的程序段:
如果len(要求表单(cmdadd ))然后
strvarname =请求。形式(txtvarname )
strvarvalue =请求。形式(txtvarvalue )
锁的应用。
应用(strvarname )= strvarvalue
解锁应用。
最后如果
请注意程序如何使用应用程序锁和应用程序。解锁方法确保这些值不被两个用户的并发访问混淆。如果只设置特定值,则不太可能发生。但始终使用锁和解锁方法是明智的。
删除2个内容集中的值
在页面底部的例子,有两个按钮,如图3-17所示。
图3-17显示两个按钮在网页的底部
这两个按钮允许从应用价值缺失的内容。第一个按钮从集合中移除一个指定的值,和下拉式列表框显示内容收藏价值名单。(记住,我们不能删除值从静的物体的集合,因为它们是静态的)。
该列表是通过遍历内容集(如前面所述)执行ASP网页创建的,但是,我们只收集每个项目的名称,并将它们放入列表元素中的元素中:
…
For Each objItem in Application.Contents
写objitem响应。
下一个
>
…
执行ASP代码后,浏览器中看到的结果是:
ADOConnection
variant_array
start_time
visit_count
my_new_value
(1)删除单个值
当你点击按钮删除单个值,形式再次提交相同的页面,但这个时候提交按钮命名为cmdremovethis将抬头。如果有(即点击按钮),使用列表框的值来调用应用程序的删除内容的收集方法:
如果len(要求表单(cmdremovethis ))然后
strtoremove =请求。形式(lstremove )
响应。写strtoremove =strtoremove
锁的应用。
application.contents.remove(strtoremove)
解锁应用。
最后如果
请注意,这是内容的设置方法,而不是一个应用程序对象。语法是application.contents.remove,不application.remove。
从收集内容删除start_time价值结果图3-18所示。
图3-18屏幕删除start_time值后
(2)删除所有值
如果你点击最后一个在三个submit按钮(如图3-18所示),在这个页面的代码将检测cmdremoveall点击按钮,将执行应用RemoveAll方法内容集合。
如果len(要求表单(cmdremoveall ))然后
锁的应用。
application.contents.removeall
解锁应用。
最后如果
再次,这是一个内容的采集方法,不是应用。语法是application.contents.removeall,不application.removeall。
图3-19结果删除所有值的内容(记住,不能在运行时从定静的物体移除):
3-19删除屏幕的内容集合中的所有值图
3.3.5活动在ASP会话对象
的样本页第二页例show_session.asp演示如何使用会话对象。它可以在开始菜单中打开(默认。ASP)在chapter03目录。
1。显示和更新会话集
会话对象的页面看起来类似于应用对象实例页面,你刚才用的。它穿越和静的物体设置Session对象的内容,显示其名称和对应的值(如果可能的话)。如果你比较这些值与应用对象的页面,你会看到一个不同的。
你还可以看到一些客户端的IP地址的其他值。这是当Global.asa代码是从request.servervariables集当会议开始了,页面还显示四的会话属性的值,如图3-20所示。
图3屏幕会话对象的显示属性
以下是示例中的golbal.asa文件相关的段落,这在图3-20所示的屏幕看到会话添加默认值:
…
ProgID =MSWC。博弘科技>
代码遍历集合内容和静的物体是在应用程序中使用的对象实例的代码相同,但这里是一个集会议。内容和session.staticobjects,而不是一套内容和appliction.staticobjects应用。
页面底部的按钮的功能是增加对会话内容集的值,并从会话内容集中删除值。这些按钮在应用程序对象示例页面中对应按钮的方式相同。Here is the Session.Contents collection, and the corresponding Remove and RemoveAll methods.We don't repeat the explanation.
2。终止用户会话
在会话对象页面底部的按钮,终止当前用户会话,这是通过调用Session对象的Abandon方法实现。它是在相同的形式的HTML控制,其余为cmdabandon。当形式又是网页提交的值在抬头的要求。表收集(在应用程序对象的例子中所做的那样),如果这个值被发现,用户被重定向到另一个网页:
如果len(要求表单(cmdabandon ))然后
响应清晰。
响应。重定向放弃。
反应结束
最后如果
新的页面的名字是abandon.asp,很简单,除了文本和HTML创建消息,只有下面的代码:
页面的其余部分只是一种形式包含一个提交按钮。注意如何使用的参考页面的URL的值(http_referer)从确保前一页的request.servervariables(Session对象实例加载页面)。
方法
您的会话已被终止。
当加载另一个会话时,将启动一个新会话。
ASP页面。它将包含在定义中的任何值。
此应用程序的Global.asa文件。
返回到前一页
结果如图3-21.at这一点显示,当前用户会话被终止,并且用户不能引用原始会话设置或属性的内容:
图3-21终止用户会话后屏幕
但是,请记住,所有这些都是由放弃方法调用的,即使在对方法的调用完成之后,仍然可以从会话对象获得用户的会话内容。
当然,当你回到会话对象的样本页面显示的会话内容,一个新的ASP会议将开始。它会有一个不同的start_time价值和其他默认会话值在Global.asa中执行代码创建,如图3-22所示:
图3-22重建一个屏幕用户会话后
请注意,session.sessionid属性值不change.asp试图重新分配相同的会话ID,所以不能依靠价值判断,一个新的会话已启动。
3.4总结
本章介绍了两个ASP内置对象:应用程序和会话对象,这些对象介绍ASP的应用程序和用户会话的概念(都是具体的,而不是通常的谈话的意思)。ASP应用程序允许特定的属性被分配到一个页面,以及如何使用IIS和ASP管理网页和其他组件的使用。
然而,对于ASP的应用程序和会话使用的主要原因是需要自动获取状态。换句话说,存储信息和变量引用的能力是全球或提供给所有的网页加载,用户是在一个应用程序,或是提供给指定的用户的所有网络页(一届),这使得它易于构建Web应用程序,即应用程序工作在网络,但它能完成指定的任务,就像传统的编译程序。
本章详细介绍了如何通过一些示例页面使用ASP的应用程序和会话对象,这些页面展示了这两个对象可用的所有技术。