Sam工作室电脑技术区网络技术[分享]微软Asp参考手册
    
 
[分享]微软Asp参考手册
发起人:木头  回复数:13  浏览数:3402  最后更新:2006/11/2 23:47:02 by ab1248

选择查看 搜索更多相关主题  帖子排序:
2006/9/26 14:18:37
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
[分享]微软Asp参考手册
Active Server Pages

active server pages 简介

active server pages(asp)使生成 web 动态内容及构造功能强大的 web 应用程序的工作变得十分简单。不论是 web 设计人员还是 web 开发人员,通过这部分的介绍都将了解到 asp 能为您提供多大的帮助。

这部分包括:

  • 关于 active server pages:提供了关于 active server pages 的概述。
  • asp 的新内容:描述了此版本中增加的新内容。

这部分不包括下列信息:

  • 关于编写 asp 脚本基本概念的信息。
  • 关于编写执行基本任务脚本的信息。
  • 关于编写其他高级脚本的信息。
  • asp 对象和组件以及脚本语言的参考页。

关于 asp

microsoft® active server pages (asp) 是服务器端脚本编写环境,使用它可以创建和运行动态、交互的 web 服务器应用程序。使用 asp 可以组合 html 页、脚本命令和 activex 组件以创建交互的 web 页和基于 web 的功能强大的应用程序。asp 应用程序很容易开发和修改。

html 编写人员

如果您是位 html 编写人员,您将发现 asp 脚本提供了创建交互页的简便方法。如果您曾想从 html 表格中收集数据,或用顾客的姓名个人化 html 文件,或根据浏览器的不同使用不同的特性,您会发现 asp 提供了一个出色的解决方案。以前,要想从 html 表格中收集数据,就不得不学习一门编程语言来创建一个 cgi 应用程序。现在,您只要将一些简单的指令嵌入到您的 html 文件中,就可以从表格中收集数据并进行分析。您再不必学习完整的编程语言或者单独编译程序来创建交互页。

随着不断掌握使用 asp 和脚本语言的技巧,您可以创建更复杂的脚本。对于 asp,您可以便捷地使用 activex 组件来执行复杂的任务,比如连接数据库以存储和检索信息。

有经验的脚本编写人员

如果您已经掌握一门脚本语言,如 vbscript、javascript 或 perl,而且您已经了解使用 asp 的方法。只要安装了符合 activex 脚本标准的相应脚本引擎,就可以在 asp 页中使用任何一种脚本语言。asp 带有 microsoft® visual basic® scripting edition (vbscript)和 microsoft® jscript™ 的脚本引擎,这样您可以立即开始编辑脚本。perl、rexx 和 python 的 activex 脚本引擎可以从第三方开发人员处获得。

web 开发人员

如果您已经掌握了一门编程语言,如 visual basic,您将发现 asp 是快速创建 web 应用程序的一个非常灵活的方法。通过向 html 中添加脚本命令,您能够创建应用程序的 html 接口。通过创建自己的 activex 组件,可以将应用程序中的商业逻辑封装到能够从脚本、其他组件或从其他程序中调用的模块。

使用 asp 进行计算的 web 可转化为有形的利益,它使 web 供应商能够提供交互的商业应用而不仅仅是发布内容。例如,旅行社能够比公布航空时刻表做得更多;用 asp 脚本可以让客户察看现有的航班、比较费用并预定座位。

包含在 windows nt option pack 中的 microsoft transaction server(mts)可以降低在服务器上构造程序的复杂性和费用。mts 可以解决开发那些保密性强的、可分级的以及可靠的 web 应用程序的复杂性问题。

active server pages 模型

浏览器从 web 服务器上请求 .asp 文件时,asp 脚本开始运行。然后 web 服务器调用 asp,asp 全面读取请求的文件,执行所有脚本命令,并将 web 页传送给浏览器。

由于脚本在服务器上而不是在客户端运行,传送到浏览器上的 web 页是在 web 服务器上生成的。所以不必担心浏览器能否处理脚本:web 服务器已经完成了所有脚本的处理,并将标准的 html 传输到浏览器。由于只有脚本的结果返回到浏览器,所以服务器端脚本不易复制。用户看不到创建他们正在浏览的页的脚本命令。

所到之处必成水坛!
2006/9/26 14:19:09
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线

ASP 的新功能

Active Server Pages 在功能方面有所增强,更易于开发应用程序。

  • Microsoft 脚本调试程序。 您可以使用脚本调试程序调试 .asp 文件。请参阅调试 ASP 脚本。
  • 事务性脚本。 ASP 页和页中使用的对象可以运行于事务环境之下。在页上的全部工作只有两种结果:提交或终止。事务可以保护应用程序免于因失败而导致数据丢失。请参阅创建事务性脚本。
  • 管理工具。 许多应用程序设置可在 Internet 服务管理器上进行,这是 Internet Information Server 和 Personal Web Server(在 Windows NT Workstation 上)的管理工具。
  • 隔离 ASP 应用程序。 您可以隔离 ASP 应用程序以便它们能在 Web 服务器上独立的内存空间内运行。万一某个应用程序失败时,可以保护其他应用程序和 Web 服务器。它也使您可以在不停止 Web 服务器的情况下,停止一个应用程序或从内存中卸载其组件。
  • 文件上载。 浏览器可以通过 Posting Acceptor 应用程序将文件上载到 Web 服务器。可以编写 ASP 脚本来发送带有从 Posting Acceptor 传来的信息的 email,如每一个上载文件的位置和名称。请参阅 Posting Accepter 文档(在 Microsoft Site Server Express 的目录表中)。
  • 新的 ASP 组件。 ASP 提供了新的基础组件。
  • 应用程序根目录的改变。 ASP 应用程序的根目录在您的 Web 站点上可以是物理目录。以前,根目录必须映射为虚拟目录。现在可以用 Internet 服务管理器指示 ASP 应用程序的根目录。必须将 .asp 文件置于应用程序树中,Web 服务器才能检测文件的改变并且自动重装它们。
  • 支持 Internet Explorer 4.0 通道和 Web 预测。 当 ASP 要发送包含通道定义命令的文件时,它会自动告诉 Internet Explorer 4.0。使用 ASP 很容易就能生成通道定义 (.cdf) 文件。
  • 支持 HTTP 1.1 协议。 Internet Information Server 和 Personal Web Server 支持 HTTP 1.1 协议。在响应支持 HTTP 1.1 的浏览器(例如 Internet Explorer 4.0)时,这一支持可使 ASP 利用新协议的高效率。例如,当向浏览器返回页的时候,ASP 使用大块转换编码以提高网络效率。

所到之处必成水坛!
2006/9/26 14:22:00
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
创建 asp 页

active server pages(asp)文件是以 .asp 为扩展名的文本文件,这个文本文件可以包括下列部分的任意组合:

文本 html 标记 asp 脚本命令

创建 .asp 文件非常容易。如果要在 html 文件中添加脚本,只需将该文件的扩展名 .htm 或 .html 替换为 .asp 就可以了。要使 .asp 文件可用于 web 用户,请将这个新文件保存在 web 站点上的目录中(请确定启用了该目录的脚本和执行权限)。使用浏览器查看该文件时,可以看到 asp 处理并返回了 html 页。现在可以在 .asp 文件中添加脚本命令了。

注意   因为 .asp 文件需要额外的处理,请不要将所有的 html 页都转换为 asp 页。应该只将包含脚本命令的文件转换为 .asp 文件。.asp 和 .htm 文件可以放置在相同的目录中。

