asp基础实用教程_第1页
asp基础实用教程_第2页
asp基础实用教程_第3页
asp基础实用教程_第4页
asp基础实用教程_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASPActive Server Pages(ASP)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的Web服务器应用程序。使用ASP可以组合HTML页、脚本命令和ActiveX组件以创建交互的Web页和基于Web的功能强大的应用程序。ASP应用程序很容易开发和修改。HTML编写人员如果您是位HTML编写人员,您将发现ASP脚本提供了创建交互页的简便方法。如果您曾想从

2、HTML表格中收集数据,或用顾客的姓名个人化HTML文件,或根据浏览器的不同使用不同的特性,您会发现ASP提供了一个出色的解决方案。以前,要想从HTML表格中收集数据,就不得不学习一门编程语言来创建一个CGI应用程序。现在,您只要将一些简单的指令嵌入到您的HTML文件中,就可以从表格中收集数据并进行分析。您再不必学习完整的编程语言或者单独编译程序来创建交互页。 随着不断掌握使用ASP和脚本语言的技巧,您可以创建更复杂的脚本。对于ASP,您可以便捷地使用ActiveX组件来执行复杂的任务,比如连接数据库以存储和检索信息。对ASP脚本的逐步介绍,请参阅ASP教程。然后您可以再回到这些主题中了解关于

3、编写ASP脚本的详细信息。有经验的脚本编写人员 如果您已经掌握一门脚本语言,如 VBScript、JavaScript或PERL,而且您已经了解使用ASP的方法。只要安装了符合ActiveX脚本标准的相应脚本引擎,就可以在ASP页中使用任何一种脚本语言。ASP带有Microsoft Visual Basic Scripting Edition(VBScript)和Microsoft JScript的脚本引擎,这样您可以立即开始编辑脚本。PERL、REXX和Python 的ActiveX脚本引擎可以从第三方开发人员处获得。Web开发人员如果您已经掌握了一门编程语言,如Visual Basic,您

4、将发现ASP是快速创建Web应用程序的一个非常灵活的方法。通过向HTML中添加脚本命令,您能够创建应用程序的HTML接口。通过创建自己的ActiveX组件,可以将应用程序中的商业逻辑封装到能够从脚本、其他组件或从其他程序中调用的模块。使用ASP进行计算的Web可转化为有形的利益,它使Web供应商能够提供交互的商业应用而不仅仅是发布内容。例如,旅行社能够比公布航空时刻表做得更多;用ASP脚本可以让客户察看现有的航班、比较费用并预定座位。 包含在Windows NT Option pack中的Microsoft Transaction Server(MTS)可以降低在服务器上构造程序的复杂性和费用

5、。MTS可以解决开发那些保密性强的、可分级的以及可靠的Web应用程序的复杂性问题。 Active Server Pages模型浏览器从Web服务器上请求.asp文件时,ASP脚本开始运行。然后Web服务器调用ASP,ASP全面读取请求的文件,执行所有脚本命令,并将Web页传送给浏览器。由于脚本在服务器上而不是在客户端运行,传送到浏览器上的Web页是在Web服务器上生成的。所以不必担心浏览器能否处理脚本:Web服务器已经完成了所有脚本的处理,并将标准的HTML传输到浏览器。由于只有脚本的结果返回到浏览器,所以服务器端脚本不易复制。用户看不到创建他们正在浏览的页的脚本命令。二、ASP的新功能Act

6、iveServerPages在功能方面有所增强,更易于开发应用程序。Microsoft脚本调试程序。您可以使用脚本调试程序调试.asp文件。请参阅调试ASP脚本。事务性脚本。ASP页和页中使用的对象可以运行于事务环境之下。在页上的全部工作只有两种结果:提交或终止。事务可以保护应用程序免于因失败而导致数据丢失。请参阅创建事务性脚本。管理工具。许多应用程序设置可在Internet服务管理器上进行,这是Internet Information Server和Personal Web Server(在WindowsNT Workstation上)的管理工具。请参阅配置ASP应用程序。隔离ASP应用程序

