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 date
Set 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 %>