使用任何的文本编辑器都可以创建 .asp 文件。使用那些带有 asp 增强支持的编辑器将更能提高效率,如 microsoft® visual interdev™ 。如果您从未使用过 html,请考虑先使用 microsoft frontpage 。使用 frontpage 创建文档和格式化文本就象使用文字处理工具一样简单。接下来还可以使用 insert script 命令在 frontpage 创建的 html 页中加入简单的 asp 命令。

加入 script 命令

脚本是一系列的命令和指令。与 html 标签不同,script 命令指示 web 服务器执行操作,而 html 标签只是简单地格式化文本或读取图形、视频及音频文件。script 命令可以在变量中存储用户名,在返回到浏览器的页中显示用户名或将用户名存储在数据库中。

脚本命令通过定界符与文本区别开来。定界符是字符或一串字符,它标志单元开始或结束。html 使用定界符——小于号(<)和大于号(>)括入 html 标签。

asp 使用定界符 <% 和 %> 括入脚本命令。您可以在定界符中括入任何命令,只要这些命令对正在使用的脚本语言有效。下面的例子展示了包含脚本命令的简单的 html 页:

<html><body>this page was last refreshed on <%= now %>.</body></html>

vbscript 函数 now 返回当前的日期和时间。web 服务器处理该页时,会使用当前的日期和时间替换 <%= now %> 并且将该页返回到浏览器:

this page was last refreshed on 8/1/97 2:20:00 pm.

定界符括入的命令被称为主脚本命令。这些命令被主脚本语言处理。在脚本定界符中使用的任何命令都必须对主脚本语言有效。默认情况下,主脚本语言是 vbscript。要设置另一种语言。

如果您已经熟悉了客户端脚本编写(编写在浏览器上运行的脚本),请注意不要用 html <script> 元素括入表达式。在编写服务器端脚本时,只用 <script> 元素在主脚本语言外的其他语言中定义过程。

合成 html 和脚本命令

在 asp 定界符中可以包含任何在主脚本语言中合法的语句、表达式、过程或操作符。在 vbscript 和其他脚本语言中,语句是语法完整的单元,该单元表达某项活动、声明或定义。下面的条件语句 if...then...else 是一条常见的 vbscript 语句。

<% if time >= #12:00:00 am# and time < #12:00:00 pm# then greeting = "good morning!" else greeting = "hello!" end if%> <%= greeting %>

这条语句将值 "good morning!" 或值 "hello!" 存储在变量 greeting 中。<%= greeting %> 命令将当前的变量值发送到浏览器中。

这样,在(web 服务器所在时区的)正午 12 点前浏览该脚本的用户将看到:

good morning!

在正午 12 点或以后浏览此脚本的用户将看到:

hello!

在语句的不同部分之间可以加入 html 文本。例如,下面的脚本在if...then...else 语句中加入了 html,产生了与上面脚本同样的结果:

<% if time >= #12:00:00 am# and time < #12:00:00 pm# then %> good morning!<% else %>hello!<% end if %>

如果条件为真——也就是说,如果时间为午夜、午夜以后或者中午以前,那么 web 服务器将跟随条件(“good morning”)的 html 发送到浏览器;否则,将跟随 else 的 html(“hello”)发送到浏览器。这种混合 html 和脚本命令的方式可以方便地将 if...then...else 语句变换为几行 html 文本。如果要在 web 页上显示多处问候,前一个例子更为有用。只需要设置一次变量,就可以重复显示。

最好从脚本命令中将 html 文本返回到浏览器,而不用脚本命令散布 html 文本。要将文本返回到浏览器,请使用 asp 的内建对象 response。下面的例子可以产生与前一个脚本同样的结果:

<% if time >= #12:00:00 am# and time < #12:00:00 pm# then response.write "good morning!"else response.write "hello!"end if %>

response.write 将跟随的文本发送到浏览器。要动态构造返回浏览器的文本,请在语句中使用 response.write。例如,可能要构造包含一些变量值的字符串。在 使用组件和对象 以及 向浏览器传送内容 中了解到更多有关 response 对象和一般对象的信息。现在,先了解将脚本命令插入到 html 页中的几种方法。

在 asp 定界符中可以包含用默认主脚本语言编写的过程。

如果正在使用 jscript 命令,可以插入花括号指示语句块直接进入 asp 命令,而不用考虑它是否夹杂着 html 标签和文本。例如:

<% if (screenresolution == "low") { %>this is the text version of a page.<% } else { %>this is the multimedia version of a page.<% } %> 使用 asp 指令

asp 提供了您使用的脚本语言以外的指令。这是一些输出指令和处理指令。

asp 的输出指 <%= expression %> 显示表达式的值。这个输出指令等同于使用 response.write 显示信息。例如,输出表达式 <%= sport %> 将文字 climbing(变量当前的值)传送到浏览器。

asp 处理指令 <%@ keyword %> 为 asp 提供处理 .asp 文件所需的信息。例如,下面的指令将 vbscript 设为该页的主脚本语言:

<%@ language=vbscript %>

处理指令必须出现在 .asp 文件的第一行。不要将处理指令放在包含 #include 语句的文件中。必须在 at 标记(@)和关键字之间加入一个空格。处理指令有下列关键字:

language 关键字设置页的脚本语言。 codepage 关键字设置页的代码页(字符编码)。 lcid 关键字设置页的现场标识符。 transaction 关键字指定将在事务处理环境下运行的页。 enablesessionstate 关键字指定 asp 页是否使用会话状态。

可以在单个指令中包含多个关键字;关键字/值对之间必须由空格分开。不要在等号(=)左右加入空格。下面的例子中设置了脚本语言和代码页:

<%@ language=jscript codepage=932 %> 在脚本中的空白字符

如果您的主脚本语言是 vbscript 或者 jscript,asp 从指令中删除空白字符。使用其他脚本语言时,asp 保留空白字符,这样那些需要使用位置和缩进的语言,如 python 就可以被正确解释了。空白字符包括空格、制表符、回车和换行符。

使用 vbscript 和 jscript 时,在打开定界符之后和关闭定界符之前使用空白字符更容易阅读命令。下面的命令都是合法的:

<% color = "green" %><%color="green"%><%color = "green"%>

asp 将一个语句的关闭定界符与下一个语句的打开定界符之间的空白字符删除。要保留两个语句间的空白字符,比如在句子中显示变量值的时候,请使用 html 不间断空符(&nbsp;)。例如:

<%'define two variables with string values.hello = "hello"world = "world"%><p>my response is to say "<%= hello %>&nbsp;<%= world %>." </p>

所到之处必成水坛!
2006/9/26 14:24:13
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
使用脚本语言

使用脚本语言

active server pages 提供了一个在 html 页中使用现有脚本语言如 microsoft vbscript 和 microsoft jscript 的框架。本节将解释如何创建 asp 页、如何添加脚本语言语句以及如何执行创建对象实例等基本任务。虽然这些主题介绍了一些脚本和编程的概念,但其用意并非是教您一门脚本语言。microsoft 的脚本语言提供自己的文档,许多其他的有关脚本的书籍可从您当地的图书商处获得。不管您是初学者还是经验丰富的脚本编写人员,都应该浏览这些主题以便学习基本的框架和在 asp 页中使用脚本语言的语法。如果您是位新手,就该通过书本和课程来掌握这些语言。