7、。您可以隔离ASP应用程序以便它们能在Web服务器上独立的内存空间内运行。万一某个应用程序失败时,可以保护其他应用程序和Web服务器。它也使您可以在不停止Web服务器的情况下,停止一个应用程序或从内存中卸载其组件。请参阅隔离应用程序.文件上载。浏览器可以通过Posting Acceptor应用程序将文件上载到Web服务器。可以编写ASP脚本来发送带有从Posting Acceptor传来的信息的email,如每一个上载文件的位置和名称。请参阅Posting Accepter文档(在Microsoft Site Server Express的目录表中)。新的ASP组件。ASP提供了新的基础组件。

8、有关概述请参阅ActiveX组件。应用程序根目录的改变。ASP应用程序的根目录在您的Web站点上可以是物理目录。以前,根目录必须映射为虚拟目录。现在可以用Internet服务管理器指示ASP应用程序的根目录。请参阅创建应用程序。必须将.asp文件置于应用程序树中,Web服务器才能检测文件的改变并且自动重装它们。支持Internet Explorer4.0通道和Web预测。当ASP要发送包含通道定义命令的文件时,它会自动告诉Internet Explorer4.0。使用ASP很容易就能生成通道定义(.cdf)文件。支持HTTP1.1协议。Internet Information Server和P

9、ersonal Web Server支持HTTP1.1协议。在响应支持HTTP1.1的浏览器(例如Internet Explorer4.0)时,这一支持可使ASP利用新协议的高效率。例如,当向浏览器返回页的时候,ASP使用大块转换编码以提高网络效率。三、创建ASP页Active Server Pages(ASP)文件是以.asp为扩展名的文本文件,这个文本文件可以包括下列部分的任意组合:文本HTML标记ASP脚本命令创建.asp文件非常容易。如果要在HTML文件中添加脚本,只需将该文件的扩展名.htm或.html替换为.asp就可以了。要使.asp文件可用于Web用户,请将这个新文件保存在We

10、b站点上的目录中(请确定启用了该目录的脚本和执行权限)。使用浏览器查看该文件时,可以看到ASP处理并返回了HTML页。现在可以在.asp文件中添加脚本命令了。注意因为.asp文件需要额外的处理,请不要将所有的HTML页都转换为ASP页。应该只将包含脚本命令的文件转换为.asp文件。.asp和.htm文件可以放置在相同的目录中。使用任何的文本编辑器都可以创建.asp文件。使用那些带有ASP增强支持的编辑器将更能提高效率,如MicrosoftVisual InterDev。如果您从未使用过HTML,请考虑先使用Microsoft FrontPage。使用FrontPage创建文档和格式化文本就象使

11、用文字处理工具一样简单。接下来还可以使用Insert Script命令在FrontPage创建的HTML页中加入简单的ASP命令。加入Script命令脚本是一系列的命令和指令。与HTML标签不同,script命令指示Web服务器执行操作,而HTML标签只是简单地格式化文本或读取图形、视频及音频文件。Script 命令可以在变量中存储用户名,在返回到浏览器的页中显示用户名或将用户名存储在数据库中。脚本命令通过定界符与文本区别开来。定界符是字符或一串字符,它标志单元开始或结束。HTML使用定界符棗小于号()括入HTML标签。 ASP使用定界符 括入脚本命令。您可以在定界符中括入任何命令,只要这些命

12、令对正在使用的脚本语言有效。下面的例子展示了包含脚本命令的简单的HTML页:This page was last refreshed on .VBScript函数Now返回当前的日期和时间。Web服务器处理该页时,会使用当前的日期和时间替换并且将该页返回到浏览器:This page was last refreshed on 8/1/97 2:20:00 PM.定界符括入的命令被称为主脚本命令。这些命令被主脚本语言处理。在脚本定界符中使用的任何命令都必须对主脚本语言有效。默认情况下,主脚本语言是VBScript。要设置另一种语言。请参阅使用脚本语言。如果您已经熟悉了客户端脚本编写(编写在浏览器

13、上运行的脚本),请注意不要用HTML元素括入表达式。在编写服务器端脚本时,只用元素在主脚本语言外的其他语言中定义过程。关于详细信息,请参阅使用脚本语言。合成HTML和脚本命令在ASP定界符中可以包含任何在主脚本语言中合法的语句、表达式、过程或操作符。在 VBScript 和其他脚本语言中,语句是语法完整的单元,该单元表达某项活动、声明或定义。下面的条件语句 If.Then.Else 是一条常见的VBScript语句。= #12:00:00 AM# And Time 这条语句将值Good Morning!或值Hello!存储在变量greeting中。命令将当前的变量值发送到浏览器中。这样,在(W

