网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 网络编程 >> ASP教程 >> 正文
最新文章
· FSO 组件asp生成html静态页面碰到缓存
· asp实现长文章自动分页插件
· 在ASP中访问和更新Cookies集合
· ASP错误提示大全
· 学习ASP的几个观点
· ASP用两级联动下拉列表来显示大类和小
· ASP取当前页面地址和参数
· ASP删除记录的同时删除相关图片
· asp将查询结果导出到excel
· ASP批量导入Excel到Access或者Sql Se
热门文章
 化境ASP无组件上传类 - upload_5xs
 一个获取ACCESS数据库表名以及表名
 asp将查询结果导出到excel
 艾恩ASP无组件上传修改版
 ASP批量导入Excel到Access或者Sql 
 ASP读取数据库的Flash+JS图片切换特
 ASP用两级联动下拉列表来显示大类和
 ASP+JS实现网页歌曲连播、点播功能
 使用ASP重启服务器
 asp批量替换access数据库中指定字段
相关文章
没有相关文章
ASP中使用集合
来源:网页制作学习园地 更新时间:2009/5/14 13:06:56 阅读次数:
字体:[ ] 我要投稿

大多数 ASP 内建对象支持集合。集合是存储字符串、数字、对象和其他值的地方。除了在存储或取出项目时集合会自动扩展与搜索外,集合与数组非常相近。与数组不同的是,集合被修改后,项目的位置将会移动。可以通过集合中项目的名称、索引或者通过在集合的所有项目中遍历访问项目。

通过名称和索引访问项目
通过使用项目名称可以访问集合中的具体项目。例如,Contents 集合拥有在 Session 对象中保存的所有变量。同样也拥有由 Server.CreateObject 创建的所有对象。假设在 Session 对象中存储了下列用户信息:

<%
Session.Contents("FirstName") = "Sam"
Session.Contents("LastName") = "Woo"
Session.Contents("Age") = 29
%>
可以使用在集合中存储项目时关联的名称访问项目。例如,下面的表达式返回字符串“Sam”:

<%= Session.Contents("FirstName") %>
通过使用与项目关联的索引或号码也可以访问项目。例如,下面的表达式检索存储在 Session 对象的第二个存储槽中的信息并且返回“Woo”:

<%= Session.Contents(2) %>
ASP 集合从 1 开始编号。当在集合中增加或删除项目时,与项目关联的索引将会改变。所以不能认为项目的索引始终不变。正如将在下面的主题中说明的那样,利用索引的访问一般用来遍历集合,或访问只读集合中的项目。

通过使用速记的名称可以访问项目。ASP 以特定的顺序搜索与对象关联的集合。如果在对象的集合中特定名称的项目只出现一次的话,可以消除该集合的名称:

<%= Session("FirstName") %>
访问存储在 Application 或 Session 对象中的项目时,消除集合名称一般是安全的。但是,对于 Request 对象,最好指定集合名称,因为该集合很可能包含重复的名称。

遍历集合
在集合的所有项目中遍历可以了解集合中存储的项目或修改项目。遍历集合时,必须提供集合名称。例如,可以使用 VBScript 中的 For...Each 语句访问存储在 Session 对象中的项目:

<%
'Declare a counter variable.
Dim Item

'For each item in the collection, display its value.
For Each Item in Session.Contents
  Response.Write Session.Contents(Item) & "<BR>"
Next
%>
可以使用 VBScript 中的 For...Next 语句遍历集合。例如,要列出上例中存储在 Session 中的三个项目,可以使用下列语句。

<%
'Declare a counter variable.
Dim Item

'Repeat the loop until the value of counter is equal to 3.
For Item = 1 to 3
  Response.Write Session.Contents(Item) & "<BR>"
Next
%>
因为一般不知道存储在集合中的项目个数,ASP 支持集合的 Count 属性,这个属性返回集合中的项目数。可以使用 Count 属性指定计数器的终值。

<%
'Declare a counter variable.
Dim Item

'Repeat this loop until the counter equals the number of items
'in the collection.
For Item = 1 to Session.Contents.Count
   Response.Write Session.Contents(Item) & "<BR>"
Next
%>
可以在脚本中使用 for 语句在集合中循环。在 JScript 的 for 语句中使用 Count 属性时,为了收到更大的效果,应该将 Count 值分配给本地变量并使用该变量设置计数器终值。这样,脚本引擎就不需要每次循环都查寻 Count 的值。下面的例子展示了这个技巧:

<%
var item, numitems;
numitems = Session.Contents.Count;
for (item = 1; item <= numitems; item++) {
  Response.Write(Session.Contents(item) + "<BR>")
}
%>
Microsoft JScript 3.0 引入了 Enumerator 对象。可以使用该对象遍历 ASP 集合。atEnd 方法指出了集合中是否还存在项目。moveNext 方法移动到集合中的下一个项目。

<%
// Create an Enumerator object
var mycoll = new Enumerator(Session.Contents);

//Iterate through the collection and display each item
while (!mycoll.atEnd()) {
  var x  = mycoll.item();
  Response.Write(Session.Contents(x) + "<BR>");
  mycoll.moveNext();
}
%>

遍历带子关键字 (Subkeys) 的集合
脚本在单一 cookie 中嵌入相关值以减少在浏览器和 Web 服务器之间传送的 cookie 数目。因此 Request 和 Response 对象的 Cookies 集合能够在单一项目中拥有多个值。这些子项目或子关键字可以被单个访问。只有 Request.Cookies 和 Response.Cookies 集合支持子关键字 (Subkeys)。Request.Cookies 只支持读操作;Response.Cookies 只支持写操作。

可以列举 Request.Cookie 集合中所有的 cookie 以及 Cookie 中所有的子关键字 (Subkeys)。但是,如果在没有子关键字 (Subkeys) 的 Cookie 上遍历子关键字,将不会产生任何结果。通过使用 .HasKeys 语法首先检查 cookie 是否含有子关键字 (Subkeys),就可以避免这种情况。下面的这个例子展示了这个技巧。

<%
'Declare counter variables
Dim Cookie, Subkey

'Display the entire cookie collection.
For Each Cookie in Request.Cookies
  Response.Write Cookie & "<BR>"
    If Request.Cookies(Cookie).HasKeys Then
      'Display the subkeys
      For Each Subkey in Request.Cookies(Cookie)
 Response.Write Subkey & "=" & Request.Cookies(Cookie)(Subkey) & "<BR>"
      Next
    Else
      Response.Write "No subkeys in this cookie <BR>"
    End If
Next   
%>

遍历对象集合
Session 和 Application 集合可以保存数量变量或者对象实例。Contents 集合拥有数量变量和通过调用 Server.CreateObject 生成的对象实例。StaticObjects 集合拥有在 Global.asa 文件中使用 HTML <OBJECT> 元素创建的对象。

在遍历包含对象的集合时,可以访问对象的标识符或对象的方法和属性。例如,假设应用程序使用一些对象创建用户帐号,而且每个对象有初始化方法,可以遍历 StaticObjects 集合来调用每个初始化方法:
<%
For Each Object in Session.StaticObjects
  Session.StaticObjects(Object).InitializeUser
Next
%>

ASP 集合有何不同之处?
尽管在本主题中讨论的 ASP 集合与 Visual Basic 的 Collection 对象非常相似,但还是有些不同。ASP 集合支持 Count 属性和 Item 方法,但不支持 Add 和 Remove 方法。

  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号