本节包括:

创建 asp 页:描述 asp 页并解释如何给页添加脚本命令。 使用脚本语言:解释如何设置主语言以及如何在服务器脚本中使用 vbscript 和 jscript。 使用变量和常量:介绍在 asp 脚本中使用变量以及解释如何获取常量定义。 编写过程:解释如何定义过程(函数和子程序)以及如何从 asp 脚本中调用它们。 使用组件和对象:解释如何创建由 activex 组件提供的对象的实例、如何使用 asp 内建对象以及如何使用对象的方法和属性。 使用集合:解释如何访问内建对象的集合中的项目,包括遍历整个集合。 设置对象作用域:解释对象的作用域并描述如何创建会话或应用程序作用域对象。 asp 内建对象:通过到详细信息的链接提供 asp 内建对象的快速浏览。 activex 组件:通过到详细信息的链接提供 asp 提供的 activex 组件的快速浏览。

本节不包含下列信息:

关于编写执行基本任务的脚本的信息。 关于编写更高级脚本的信息。 asp 对象和组件以及脚本语言的参考页。

所到之处必成水坛!
2006/9/26 14:25:17
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
使用变量和常量

变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据。变量包含的信息被称为变量的值。变量使用用户便于理解脚本操作的名称为用户提供了一种存储、检索和操作数据的途径。

声明和命名变量

命名和声明变量应遵循脚本语言的规则及指导。即使在使用变量前不需要去声明变量,也应养成在编程时声明变量的良好习惯,因为这样有助于防止错误发生。声明一个变量意味着告诉脚本引擎,有一个特定名称的变量,这样就可以在脚本中引用该变量。

vbscript

vbscript 并不需要声明变量,但在使用所有变量前声明它们是一种好的脚本书写习惯。要在 vbscript 中声明变量,请用 dim、 public 或 private 语句。例如:

<% dim username %>

可以在需要显式声明变量的 .asp 文件中用 vbscript option explicit 语句。option explicit 必须在任何一个 asp 指令之后及任何一个 html 文本或脚本命令之前出现。该语句仅影响用 vbscript 书写的 asp 命令,而不会影响 jscript 命令。

jscript

microsoft jscript 仅当变量为本地过程变量时才需声明,但在使用所有变量前声明它们是一种好的脚本书写习惯。要声明一个变量,请使用 var 语句。例如:

<% var username; %> 变量作用域

变量的作用域即生命期,决定哪些脚本命令可访问变量。在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被 asp 页上的任何脚本命令访问和修改。

声明变量时,局部变量和全局变量可以有相同的名称。而改变其中一个的值并不会改变另一个的值。如果没有声明变量,则可能不小心会改变一个全局变量的值。例如,以下脚本命令返回值 1,虽然有两个名为 y 变量:

<% dim yy = 1call setlocalvariableresponse.write ysub setlocalvariable dim y y = 2end sub%>

由于变量没有显式声明,以下的脚本命令将返回 2。当过程调用将 y 设置为 2 时,脚本引擎认为该过程是要修改全局变量:

<% y = 1call setlocalvariableresponse.write ysub setlocalvariable y = 2end sub%>

养成显式声明所有变量的编程习惯可以避免许多问题。尤其在当您用 #include 语句将文件包含进 asp 主页时,就显得更为重要。一个独立文件中被包含的脚本是被当作整个包含它的文件的一部分来处理的。用不同的名称来命名主脚本和被包含脚本中用到的变量,这容易被遗忘,除非声明变量。

为变量赋予会话或应用程序作用域

全局变量仅在单个 asp 页中可用,要使它在单个 asp 页之外可用,就必须为变量赋予会话或应用程序作用域。会话作用域变量对一个用户所请求的 asp 应用程序中的所有页都是可用的。应用程序作用域变量也如此。对单个用户来说,会话变量是存储信息的最佳途径,例如,首选项、用户名或用户标识。对于一个特殊应用程序的所有用户,应用程序作用域是存储信息的最佳途径,例如,应用程序特定的问候语或应用程序所需的初始值。

asp 提供两个内建对象来让您存储变量:session 对象和 application 对象。

您也可以创建具有会话或应用程序作用域的对象实例。详细信息,请参阅设置对象作用域。

会话作用域

要为变量赋予会话作用域,将该变量存储到 session 对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将两个新的变量存储到 session 对象中。

<% session("firstname") = "jeff"session("lastname") = "smith" %>

要 session 对象中检索信息,可以用输出指令 (<%=) 或 response.write 访问已命名的条目。以下示例用输出指令显示 session("firstname") 的当前值:

welcome <%= session("firstname") %>

可在 session 对象中存储用户首选项,然后就可以访问这些首选项,从而决定将哪一页返回给用户。例如,您可以允许用户在应用程序的第一页指定纯文本内容,然后将这一选择应用到用户在该应用程序中访问的所有后续页。

<% if session("screenresolution") = "low" then %> this is the text version of the page.<% else %> this is the multimedia version of the page.<% end if %> 应用程序作用域

要为变量赋予应用程序作用域,将该变量存储到 application 对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将一个应用程序特定的问候语存储到application 对象中:

<% application("greeting") = "welcome to exploration air" %>

要从 application 对象中检索信息,可以使用 asp 输出指令 (<%=) 或 response.write 从该应用程序的任意后续页中访问已命名条目。以下示例用输出指令显示 application("greeting") 的值:

<%= application("greeting") %> 使用常量

常量是用来代替一个数或字符串的名称。一些随 asp 提供的基本组件,例如 activex data objects (ado),定义了您在脚本中可以使用的常量。组件可在一个组件类型库中声明常量,组件类型库是一个包含 activex 组件所支持的对象和类型的信息的文件。一旦在 global.asa 文件中声明了一个类型库,您就可以在该应用程序的任意页中使用已定义的常量。

可在 global.asa 中用 <metadata> 标记为应用程序声明类型库。例如,要声明 ado 类型库,可用以下语句:

<!--metadata type="typelib"file="c:\program files\common files\system\ado\msado15.dll"-->

这样,您就可以在与 global.asa 文件相同的应用程序的中使用 ado 常量。在下面的示例中,adopenkeyset 和 adlockoptimistic 是 ado 常量:

'create and open recordset objectset rscustomerlist = server.createobject("adodb.recordset")rscustomerlist.activeconnection = objdbconnectionrscustomerlist.cursortype = adopenkeysetrscustomerlist.locktype = adlockoptimistic

在以前版本的 asp 中,一些组件在文件中提供常量定义,每个使用那些组件的 asp 文件必须包含该文件。用 #include 指令来包含常量定义的用法仍被支持,但使用类型库通常更方便并且能使脚本更易于升级。在以后版本的 asp 中,组件可能将不再提供常量定义文件。

您可以定义自己的常量。在 vbscript 中,用 const 语句,在 jscript 中,用 var 语句。如果在多个 asp 页中使用常量,可在独立的文件中放置常量,然后将其包含进每一个使用该常量的 asp 文件中去。

所到之处必成水坛!
2006/9/26 14:25:50
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
编写过程

过程是一组能执行指定任务且具有返回值的脚本命令。您可以定义自己的过程,然后在脚本中反复调用它们。

您可以将过程定义放在调用过程的 .asp 文件中,也可以将通用过程放在一个共享的 .asp 文件中,然后用 ssi #include 指令将其包含进其他调用其过程的 .asp 文件中。您还可选择另一种方法,即把这些功能打包在 activex 组件中。