14、eb服务器所在时区的)正午12点前浏览该脚本的用户将看到:Good Morning!在正午12点或以后浏览此脚本的用户将看到:Hello!在语句的不同部分之间可以加入HTML文本。例如,下面的脚本在If.Then.Else语句中加入了HTML,产生了与上面脚本同样的结果:= #12:00:00 AM# And Time Good Morning!Hello!如果条件为真,也就是说,如果时间为午夜、午夜以后或者中午以前,那么Web服务器将跟随条件(Good Morning)的HTML发送到浏览器;否则,将跟随Else的HTML(Hello)发送到浏览器。这种混合HTML和脚本命令的方式可以方便地

15、将 If.Then.Else语句变换为几行HTML文本。如果要在Web页上显示多处问候,前一个例子更为有用。只需要设置一次变量,就可以重复显示。最好从脚本命令中将HTML文本返回到浏览器,而不用脚本命令散布HTML文本。要将文本返回到浏览器,请使用ASP的内建对象Response。下面的例子可以产生与前一个脚本同样的结果:= #12:00:00 AM# And Time Response.Write将跟随的文本发送到浏览器。要动态构造返回浏览器的文本,请在语句中使用Response.Write。例如,可能要构造包含一些变量值的字符串。在使用组件和对象以及向浏览器传送内容中将了解到更多有关Res

16、ponse对象和一般对象的信息。现在,先了解将脚本命令插入到HTML页中的几种方法。在ASP定界符中可以包含用默认主脚本语言编写的过程。详细信息,请参阅使用脚本语言。如果正在使用JScript命令,可以插入花括号指示语句块直接进入ASP命令,而不用考虑它是否夹杂着HTML标签和文本。例如:This is the text version of a page.This is the multimedia version of a page.使用ASP指令 ASP提供了您使用的脚本语言以外的指令。这是一些输出指令和处理指令。ASP的输出指令显示表达式的值。这个输出指令等同于使用Response.W

17、rite显示信息。例如,输出表达式 将文字climbing(变量当前的值)传送到浏览器。ASP处理指令 为ASP提供处理 .asp 文件所需的信息。例如,下面的指令将VBScript设为该页的主脚本语言: 处理指令必须出现在.asp文件的第一行。不要将处理指令放在包含#include语句的文件中。必须在at标记()和关键字之间加入一个空格。处理指令有下列关键字: LANGUAGE 关键字设置页的脚本语言;请参阅使用脚本语言。 CODEPAGE 关键字设置页的代码页(字符编码);请参阅使用国际站点。 LCID 关键字设置页的现场标识符;请参阅使用国际站点。 TRANSACTION 关键字指定将在

18、事务处理环境下运行的页;请参阅创建事务处理脚本。 ENABLESESSIONSTATE 关键字指定ASP页是否使用会话状态;请参阅管理会话。 可以在单个指令中包含多个关键字;关键字/值对之间必须由空格分开。不要在等号(=)左右加入空格。下面的例子中设置了脚本语言和代码页:在脚本中的空白字符如果您的主脚本语言是VBScript或者JScript,ASP从指令中删除空白字符。使用其他脚本语言时,ASP保留空白字符,这样那些需要使用位置和缩进的语言,如Python就可以被正确解释了。空白字符包括空格、制表符、回车和换行符。使用VBScript和JScript时,在打开定界符之后和关闭定界符之前使用空

19、白字符更容易阅读命令。下面的命令都是合法的:ASP将一个语句的关闭定界符与下一个语句的打开定界符之间的空白字符删除。要保留两个语句间的空白字符,比如在句子中显示变量值的时候,请使用HTML不间断空符( )。例如:My response is to say  . 四、使用脚本语言脚本语言是介于HTML和Java、C+和Visual Basic之类的编程语言之间的语言。HTML通常用于格式化文本和链接网页。编程语言通常用于向计算机发送一系列复杂指令。脚本语言也可用来向计算机发送指令,但它们的语法和规则没有可编译的编程语言那样严格和复杂。脚本语言主要用于格式化文本和使用以编程语言