定义过程

过程定义可出现在 <script> 和 </script> 标记内部且必须遵循声明脚本语言的规则。如果过程所用的语言与主脚本语言不同,则要使用 <script> 元素。主脚本语言中的过程用脚本分界符 (<% 和 %>) 分隔。

用 html <script> 标记时,必须使用两个属性来保证服务器端能够处理脚本。使用 <script> 标记的语法是:

<script runat=server language=jscript> procedure definition</script>

runat=server 属性通知 web 服务器在服务器上处理脚本。若不设置该属性,脚本将由客户端浏览器处理。language 属性决定此脚本块所用的脚本语言。您可以指定任何一种具有脚本引擎的语言。请使用 vbscript 指定 vbscript; 用 jscript 指定 jscript。若不设置 language 属性,将用主脚本语言解释此脚本块。

脚本块中的命令必须用所选的脚本语言形成一个或多个完整的过程。例如,以下命令定义 jscript 过程 myfunction。

<html><script runat=server language=jscript> function myfunction() { response.write("myfunction called") } </script>

要点    不要在服务器端的 <script> 标记内部包含任何不属于某个完整过程的一部分的脚本命令。由于执行顺序不可预测,所以不属于过程的命令可能会导致意外结果。另外,在过程内不能使用 asp 输出表达式 <%=,而应使用 response.write。

调用过程

要调用过程,在命令中包含过程名即可。如果从 vbscript 中调用 jscript 过程,就必须在过程名后加上括号;如过程没有变量,就用空括号。不管是从 jscript 调用 vbscript 还是调用 jscript 过程,在过程后总要加上括号。

对于 vbscript,调用过程时要用 call 关键字。如果调用的过程需要括号,变量表必须放在括号内。如果省略 call 关键字,也必须省略变量表外的括号。如果用 call 语法调用任何内建的或用户自定义的函数,函数的返回值将被丢弃。

下面将举例说明用两种不同的脚本语言(vbscript 和 jscript)创建和调用过程。

<%@ language = vbscript >%<html> <body><% call echo %> <br><% call printdate() %></body></html><%sub echo response.write "<table>" response.write "<tr><th>name</th><th>value</th></tr>" set params = request.querystring for each p in params response.write "<tr><td>" & p & "</td><td>" & _ params(p) & "</td></tr>" next response.write "</table>" end sub %><script language=jscript runat=server> function printdate() { var x x = new date() response.write(x.tostring()) } </script> 将数组传递给过程

在 vbscript 中,要将一个完整的数组传递给过程,可使用数组名,后接空括号;而在 jscript 中,要用空的方括号。

所到之处必成水坛!
2006/9/26 14:26:24
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
使用组件和对象

activex 组件是建立强大的 web 应用程序的关键。组件提供了用在脚本中执行任务的对象。asp 同样提供了可在脚本中使用的内建对象。本主题将讨论如何使用组件提供的对象以及由 active server pages 直接提供的内建对象。

关于组件

activex 组件是一个文件,该文件包含执行某项或一组任务的代码。组件可以执行公用任务,这样就不必自己去创建执行这些任务的代码。例如,股票行情收报机组件可以在 web 页上显示最新的股票报价。asp 带有可以直接使用的组件,如 database access 组件。从第三方开发者处获得可以可选的组件。或者也可以编写自己的组件。

可以利用组件作为脚本和基于 web 应用程序的基本构造块。只要知道如何访问组件提供的对象。即使是位编写脚本的新手,也可以在不了解组件运作方式的情况下编写脚本。总之,组件使您不用学习编程就能够编写强大的脚本。

如果您是位 web 应用程序的开发者,可以通过编写组件封装商务逻辑。例如,可以编写组件来计算产品的销售税。然后可以在处理销售订单的脚本中调用这个组件。在订单的处理过程中独立计算税率可以在某地销售税改变的时候只更新组件,而无须更改整个处理过程。可以使用任何支持组件对象模型 (com) 的语言来编写组件,如,c、c++、java 或 visual basic。如果熟悉 com 编程,activex 组件就是 automation 服务器。要在 web 服务器上运行,activex 组件不能有图形用户接口元素,如 visual basic 的 msgbox 函数。

组件是可以重复使用的。在 web 服务器上安装了组件后,就可以从 asp 脚本、isapi 应用程序、服务器上的其他组件或由另一种 com 兼容语言编写的程序中调用该组件。

生成组件对象的实例

组件是包含在动态链接库 (.dll) 或可执行文件 (.exe) 中的可执行代码。组件可以提供一个或多个对象以及对象的方法和属性。要使用组件提供的对象,请创建对象的实例并将这个新的实例分配变量名。使用 asp 的 server.createobject 方法可以创建对象的实例。接着,使用脚本语言的变量分配指令为对象实例命名。创建对象实例时,必须提供实例的注册名称 (progid)。对于由 asp 提供的基本组件,可以从参考页中获得对象的 progid。

例如,asp 的 ad rotator 组件在图形广告中任意循环。ad rotator 组件提供了一个被称为 ad rotator 对象,该对象的 progid 是 "mswc.adrotator"。要创建一个 ad rotator 对象的实例,请使用下列指令:

vbscript:

<% set myads = server.createobject("mswc.adrotator") %>

jscript:

<% var myads = server.createobject("mswc.adrotator") %>

如果您已经非常熟悉 vbscript 或者 jscript ,将会注意到没有使用创建新对象实例的脚本语言函数,如 vbscript 中的 createobject 或 jscript 中的 new。您必须使用 asp 的 server.createobject 方法,否者 asp 无法跟踪脚本语言中对象的使用。

使用 html <object> 标签同样可以创建对象实例。您必须为 runat 属性提供服务器值,同时也要为将在脚本语言中使用的变量名提供 id 属性组。使用注册名 (progid) 或注册号码 (clsid) 可以识别该对象。下面的例子使用注册名 (progid) 创建 ad rotator 对象的实例:

<object runat=server id=myad progid="mswc.adrotator"></object>

下面的例子使用注册号码 (clsid) 创建 ad rotator 对象的实例:

<object runat=server id=myad classid="clsid:1621f7c0-60ac-11cf-9427-444553540000"></object> 从 java 类中创建一个对象

使用 java 语言编写的 activex 组件可作为 java 类而不是 dll 提交。要使用 server.createobject 创建 java 类对象的实例,必须使用 javareg 程序将该类注册为 com 组件。然后就能够以 progid 或 clsid 使用 server.createobject 了。

如果对象实例不需要访问 asp 内建对象和参与事务,就可以使用由 java 监视程序提供的更为简单的机制直接调用 java 类。必须用 microsoft virtual machine for java 2.0(由该 internet information server 和 personal web server 的发布版提供)使用 java 监视程序。

如果要使用监视程序实例化对象,就必须使用 vbscript 或者 jscript 的 getobject 指令并以 java:classname 的形式提供 java 类的全名。下面这个关于 vbscript 的例子生成了 java date 对象的实例。

<% dim dateset date = getobject("java:java.util.date")%><p> the date is <%= date.tostring() %>

通过调用 getobject 而不是 server.createobject 生成的对象不能访问 asp 内建对象也不能参与事务处理。

使用 asp 内建对象

asp 提供执行任务的内建对象。例如,request 对象存储从 html 表格参考。

调用 object 方法

方法是可以在对象上所执行或使用对象执行的活动。调用方法的一般语法为:

object.method parameters

参数随着方法的不同而不同。

例如,可以按照下列的指令,使用 response 内建对象的 write 方法将信息发送到浏览器:

<% response.write "hello world" %>

注意 一些脚本语言不支持 object.method语法。如果使用的语言不支持该语法,那么为了将该语言作为主脚本语言,就必须在注册表中加入条目。

设置对象属性

属性是描绘对象的特征值。属性定义对象的特征(如对象类型)或对象的状态(如启用或禁用)。常规语法为:

object.property

可以读取并设置属性值。对某些对象,还可以添加新属性。

例如,ad rotator 组件有 border 属性,该属性指定广告是否有边框及边框的粗细。下面的表达式指明没有边框:

<% myads.border = 0 %>

可以使用 asp 输出指令显示某些属性的当前值。例如,如果浏览器仍然与服务器连接,下面的命令将返回 true:

<%= response.isclientconnected %>

所到之处必成水坛!
2006/9/26 14:26:59
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
使用集合

大多数 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 objectvar mycoll = new enumerator(session.contents);//iterate through the collection and display each itemwhile (!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 variablesdim 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 ifnext %> 遍历对象集合

session 和 application 集合可以保存数量变量或者对象实例。contents 集合拥有数量变量和通过调用 server.createobject 生成的对象实例。staticobjects 集合拥有在 global.asa 文件中使用 html <object> 元素创建的对象。

在遍历包含对象的集合时,可以访问对象的标识符或对象的方法和属性。例如,假设应用程序使用一些对象创建用户帐号,而且每个对象有初始化方法,可以遍历 staticobjects 集合来调用每个初始化方法:

<%for each object in session.staticobjects session.staticobjects(object).initializeusernext%> asp 集合有何不同之处?

尽管在本主题中讨论的 asp 集合与 visual basic 的 collection 对象非常相似,但还是有些不同。asp 集合支持 count 属性和 item 方法,但不支持 add 和 remove 方法。

所到之处必成水坛!
2006/9/26 14:27:31
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
设置对象作用域

对象的作用域决定哪些脚本可以使用该对象。默认情况下,当您创建对象实例时,该对象具有页作用域。同一 asp 页中的任何脚本命令都能使用该页作用域的对象;当 asp 页送回客户端时,该对象即被释放。对大多数对象来说,推荐的作用域是页作用域。您可以改变一个对象的作用域,使其可被其他页的脚本使用。本主题将解释如何使用页作用域的对象以及如何改变对象的作用域。

使用页作用域对象

在 asp 页上用 server.createobject 创建的对象在该页的生存期内一直存在。该对象对该页的任何脚本命令都是可访问的,当 asp 处理完该页时,该对象即被释放。因此,对象具有该页的作用域或生命周期。

在用 visual basic 或 vbscript 编程时,要注意在 asp 处理完该页之前不要释放对象。例如,以下语句经常用于通过将对象变量赋以 nothing 值来释放对象:

set myobj = nothing

如果您在 asp 页中包含了该语句,那么任何使用 myobj 的企图都将会返回一个预期的错误代码。但在内部,即使在对象释放以后,asp 仍保留对它的引用。当您在脚本中不能使用对象时,对象的资源直到 asp 处理完页之后才释放。同样,如果您通过创建另一个对象实例并将其赋给已使用过的对象变量来释放该对象时,asp 将保留对原对象实例的引用。对大多数脚本来说,创建多个对象可能不会产生问题,但如果对象使用共享资源,比如数据库连接,就有可能出现问题。

由于对象有页作用域,所以不要依靠手工释放的对象。例如,以下的循环创建 1001 个 connection 对象,它将能打开大多数的连接甚至于一个大型的 sql server:

<% for i = 0 to 1000 set conn = server.createobject("adodb.connection") conn.open "connection string"next %>

总的来说,应该尽量避免在一个循环内部创建对象。如果无法避免,您应该手工释放被对象使用过的资源。如果 connection 对象仅被创建一次,且数据资源的物理连接在每个循环中被打开然后关闭,那么上例将会正常运行:

<%set conn = server.createobject("adodb.connection")for i = 0 to 1000 conn.open "connection string" conn.close next%> 为对象赋予会话作用域

在应用程序中,对于每个新会话,都会创建 session-scope 对象,并且在会话结束后会将其释放。因此,每个活动的会话都有一个对象。会话作用域用于从多个脚本中调用的对象,但只影响一个用户会话。您可以只在需要时才为对象赋予会话作用域。如果确实需要使用会话作用域,那么就必须了解提供对象的组件的线程模型,因为它影响性能和对象的安全环境。详细信息,请参阅本主题的“高级信息:性能问题” 。

要为对象赋予会话作用域,请将对象存储在 asp session 内建对象中,您既可以在 global.asa 文件中使用 <object> 标记,也可以在 asp 页上使用 server.createobject 方法创建具有会话作用域的对象实例。

在 global.asa 文件中,您可用扩展了 runat 属性(必须设置为 sever)和 scope 属性(必须设置为 session)的 ;object> 标记。以下示例创建一个 ad rotator 对象的会话作用域实例:

<object runat=server scope=session id=myad progid="mswc.adrotator"></object>

一旦您在 session 对象中存储了对象,您就可以从应用程序的任何页中访问该对象。下面的语句使用上例中由 <object> 标记创建的对象实例:

<%= myad.getadvertisement("addata.txt") %>

在 asp 页上,您也可以使用 server.createobject 方法将对象存储在 session 内建对象中。以下示例在 session 对象中存储 ad rotator 对象的一个实例。

<% set session("myad") = server.createobject("mswc.adrotator") %>

要显示广告,您首先应该获取存储在 session 对象中的 ad rotator 对象的实例,然后才能调用方法来显示对象:

<% set myad = session("myad") %> <%= myad.getadvertisement("addata.txt") %>

在用 <object> 标记声明的对象被某个 .asp 文件中的脚本命令引用之前,asp 并不创建其实例。server.createobject 方法则立即创建该对象实例。因此,对会话作用域对象来说,使用 <object> 标记要比 server.createobject 属性更好。

为对象赋予应用程序作用域

application-scope 对象是在应用程序启动时就创建的对象的单个实例。该对象由所有客户端请求共享。仅在极少数情况下,您才需要为对象赋予应用程序作用域。一些实用程序对象,例如计数器等,可能需要应用程序作用域。但一般来说,您可用在下一节中建议的替代方案。另外,线程模型会影响性能和对象安全环境(请参阅本主题的“高级信息:性能问题”)。

要为对象赋予应用程序作用域并将其存储在 asp application 内建对象中,既可以使用 global.asa 文件中的 <object> 标记,也可以使用 asp 页上的 server.createobject 方法创建应用程序作用域的对象实例。

在 global.asa 文件中,您可用扩展了 runat 属性(必须设置为 sever)和 scope 属性(必须设置为 session)的 ;object> 标记。在 asp 页中,您可以使用 server.createobject 将对象实例存储在 application 内建对象中。关于使用 <object> 标记和 server.createobject 的示例,请参阅上一节“为对象赋予会话作用域”。

会话和应用程序作用域的替代方案

仅当需要时,才能为对象赋予会话或应用程序作用域。因为在会话或应用程序结束运行之前,这些对象会一直保留。它们会占用内存或数据库连接等资源,这些资源可能会在其他方面更有用。另外,组件的线程模型会影响您从中所创建的对象的性能,尤其是那些具有会话或应用程序作用域的对象。