20、编写的已编译好的组件。Active Server Pages使Web开发商用多种脚本语言编写完整的过程成为可能。事实上,在单个.asp文件内部就可以使用多种脚本语言。另外,由于脚本是在服务器端读取和处理的,所以请求.asp文件的客户端浏览器并不需要支持脚本。您可以使用任意一种其相应的脚本引擎已安装在Web服务器上的脚本语言。脚本引擎是处理用某种语言书写的命令的程序。Active Server Pages带有两个脚本引擎:Microsoft Visual Basic Scripting Edition(VBScript)和Microsoft JScript。您也可以安装和使用其他的脚本语言引擎,

21、例如 REXX和Perl。如果您已经是Visual Basic程序员,就可以马上使用VBScript,它是Visual Basic的子集。如果您是Java、C或C+程序员,您会发现JScript语法对您来说是熟悉的,虽然JScript与Java或C并没有联系。如果您熟悉其他脚本语言,例如REXX或Perl,您可获取和安装相应的脚本引擎,这样就可以使用您熟悉的脚本语言了。Active Server Pages是ActiveX脚本的宿主。要使用一种语言,必须安装脚本引擎,该引擎必须遵循ActiveX脚本标准并作为一个COM(组件对象模型)对象驻留在Web服务器上。设置主脚本语言ASP主脚本语言是用

22、来处理在分界符 内部的命令的语言。默认时,主脚本语言是VBScript。您可以将任何一种具有脚本引擎的脚本语言作为主脚本语言。您可以逐页设置主脚本语言,也可以在ASP应用程序中设置所有页的主脚本语言。为某页设置语言要设置单个页的主脚本语言,可将指令添加到.asp文件的开头。该指令的语法是:其中Scripting Language就是您所设置的页的主脚本语言。如果对某页进行了设置,那么该页将忽略在应用程序中对所有页的全局设置。请遵循使用ASP指令的指导。详细信息,请参阅“创建ASP页”。注意要将不支持Object.Method语法的语言作为主脚本语言使用,必须先创建Language Engine

23、s注册表键。详细信息,请参阅注册表。为应用程序设置语言在应用程序中,如要为所有页设置主脚本语言,可在Internet服务管理器的“App 选项选项卡上设置默认的ASP语言属性。详细信息,请参阅配置ASP应用程序。在服务器上使用VBScript和JScript在服务端通过ASP使用VBScript时,两个VBScript特征将失效。由于Active Server Pages脚本是在服务器端执行的,表示用户接口的元素的VBScript语句InputBox和MsgBox将不被支持。另外,在服务器端的脚本中,请不要使用VBScript函数CreateObject和GetObject。而要使用Serve

24、r.CreateObject,这样ASP就可以跟踪对象实例了。用CreateObject或GetObject创建的对象不能访问ASP内建对象,也不能参与事务处理。该规则的一个例外是如果您使用的是Admin对象和Java monikers。详细信息,请参阅IIS Admin对象和创建Java类的实例。关于所有VBScript和JScript的操作符、函数、语句、对象、属性及方法的列表及详细说明,请参阅VBScript语言参考 和JScript语言参考。包含注释由于ASP脚本是在服务器端处理的,所以即使客户端的浏览器不支持脚本语言,也不必通过包含进HTML注释标记来隐藏脚本,但客户端的脚本则通常需

25、要这样处理。在内容送到浏览器之前,所有ASP命令都已被处理好了。您可用HTML注释将注释加进HTML页。注释将返回给浏览器,若用户浏览HTML源文件,就可以看见。VBScript注释VBScript支持撇号型注释。与HTML注释不同,当处理脚本时,它们将被删除,而不是被送到浏览器。 输出表达式不能包括注释。例如,下面的第一行将正常运行,而第二行则不能,因为它是以 %= 开头的。 JScript注释JScript支持/注释符。每一个注释行中都必须使用该注释符。 / This is a definition for the procedure PrintDate. function PrintDa