在很多情况下,比创建应用程序或会话作用域对象更好的方法就是利用会话或应用程序作用域变量,将信息传递给在网页一级创建的对象。例如,不要为 ado connection 对象赋予会话或应用程序作用域,因为它创建的连接会在相当长的一段时间一直保持打开而此时脚本已不再使用 odbc 连接共享。但您可以将 odbc 连接字符串存储在 session 或 application 内建对象中,并在网页上从创建的 connection 对象实例中获取该字符串。通过这种方式,您可以存储在会话或应用程序名称空间中频繁使用的信息,但只有在需要时才创建用该信息的对象。关于作用域变量的详细信息,请参阅“使用变量和常量”。

用户自定义的 jscript 对象

您可以通过定义一个创建和初始化新对象的属性和方法的构造函数来创建自己的 jscript 对象。当脚本用 new 操作符来调用构造函数时,就会创建该对象的实例。asp 脚本支持用户自定义的对象,当具有页作用域时,后者正常运行。但如果为用户自定义的 jscript 对象赋予应用程序或会话作用域,将可能影响该对象的功能。特别是,若一个对象具有会话或应用程序作用域,则其他页的脚本可以获取该对象的属性,但是却不能调用其方法。

高级信息:性能问题

组件的线程模型可能会影响 web 站点的性能,一般来说,带有 both 标记的对象是推荐在所有的 asp 脚本中使用的对象,尤其是在 session 和 application 对象中。不推荐使用单线程对象。

因为您可能不会始终控制所用对象的线程模型,所以,以下的指导可帮助您获得最佳性能:

页作用域对象。带有 both 或 apartment 标记的对象将给予您最佳的性能。 应用程序作用域对象。一般来说,应避免在 application 对象中放置对象。如果确需使用应用程序作用域对象,您会从结合了 freethreadedmarshaler 的带有 both 标记的对象中获得最佳性能。您既可以用 <object> 标记也可以用 server.createobject 方法在 application 对象中存储带有 single、free 或 both 标记的对象。您必须用单元线程对象来使用 <object> 标记。 会话作用域对象。带有 both 标记的对象将为您提供最佳性能。用单线程或单元线程对象会导致 web 服务器将会话锁定在一个线程上。自由线程对象不会锁定会话,但运行速度不高。在 session 对象中,您可以用 <object> 标记或 server.createobject 方法存储对象 。

如果您已安装了 sdk 文档,您将会获得有关线程模型及其隐含的组件性能的详细信息。(在 windows 95 及其后续版本中 sdk 文档不可用。)

所到之处必成水坛!
2006/9/26 14:28:17
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线
asp 内建对象

active server pages 提供内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息(如用户首选项)。本文简要说明每一个对象。

application 对象

可以使用 application 对象使给定应用程序的所有用户共享信息。

request 对象

可以使用 request 对象访问任何用 http 请求传递的信息,包括从 html 表格用 post 方法或 get 方法传递的参数、cookie 和用户认证。request 对象使您能够访问发送给服务器的二进制数据,如上载的文件。

response 对象

可以使用 response 对象控制发送给用户的信息。包括直接发送信息给浏览器、重定向浏览器到另一个 url 或设置 cookie 的值。

server 对象

server 对象提供对服务器上的方法和属性进行的访问。最常用的方法是创建 activex 组件的实例 (server.createobject)。其他方法用于将 url 或 html 编码成字符串,将虚拟路径映射到物理路径以及设置脚本的超时期限。

session 对象

可以使用 session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 session 对象中的变量不会清除;而用户在应用程序中访问页时,这些变量始终存在。也可以使用 session 方法显式地结束一个会话和设置空闲会话的超时期限。

objectcontext 对象

可以使用 objectcontext 对象提交或撤消由 asp 脚本初始化的事务。

所到之处必成水坛!
2006/9/26 14:29:08
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线

asp 内建对象速查卡


application 对象
集合:
contents
staticobjects
方法:
lock
unlock
事件:
application_onend
application_onstart

objectcontext 对象
方法:
setabort
setcomplete
事件:
ontransactionabort
ontransactioncommit

request 对象
集合:
clientcertificate
cookies
form
querystring
servervariables
属性:
totalbytes
方法:
binaryread

response 对象
集合:
cookies
属性:
buffer
cachecontrol
charset
contenttype
expires
expiresasolute
isclientconnected
pics
status
方法:
addheader
appendtolog
binarywrite
clear
end
flush
redirect
write

server 对象
属性:
scripttimeout
方法:
createobject
htmlencode
mappath
urlencode

session 对象
集合:
contents
staticobjects
属性:
codepage
lcid
sessionid
timeout
方法:
abandon
事件:
session_onend
session_onstart

所到之处必成水坛!
2006/9/26 14:29:43
木头







角  色:VIP会员
发 帖 数:1982
经 验 值:7293
注册时间:2005/6/8
当前状态:离线

activex 组件

本部分概述了 active server pages(asp)中的 activex 组件。

activex 组件作为基于 web 的应用程序部分在 web 服务器上运行。组件提供了应用程序的主要功能(如访问数据库),这样就不必创建或重新创建执行这些任务的代码。

数据库访问

可以使用 database access 组件在应用程序中访问数据库。然后可以显示表的整个内容、允许用户构造查询以及在 web 页执行其他一些数据库查询。

ad rotator

可以使用 ad rotator 组件来交替显示图像,并提供从显示的图形到另一个 url 的链接。在文本文件中保存广告列表;ad rotator 组件依照在数据文件中的指令来显示它们。

content rotator

content rotator 组件在 web 页上自动循环 html 内容字符串。每次用户请求 web 页时,content rotator 组件基于 content schedule 文件中指定的信息显示新的 html 内容字符串。

由于内容字符串可以包含 html 标记,就可以显示 html 能够表示的任何内容类型:文本、图形或超文本链接。例如,可以使用该组件在每日牌价或超文本链接中循环,或者在每次打开 web 页时,改变文本和背景的颜色。

browser capabilities

通过使用 browser capabilities 组件,可以基于浏览器的功能剪裁发送到该浏览器的内容。

file access

file access 组件提供可用于在计算机文件系统中检索和修改文件的对象。

content linking

content linking 组件使在应用程序中提供 .asp 文件的逻辑导航变得简单易行。不用在许多 .asp 文件中维护 url 引用,而只需在易于编辑的文本文件中指定 .asp 文件的次序组织。

collaboration data objects for windows nt server

collaboration data objects for nts 组件提供 web 应用程序所使用的邮件对象。这个库使您能够简单快捷地在应用程序上添加收发邮件的功能。您可以创建可编程邮件对象,然后利用它们的属性和方法来满足应用程序的需要。

myinfo、status、system 和 tools

myinfo、status、system 和 tools 组件为在 macintosh 上和在运行 microsoft windows 的计算机上开发的应用程序提供兼容性。

  • myinfo 组件跟踪 web 站点所有者的个人信息,如经营 web 站点的组织名称和地址及 web 站点的设置,还有 web 站点是否有 guest book。
  • status 组件跟踪 web 站点的信息,如访问者的数量以及 http 连接的个数。
  • system 组件创建包含服务器状态信息的 status 对象。当前该服务器状态只在 personal web server for macintosh 上可用。
  • tools 组件提供了生成随机数、检查文件是否存在或处理 html 表格的方法。

page counter

page counter 组件统计并显示 web 页被请求的次数。以一定的时间间隔,将捕获的数字写入到文本文件中,这样服务器关闭后,数据也不会丢失。

permission checker

permission checker 组件测试 web 用户对某文件或某页的访问权。可以使用 permission checker 组件为不同类型的用户定制基于 asp 的页。例如,如果 web 页包含超文本链接,就可以使用 permission checker 组件测试用户对相应 web 页的访问权限并忽略用户无权访问的页或使这些链接失效。

所到之处必成水坛!
2006/11/2 11:27:34
Samhelp







角  色:管理员
发 帖 数:6153
经 验 值:15989
注册时间:2004/8/23
当前状态:离线
Re:[分享]ASP 系列函数大全

ASP 系列函数大全

ASP函数与VBSCRIPT类似,以下举一些常用的函数 
 
Array()
 
函数返回一个数组 
 
表达式 Array(list) 
 
允许数据类型: 字符,数字均可 
 
实例: <% 
 
Dim myArray() 
 
For i = 1 to 7 
 
Redim Preserve myArray(i) 
 
myArray(i) = WeekdayName(i) 
 
Next 
 
%> 
 
返回结果: 建立了一个包含7个元素的数组myArray 
 
myArray("Sunday","Monday", ... ... "Saturday") 
 
 
CInt() 
 
函数将一个表达式转化为数字类型 
 
表达式 CInt(expression) 
 
允许数据类型: 任何有效的字符均可 
 
实例: <% 
 
f = "234" 
 
response.write cINT(f) + 2 
 
%> 
 
返回结果: 236 
 
转化字符"234"为数字"234",如果字符串为空,则返回0值 
 
 
CreateObject() 
 
函数建立和返回一个已注册的ACTIVEX组件的实例。 
 
表达式 CreateObject(objName) 
 
允许数据类型: objName 是任何一个有效、已注册的ACTIVEX组件的名字. 
 
实例: <% 
 
Set con = Server.CreateObject("ADODB.Connection") 
 
%> 
 
 
CStr() 
 
函数转化一个表达式为字符串. 
 
表达式 CStr(expression) 
 
允许数据类型: expression 是任何有效的表达式。 
 
实例: <% 
 
s = 3 + 2 
 
response.write "The 返回结果 is: " & cStr(s) 
 
%> 
 
返回结果: 转化数字“5”为字符“5”。 
 
 
Date() 
 
函数返回当前系统日期. 
 
表达式 Date() 
 
允许数据类型: None. 
 
实例: <%=Date%> 
 
返回结果: 9/9/00 
 
 
DateAdd() 
 
函数返回一个被改变了的日期。 
 
表达式 DateAdd(timeinterval,number,date) 
 
允许数据类型: 
timeinterval is the time interval to add; 
number is amount of time intervals to add; 
and date is the starting date. 
 
实例: <% 
 
currentDate = #9/9/00# 
 
newDate = DateAdd("m",3,currentDate) 
 
response.write newDate 
 
%> 
 
 
<% 
 
currentDate = #12:34:45 PM# 
 
newDate = DateAdd("h",3,currentDate) 
 
response.write newDate 
 
%> 
 
返回结果: 9/9/00 
 
3:34:45 PM 
 
"m" = "month"; 
 
"d" = "day"; 
 
If currentDate is in time format then, 
 
"h" = "hour"; 
 
"s" = "second"; 
 
 
DateDiff() 
 
函数返回两个日期之间的差值 。 
 
表达式 DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]]) 
 
允许数据类型: timeinterval 表示相隔时间的类型,如“M“表示“月”。 
 
实例: <% 
 
fromDate = #9/9/00# 
 
toDate = #1/1/2000# 
 
response.write "There are " & _ 
 
DateDiff("d",fromDate,toDate) & _ 
 
" days to millenium from 9/9/00." 
 
%> 
 
返回结果: 从9/9/00 到2000年还有 150 天. 
 
 
Day() 
 
函数返回一个月的第几日 . 
 
表达式 Day(date) 
 
允许数据类型: date 是任何有效的日期。 
 
实例: <%=Day(#9/9/00#)%> 
 
返回结果: 4 
 
 
FormatCurrency() 
 
函数返回表达式,此表达式已被格式化为货币值 
 
表达式 FormatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
 
允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置; LeadingDigit 三态常数,指示是否显示小数值小数点前面的零。

实例: <%=FormatCurrency(34.3456)%> 
 
返回结果: $34.35 
 
 
FormatDateTime() 
 
函数返回表达式,此表达式已被格式化为日期或时间 
 
表达式 FormatDateTime(Date, [, NamedFormat]) 
 
允许数据类型: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate. 
 
实例: <%=FormatDateTime("09/9/00", vbLongDate)%> 
 
返回结果: Sunday, September 09, 2000 
 
 
FormatNumber() 
 
函数返回表达式,此表达式已被格式化为数值. 
 
表达式 FormatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
 
允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。. 
 
实例: <%=FormatNumber(45.324567, 3)%> 
 
返回结果: 45.325 
 
 
FormatPercent() 
 
函数返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 (%) 
 
表达式 FormatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) 
 
允许数据类型: 同上. 
 
实例: <%=FormatPercent(0.45267, 3)%> 
 
返回结果: 45.267% 
 
 
Hour() 
 
函数以24时返回小时数. 
 
表达式 Hour(time) 
 
允许数据类型: 
 