26、te() var xx = new Date() / This line sends the current date to the browser, / translated to a string.Response.Write(x.toString() 大小写敏感性VBScript不区分大小写。例如,您可以用Request或request来引用ASP Request对象。不区分大小写的后果是您不能用大小写来区分变量名。例如,您不能创建两个名为Color和color的单独变量。JScript区分大小写。要在脚本中使用JScript关键字,就必须按参考页中所示的大小写来书写。例如,用date来

27、代替Date将导致错误。在JScript中,对象名必须大写;方法名和属性名可大写也可小写。本文所示的ASP内建对象的情况将在JScript命令中正常工作。五、使用变量和常量变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据。变量包含的信息被称为变量的值。变量使用用户便于理解脚本操作的名称为用户提供了一种存储、检索和操作数据的途径。声明和命名变量命名和声明变量应遵循脚本语言的规则及指导。即使在使用变量前不需要去声明变量,也应养成在编程时声明变量的良好习惯,因为这样有助于防止错误发生。声明一个变量意味着告诉脚本引擎,有一个特定名称的变量,这样就可以在脚本中引用该变量。VBScript

28、VBScript并不需要声明变量,但在使用所有变量前声明它们是一种好的脚本书写习惯。要在VBScript中声明变量,请用 Dim、Public或Private语句。例如:可以在需要显式声明变量的.asp文件中用VBScript Option Explicit语句。Option Explicit必须在任何一个ASP指令之后及任何一个HTML文本或脚本命令之前出现。该语句仅影响用VBScript书写的ASP命令,而不会影响JScript命令。关于这些命令的详细信息,请参阅VBScript语言参考。JScriptMicrosoft JScript仅当变量为本地过程变量时才需声明,但在使用所有变量前声

29、明它们是一种好的脚本书写习惯。要声明一个变量,请使用var语句。例如:有关var语句的详细信息,请参阅JScript语言参考。变量作用域变量的作用域即生命期,决定哪些脚本命令可访问变量。在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被ASP页上的任何脚本命令访问和修改。声明变量时,局部变量和全局变量可以有相同的名称。而改变其中一个的值并不会改变另一个的值。如果没有声明变量,则可能不小心会改变一个全局变量的值。例如,以下脚本命令返回值1,虽然有两个名为Y变量: 由于变量没有显式声明,以下的脚本

30、命令将返回2。当过程调用将Y设置为2时,脚本引擎认为该过程是要修改全局变量:养成显式声明所有变量的编程习惯可以避免许多问题。尤其在当您用#include语句将文件包含进ASP主页时,就显得更为重要。一个独立文件中被包含的脚本是被当作整个包含它的文件的一部分来处理的。用不同的名称来命名主脚本和被包含脚本中用到的变量,这容易被遗忘,除非声明变量。为变量赋予会话或应用程序作用域全局变量仅在单个ASP页中可用,要使它在单个ASP页之外可用,就必须为变量赋予会话或应用程序作用域。会话作用域变量对一个用户所请求的ASP应用程序中的所有页都是可用的。应用程序作用域变量也如此。对单个用户来说,会话变量是存储信

31、息的最佳途径,例如,首选项、用户名或用户标识。对于一个特殊应用程序的所有用户,应用程序作用域是存储信息的最佳途径,例如,应用程序特定的问候语或应用程序所需的初始值。ASP提供两个内建对象来让您存储变量:Session对象和Application对象。您也可以创建具有会话或应用程序作用域的对象实例。详细信息,请参阅设置对象作用域。会话作用域要为变量赋予会话作用域,将该变量存储到Session对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将两个新的变量存储到Session对象中。要Session对象中检索信息,可以用输出指令(%=)或Response.Write访问已命名的条目。

32、以下示例用输出指令显示 Session(FirstName) 的当前值:Welcome 可在Session对象中存储用户首选项,然后就可以访问这些首选项,从而决定将哪一页返回给用户。例如,您可以允许用户在应用程序的第一页指定纯文本内容,然后将这一选择应用到用户在该应用程序中访问的所有后续页。 This is the text version of the page. This is the multimedia version of the page.应用程序作用域要为变量赋予应用程序作用域,将该变量存储到Application对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将

33、一个应用程序特定的问候语存储到Application对象中:要从Application对象中检索信息,可以使用ASP输出指令(%=)或Response.Write从该应用程序的任意后续页中访问已命名条目。以下示例用输出指令显示Application(Greeting)的值:使用常量常量是用来代替一个数或字符串的名称。一些随ASP提供的基本组件,例如ActiveX Data Objects(ADO),定义了您在脚本中可以使用的常量。组件可在一个组件类型库中声明常量,组件类型库是一个包含ActiveX组件所支持的对象和类型的信息的文件。一旦在Global.asa文件中声明了一个类型库,您就可以在该

34、应用程序的任意页中使用已定义的常量。可在Global.asa中用标记为应用程序声明类型库。例如,要声明ADO类型库,可用以下语句:这样,您就可以在与Global.asa文件相同的应用程序的中使用ADO常量。在下面的示例中,adOpenKeyset和adLockOptimistic是ADO常量:Create and Open Recordset ObjectSet RsCustomerList = Server.CreateObject(ADODB.Recordset)RsCustomerList.ActiveConnection = OBJdbConnectionRsCustomerList.

35、CursorType = adOpenKeysetRsCustomerList.LockType = adLockOptimistic有关标记的参考信息,请参阅TypeLibrary声明。在以前版本的ASP中,一些组件在文件中提供常量定义,每个使用那些组件的ASP文件必须包含该文件。用#include指令来包含常量定义的用法仍被支持,但使用类型库通常更方便并且能使脚本更易于升级。在以后版本的ASP中,组件可能将不再提供常量定义文件。您可以定义自己的常量。在VBScript中,用Const语句,在JScript中,用var语句。如果在多个ASP页中使用常量,可在独立的文件中放置常量,然后将其包含

36、进每一个使用该常量的ASP文件中去。六、使用集合大多数ASP内建对象支持集合。集合是存储字符串、数字、对象和其他值的地方。除了在存储或取出项目时集合会自动扩展与搜索外,集合与数组非常相近。与数组不同的是,集合被修改后,项目的位置将会移动。可以通过集合中项目的名称、索引或者通过在集合的所有项目中遍历访问项目。通过名称和索引访问项目通过使用项目名称可以访问集合中的具体项目。例如,Contents集合拥有在Session对象中保存的所有变量。同样也拥有由Server.CreateObject创建的所有对象。假设在Session对象中存储了下列用户信息:可以使用在集合中存储项目时关联的名称访问项目。例

37、如,下面的表达式返回字符串“Sam:通过使用与项目关联的索引或号码也可以访问项目。例如,下面的表达式检索存储在Session对象的第二个存储槽中的信息并且返回Woo:ASP集合从1开始编号。当在集合中增加或删除项目时,与项目关联的索引将会改变。所以不能认为项目的索引始终不变。正如将在下面的主题中说明的那样,利用索引的访问一般用来遍历集合,或访问只读集合中的项目。通过使用速记的名称可以访问项目。ASP以特定的顺序搜索与对象关联的集合。如果在对象的集合中特定名称的项目只出现一次的话,可以消除该集合的名称:访问存储在Application或Session对象中的项目时,消除集合名称一般是安全的。但是

38、,对于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) & Next%

39、可以使用VBScript中的For.Next语句遍历集合。例如,要列出上例中存储在Session中的三个项目,可以使用下列语句。% Declare a counter variable.Dim ItemRepeat the loop until the value of counter is equal to 3.For Item = 1 to 3Response.Write Session.Contents(Item) & Next%因为一般不知道存储在集合中的项目个数,ASP支持集合的Count属性,这个属性返回集合中的项目数。可以使Count属性指定计数器的终值。% Declare a

40、counter variable.Dim ItemRepeat this loop until the counter equals the number of itemsin the collection.For Item = 1 to Session.Contents.CountResponse.Write Session.Contents(Item) & Next%可以在脚本中使用for语句在集合中循环。在JScript的for语句中使用Count属性时,为了收到更大的效果,应该将Count值分配给本地变量并使用该变量设置计数器终值。这样,脚本引擎就不需要每次循环都查寻Count的值。下

41、面的例子展示了这个技巧:% var item, numitems;numitems = Session.Contents.Count;for(item = 1; item = numitems; item+) Response.Write(Session.Contents(item) + )%Microsoft JScript 3.0引入了Enumerator对象。可以使用该对象遍历ASP集合。atEnd方法指出了集合中是否还存在项目。moveNext方法移动到集合中的下一个项目。%/ Create an Enumerator objectvar mycoll = new Enumerator