实例: <%=Hour(#4:45:34 PM#)%> 
 
返回结果: 16 
 
(Hour has been converted to 24-hour system) 
 
 
Instr() 
 
函数返回字符或字符串在另一个字符串中第一次出现的位置. 
 
表达式 Instr([start, ] strToBeSearched, strSearchFor [, compare]) 
 
允许数据类型: Start为搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比较方式(详细见ASP常数) 
 
实例: <% 
 
strText = "This is a test!!" 
 
pos = Instr(strText, "a") 
 
response.write pos 
 
%> 
 
返回结果: 9 
 
 
InstrRev() 
 
函数同上,只是从字符串的最后一个搜索起 
 
表达式 InstrRev([start, ] strToBeSearched, strSearchFor [, compare]) 
 
允许数据类型: 同上. 
 
实例: <% 
 
strText = "This is a test!!" 
 
pos = InstrRev(strText, "s") 
 
response.write pos 
 
%> 
 
返回结果: 13 
 
 
 
Int() 
 
函数返回数值类型,不四舍五入。 
 
表达式 Int(number) 
 
允许数据类型: 
 
实例: <%=INT(32.89)%> 
 
返回结果: 32 
 
 
IsArray() 
 
函数判断一对象是否为数组,返回布尔值 . 
 
表达式 IsArray(name) 
 
实例: <% 
 
strTest = "Test!" 
 
response.write IsArray(strTest) 
 
%> 
 
返回结果: False 
 
 
IsDate() 
 
函数判断一对象是否为日期,返回布尔值 
 
表达式 IsDate(expression) 
 
实例: <% 
 
strTest = "9/4/2000" 
 
response.write IsDate(strTest) 
 
%> 
 
返回结果: True 
 
 
IsEmpty() 
 
函数判断一对象是否初始化,返回布尔值. 
 
表达式 IsEmpty(expression) 
 
实例: <% 
 
Dim i 
 
response.write IsEmpty(i) 
 
%> 
 
返回结果: True 
 
 
IsNull() 
 
函数判断一对象是否为空,返回布尔值. 
 
表达式 IsNull(expression) 
 
实例: <% 
 
Dim i 
 
response.write IsNull(i)

%>

返回结果: False 
 
 
IsNumeric() 
 
函数判断一对象是否为数字,返回布尔值. 
 
表达式 IsNumeric(expression) 
 
实例: <% 
 
i = "345" 
 
response.write IsNumeric(i) 
 
%> 
 
返回结果: True 
 
就算数字加了引号,ASP还是认为它是数字。 
 
 
IsObject() 
 
函数判断一对象是否为对象,返回布尔值. 
 
表达式 IsObject(expression) 
 
实例: <% 
 
Set con = Server.CreateObject("ADODB.Connection") 
 
response.write IsObject(con) 
 
%> 
 
返回结果: True 
 
 
LBound() 
 
函数返回指定数组维的最小可用下标. 
 
表达式 Lbound(arrayname [, dimension]) 
 
实例: <% 
 
i = Array("Monday","Tuesday","Wednesday") 
 
response.write LBound(i) 
 
%> 
 
返回结果: 0 
 
 
LCase() 
 
函数 返回字符串的小写形式 
 
表达式 Lcase(string) 
 
实例: <% 
 
strTest = "This is a test!" 
 
response.write LCase(strTest) 
 
%> 
 
返回结果: this is a test! 
 
 
Left() 
 
函数返回字符串左边第length个字符以前的字符(含第length个字符). 
 
表达式 Left(string, length) 
 
实例: <% 
 
strTest = "This is a test!" 
 
response.write Left(strTest, 3) 
 
%> 
 
返回结果: Thi 
 
 
Len() 
 
函数返回字符串的长度. 
 
表达式 Len(string | varName) 
 
实例: <% 
 
strTest = "This is a test!" 
 
response.write Len(strTest) 
 
%> 
 
返回结果: 15 
 
 
LTrim() 
 
函数去掉字符串左边的空格. 
 
表达式 LTrim(string) 
 
实例: <% 
 
strTest = " This is a test!" 
 
response.write LTrim(strTest) 
 
%> 
 
返回结果: This is a test! 
 
 
Mid() 
 
函数返回特定长度的字符串(从start开始,长度为length). 
 
表达式 Mid(string, start [, length]) 
 
实例: <% 
 
strTest = "This is a test! Today is Monday." 
 
response.write Mid(strTest, 17, 5) 
 
%> 
 
返回结果: Today 
 
 
Minute() 
 
函数返回时间的分钟. 
 
表达式 Minute(time) 
 
实例: <%=Minute(#12:45:32 PM#)%> 
 
返回结果: 45 
 
 
Month() 
 
函数返回日期. 
 
表达式 Month(date) 
 
实例: <%=Month(#08/04/99#)%> 
 
返回结果: 8 
 
 
MonthName() 
 
函数返回指定月份 
 
表达式 MonthName(month, [, Abb]) 
 
实例: <%=MonthName(Month(#08/04/99#))%> 
 
返回结果: August 
 
 
Now() 
 
函数返回系统时间 
 
表达式 Now() 
 
实例: <%=Now%> 
 
返回结果: 9/9/00 9:30:16 AM 
 
 
Right() 
 
函数返回字符串右边第length个字符以前的字符(含第length个字符). 
 
表达式 Right(string, length) 
 
实例: <% 
 
strTest = "This is an test!" 
 
response.write Right(strTest, 3) 
 
%> 
 
返回结果: st! 
 
 
Rnd() 
 
函数产生一个随机数. 
 
表达式 Rnd [ (number) ] 
 
实例: <% 
 
Randomize()

Rnd() 
 
函数产生一个随机数. 
 
表达式 Rnd [ (number) ] 
 
实例: <% 
 
Randomize() 
response.write RND() 
 
%> 
 
返回结果: 任何一个在0 到 1 之间的数 
 
 
Round() 
 
函数返回按指定位数进行四舍五入的数值. 
 
表达式 Round(expression [, numRight]) 
 
实例: <% 
 
i = 32.45678 
 
response.write Round(i) 
 
%> 
 
返回结果: 32 
 
 
Rtrim() 
 
函数去掉字符串右边的字符串. 
 
表达式 Rtrim(string) 
 
实例: <% 
 
strTest = "This is a test!! " 
 
response.write RTrim(strTest) 
 
%> 
 
返回结果: This is a test!! 
 
 
Split() 
 
函数将一个字符串分割并返回分割结果 
 
表达式 Split (S[,d]) 
 
实例:<%V= Split(A,B,C) 
 
For i = 0 To UBound(V) 
 
Response.Write V(i) 
 
Next 
 
%> 
 
返回结果: A B C 
 
 
Second() 
 
函数返回秒. 
 
表达式 Second(time) 
 
实例: <%=Second(#12:34:28 PM#)%> 
 
返回结果: 28 
 
 
StrReverse() 
 
函数反排一字符串 
 
表达式 StrReverse(string) 
 
实例: <% 
 
strTest = "This is a test!!" 
 
response.write StrReverse(strTest) 
 
%> 
 
返回结果: !!tset a si sihT 
 
 
Time() 
 
函数返回系统时间. 
 
表达式 Time() 
 
实例: <%=Time%> 
 
返回结果: 9:58:28 AM 
 
 
Trim() 
 
函数去掉字符串左右的空格. 
 
表达式 Trim(string) 

 
实例: <% 
 
strTest = " This is a test!! " 
 
response.write Trim(strTest) 
 
%> 
 
返回结果: This is a test!! 
 
 
UBound() 
 
函数返回指定数组维数的最大可用下标>. 
 
表达式 Ubound(arrayname [, dimension]) 
 
实例: <% 
 
i = Array("Monday","Tuesday","Wednesday") 
 
response.write UBound(i) 
 
%> 
 
返回结果: 2 
 
 
UCase() 
 
函数返回字符串的大写形式. 
 
表达式 UCase(string) 
 
允许数据类型: 
 
实例: <% 
 
strTest = "This is a test!!" 
 
response.write UCase(strTest) 
 
%> 
 
返回结果: THIS IS A TEST!! 
 
 
VarType() 
 
函数返回指示变量子类型的值 
 
表达式 VarType(varName) 
 
实例: <% 
 
i = 3 
 
response.write varType(i) 
 
%> 
 
返回结果: 2(数字)详见"asp常数" 
 
 
WeekDay() 
 
函数返回在一周的第几天. 
 
表达式 WeekDay(date [, firstdayofweek]) 
 
实例: <% 
 
d = #9/9/00# 
 
response.write Weekday(d) 
 
%> 
 
返回结果: 4(星期三) 
 
 
WeekDayName() 
 
函数返回一周第几天的名字. 
 
表达式 WeekDayName(weekday [, Abb [, firstdayofweek]]) 
 
实例: <% 
 
d = #9/9/00# 
 
response.write WeekdayName(Weekday(d)) 
 
%> 
 
返回结果: Wednesday 
 
 
Year() 
 
函数返回当前的年份. 
 
表达式 Year(date) 
 
实例: <%=Year(#9/9/00#)%> 
 
返回结果: 1999

网内存知己,天涯若比邻
2006/11/2 23:47:02
ab1248







角  色:普通会员
发 帖 数:45
经 验 值:114
注册时间:2006/10/29
当前状态:离线
Re:[分享]微软Asp参考手册
难得的好帖也!