42、(Session.Contents);/Iterate through the collection and display each itemwhile (!mycoll.atEnd() var x = mycoll.item();Response.Write(Session.Contents(x) + );mycoll.moveNext();%遍历带子关键字(Subkeys)的集合脚本在单一cookie中嵌入相关值以减少在浏览器和Web服务器之间传送的cookie数目。因此Request和Response对象的Cookies集合能够在单一项目中拥有多个值。这些子项目或子关键字可以被单个访问

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

44、Cookie, SubkeyDisplay the entire cookie collection.For Each Cookie in Request.CookiesResponse.Write Cookie & If Request.Cookies(Cookie).HasKeys ThenDisplay the subkeysFor Each Subkey in Request.Cookies(Cookie)Response.Write Subkey & = & Request.Cookies(Cookie)(Subkey) & NextElseResponse.Write No sub

45、keys in this cookie End IfNext %遍历对象集合Session和Application集合可以保存数量变量或者对象实例。Contents集合拥有数量变量和通过调用Server.CreateObject生成的对象实例。StaticObjects集合拥有在Global.asa文件中使用HTML 元素创建的对象。在遍历包含对象的集合时,可以访问对象的标识符或对象的方法和属性。例如,假设应用程序使用一些对象创建用户帐号,而且每个对象有初始化方法,可以遍历StaticObjects集合来调用每个初始化方法:ASP集合有何不同之处?尽管在本主题中讨论的ASP集合与Visual

46、Basic的Collection对象非常相似,但还是有些不同。ASP集合支持Count属性和Item方法,但不支持Add和Remove方法。设置对象作用域对象的作用域决定哪些脚本可以使用该对象。默认情况下,当您创建对象实例时,该对象具有页作用域。同一ASP页中的任何脚本命令都能使用该页作用域的对象;当ASP页送回客户端时,该对象即被释放。对大多数对象来说,推荐的作用域是页作用域。您可以改变一个对象的作用域,使其可被其他页的脚本使用。本主题将解释如何使用页作用域的对象以及如何改变对象的作用域。使用页作用域对象在ASP页上用Server.CreateObject创建的对象在该页的生存期内一直存在。

47、该对象对该页的任何脚本命令都是可访问的,当ASP处理完该页时,该对象即被释放。因此,对象具有该页的作用域或生命周期。 在用Visual Basic或VBScript编程时,要注意在ASP处理完该页之前不要释放对象。例如,以下语句经常用于通过将对象变量赋以Nothing值来释放对象:Set myObj = Nothing如果您在ASP页中包含了该语句,那么任何使用myObj的企图都将会返回一个预期的错误代码。但在内部,即使在对象释放以后,ASP仍保留对它的引用。当您在脚本中不能使用对象时,对象的资源直到ASP处理完页之后才释放。同样,如果您通过创建另一个对象实例并将其赋给已使用过的对象变量来释放

48、该对象时,ASP 将保留对原对象实例的引用。对大多数脚本来说,创建多个对象可能不会产生问题,但如果对象使用共享资源,比如数据库连接,就有可能出现问题。由于对象有页作用域,所以不要依靠手工释放的对象。例如,以下的循环创建1001个Connection对象,它将能打开大多数的连接甚至于一个大型的SQL server:总的来说,应该尽量避免在一个循环内部创建对象。如果无法避免,您应该手工释放被对象使用过的资源。如果Connection对象仅被创建一次,且数据资源的物理连接在每个循环中被打开然后关闭,那么上例将会正常运行:为对象赋予会话作用域在应用程序中,对于每个新会话,都会创建session-scope对象,并且在会话结束后会将其释放。因此,每个活动的会话都有一个对象。会话作用域用于从多个脚本中调用的对象,但只影响一个用户会话。您可以只在需要时才为对象赋予会话作用域。如果确实需要使用会话作用域,那么就必须了解提供对象的组件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论