91
第 11 第 使使 ActiveX 使使使使使

第11章 使用 ActiveX 服务器组件

  • Upload
    goro

  • View
    87

  • Download
    3

Embed Size (px)

DESCRIPTION

第11章 使用 ActiveX 服务器组件. 本章主要内容. 安装好 ASP 使用环境后,就可以使用一些它附带的组件,还可以从 Internet 上下载无数的组件。甚至可以创建自己的组件。 本章主要讨论以下各种 组件 的使用: 文件访问组件 广告轮播组件 浏览器信息组件 内容链接组件 创建自己的组件. 本章目录. 11.5 自制 ActiveX 服务器组件. 11.1 文件访问. 11.1.1 使用文本文件. 11.5.1 建立组件文件. 11.1.2 文件夹对象. 11.1.3 驱动器. 11.5.2 注册组件. 11.1.4 文件处理. - PowerPoint PPT Presentation

Citation preview

Page 1: 第11章  使用 ActiveX 服务器组件

第 11 章 使用 ActiveX服务器组件

Page 2: 第11章  使用 ActiveX 服务器组件

本章主要内容 •安装好 ASP使用环境后,就可以使用一些它附带的组件,还可以从 Internet上下载无数的组件。甚至可以创建自己的组件。本章主要讨论以下各种组件的使用:– 文件访问组件 – 广告轮播组件 – 浏览器信息组件 – 内容链接组件 – 创建自己的组件

Page 3: 第11章  使用 ActiveX 服务器组件

本章目录

11.4 内容链接组件

11.1.1 使用文本文件 11.1.2 文件夹对象 11.1.3 驱动器 11.1.4 文件处理

11.2 广告轮播

11.1 文件访问

本章小结 习题

11.5 自制 ActiveX服务器组件

11.5.1 建立组件文件

11.3 浏览器信息组件

11.5.2 注册组件 11.5.3 在网页中创建并

使用组件

Page 4: 第11章  使用 ActiveX 服务器组件

11.1 文件访问 • ASP 提供了 FileSystemObject 对象用

于获得对文件、文件夹和驱动器的访问。使用 FileSystemObject 对象,可以创建 File 、 Folder 和 Drive 对象,分别用来代表计算机上的文件、文件夹和驱动器。每一个对象都有一些属性和方式来完成所需的任务。

Page 5: 第11章  使用 ActiveX 服务器组件

11.1.1 使用文本文件 • 使用文本文件可以方便地记录少量信息

或者记录一些没有格式要求的信息。如网页的点击次数等。对此主要讨论以下内容: 1. 创建新文件 2. 读取文件 3. 文件中追加数据

Page 6: 第11章  使用 ActiveX 服务器组件

1. 创建新文件 • 要创建新文件,要按如下步骤:

– 使用 Server 对象的 CreateObject 方法创建文件系统对象( FileSystemObject )

– 用文件系统对象的 CreateTextFile 方法创建文本流文件( TextStream )

– 使用文本流文件的写方法写入一些内容– 用 close 方法关闭这些对象– 释放这些对象

Page 7: 第11章  使用 ActiveX 服务器组件

创建新文件例 • 网页内容

<% Set

objFS=Server.CreateObject("Scripting.FileSystemObject")

set objTextS=objFS.CreateTextFile("C:\asp.txt") objTextS.WriteLine("hello,world!") objTextS.Close set objTextS=Nothing set objFS=nothing%>

创建一个文件系统对象

执行本例脚本

建立文本文件对象

向文件中写入内容

关闭文件

撤消对象

Page 8: 第11章  使用 ActiveX 服务器组件

创建新文件例 • 本例的代码执行后没有任何显示,完成后可通过文本编辑器打开 C盘根目录下 asp.txt文件,观察写入的内容。

• 例中涉及以下内容:– 创建文件系统对象– 建立文本文件对象– 向文件中写入内容– 关闭文本文件– 撤消文本文件对象

Page 9: 第11章  使用 ActiveX 服务器组件

( 1 )创建文件系统对象• 通过服务器对象创建一个文件系统对象

( FileSystemObject )。• 形式如下: Set

objFS=Server.CreateObject("Scripting.FileSystemObject")

• 其中: objFS 为创建的对象名称。

Page 10: 第11章  使用 ActiveX 服务器组件

( 2 )建立文本文件对象•通过执行文件系统对象的 CreateTextFile 方

法,可以建立一个文本文件对象,形式如下:Set 文件变量名=CreateTextFile(文件路径,覆盖方式,编

码方式 )•其中:

文件路径指出要创建文件所在的目录路径及文件名,使用物理路径。

覆盖方式是可选的,默认为 TRUE ,表示如果存在同名的文件,则覆盖该文件,若设置为 FALSE ,则当存在同名文件时会返回错误信息。编码方式是可选的,默认为 FALSE ,表示使用

ASC码形式进行创建和保存。如果选择 TRUE,将以Unicode方式创建和保存。

Page 11: 第11章  使用 ActiveX 服务器组件

( 3 )向文件中写入内容• 向文件中写入内容可使用文本文件对象

的有关方法,主要有如下几种:– write( 字符串 ) :将一个字符串写入文本文

件,但不换行。– writeLine( 字符串 ) :将一个字符串写入文

本文件,并随后写入一个换行符。字符串缺省时,表示只写入一个换行符。

– WriteBlankLines(n):写入 n个换行符。

Page 12: 第11章  使用 ActiveX 服务器组件

( 4 )关闭文本文件• 使用文本文件对象的 close 方法关闭文

本文件,形式如下:objTextS.Close

• 其中 objTexts 为文本文件对象。

Page 13: 第11章  使用 ActiveX 服务器组件

( 5 )撤消文本文件对象•撤消文本文件对象和撤消文件系统对象

分别使用如下形式: set objTextS=Nothing set objFS=nothing

Page 14: 第11章  使用 ActiveX 服务器组件

2. 读取文件 • 要读取文件中的数据,首先需要用文件

系统对象的打开文本文件( OpenTextFile )方法来创建一个TextStream 对象,再用该对象的有关方法来对文件进行读取操作。

Page 15: 第11章  使用 ActiveX 服务器组件

读取文件例<% Set

objFS=Server.CreateObject("Scripting.FileSystemObject") set objTextS=objFS.OpenTextFile("C:\asp.txt",1,False) do while not objTextS.AtEndOfStream thisline=objTextS.readline Response.write thisline & "<Br>" loop objTextS.Close set objTextS=Nothing set objFS=nothing%>

打开文件建立文件系统对象

当文件没有结束时循环

读一行

输出一行

关闭并释放对象

Page 16: 第11章  使用 ActiveX 服务器组件

读取文件例•浏览结果如图

验证本例

Page 17: 第11章  使用 ActiveX 服务器组件

打开文本文件 •打开一个文本文件形式如下:

Set 文件变量 =objFS.OpenTextFile( 文件路径,打开方式,创建选项,编码方式 )

•其中:– 打开方式是可选参数,指出打开该文件是用来进行读、写还

是追加。默认为 1 表示读,设置为 2 时表示进行写操作, 8

表示进行追加操作。 – 创建选项是可选参数,默认为 False ,当设为 TRUE 时,表示

若该文件不存在,创建该文件。 – 格 式 中 的 “ 文 件 路 径 ” 和 “ 编 码 方 式 ” 的 含 义 与

CreateTextFile 方法的相应参数相同。

Page 18: 第11章  使用 ActiveX 服务器组件

文本文件对象的属性 • 文本文件对象有如下几种属性用于读的

控制操作: – AtEndOfLine 表示当前是否处于行末。 – AtEndOfStream 表示当前是否处于文件结束

位置。 – Column 用于返回当前字符的列号,第一个

字符的列号为 1 。 – Line 用于返回当前行处于文件中的第几行。

Page 19: 第11章  使用 ActiveX 服务器组件

文本文件中读取数据 • 文本文件中读取数据有如下几种方法:

– Read(n) 从文本文件中读取 n 个字符。– ReadLine 用于从文本文件中读取给定行号

的一行内容。 – ReadAll 用于读取文件的所有内容。– Skip(n) 跳过 n 个字符。– SkipLine(n) 跳过 n 行。

Page 20: 第11章  使用 ActiveX 服务器组件

3. 文件中追加数据 •要向已经存在的文件中添加内容,可以使用添加方式打开文件,即在打开文件的方法中选择打开方式为 8。形式如下:set objTextS=objFS.OpenTextFile("C:\asp.txt",8)

•其后就可以象创建文件时那样写入内容了。

Page 21: 第11章  使用 ActiveX 服务器组件

文件中追加数据例<% Set objFS=Server.CreateObject("Scripting.FileSystemObject")

set objTextS=objFS.OpenTextFile("C:\asp.txt",8)

objTextS.WriteLine(" 这是向文件中添加的第一行内容 ") objTextS.writeBlanklines(3) objTextS.writeLine(" 这是三个空行后的一行文字 ") objTextS.Close set objTextS=Nothing set objFS=nothing%>

建立文件系统对象打开文件

关闭并释放对象

写入几行内容

Page 22: 第11章  使用 ActiveX 服务器组件

文件中追加数据例•因本例中使用缺省方式,应先执行例 1的脚本。本例脚本执行完后,可通过运行例 2中的脚本来观察结果,显示形式如图所示。

执行例 1脚本 执行本例

脚本

执行例 2 的脚本观察结果

Page 23: 第11章  使用 ActiveX 服务器组件

11.1.2 文件夹对象 •通过文件系统对象的 GetFolder 方法,可

以创建文件夹对象,形式为:set 文件夹变量 = 文件系统对象 .GetFolder(“目录

名” )

•这里的目录名使用物理路径的形式,如果要为某个虚拟目录建立文件夹对象,可以先使用 Server 对象的 MapPath 方法来求出对应的物理路径。

Page 24: 第11章  使用 ActiveX 服务器组件

1. 文件夹对象的属性•创建文件夹对象后,就可以使用该对象

的以下属性:– name 属性 ==> 求出该文件夹的名称– 用 Files 属性集合 ==> 求出该文件夹中包含

的所有文件– 用 SubFolders 属性集合 ==> 得到该文件

夹中所包含的所有子文件夹。

Page 25: 第11章  使用 ActiveX 服务器组件

1. 文件夹对象的属性•另外还有:

– Attributes==>文件属性– DateCreated==> 建立日期和时间– DateLastAccessed==>最后访问日期和时间

– DateLastModified==> 最后修改日期和时间

Page 26: 第11章  使用 ActiveX 服务器组件

2. 文件夹对象的方法•可以使用如下方法:

– Copy==>复制– Delete==>删除– Move==>移动

Page 27: 第11章  使用 ActiveX 服务器组件

文件夹对象使用举例• 例 4 :显示 C 盘根目录中所有文件和文件夹

<% Set objFS=Server.CreateObject("Scripting.FileSystemObject") set objFolder=objFS.GetFolder("c:\") for each folder in objFolder.SubFolders str=folder.name for i=20 to len(str) step -1 str=str & "&nbsp;" next str=str & "&nbsp;&lt;DIR&gt;&nbsp;" &

folder.DateLastModified Response.write str & "<BR>" next

建立文件系统对象

建立文件夹对象

对文件夹中所以子文件夹循环

显示文件夹名称、标志、日期时间

Page 28: 第11章  使用 ActiveX 服务器组件

文件夹对象使用举例 for each file in objFolder.Files str=file.name for i=18 to len(str) step -1 str=str & "&nbsp;" next for i=7 to len(file.size) step -1 str=str & "&nbsp;" next Response.write str & file.size & "&nbsp;" Response.write file.DateLastModified & "<BR>" next set objFolder=Nothing set objFS=nothing%>

对文件夹中所以文件循环

显示文件名、大小

显示文件日期时间释放

对象

Page 29: 第11章  使用 ActiveX 服务器组件

文件夹对象使用举例• 浏览结果

验证本例

Page 30: 第11章  使用 ActiveX 服务器组件

11.1.3 驱动器 •通过文件系统对象的 GetDrive 方法可以

创建一个驱动器对象,使用形式为:set 驱动器对象变量 = 文件系统变量 .GetDrive(“ 驱

动器名” )

•例如:set objDrive=objFS.GetDrive(“C:”)

Page 31: 第11章  使用 ActiveX 服务器组件

驱动器常用的属性•常用的属性:

– FileSystem 文件系统类型– VolumeName 卷标名称– FreeSpace 自由空间– TotalSize 总空间– RootFolder 根文件夹– SerialNumber 序列号– ShareName 共享名称– IsReady 是否就绪– DriveType 启动器类型

Page 32: 第11章  使用 ActiveX 服务器组件

驱动器使用例•例 5 :显示某驱动器的一些属性

<% Set objFS=Server.CreateObject("Scripting.FileSystemObject") set objDrive=objFS.GetDrive("I") str=" 以下显示驱动器的一此属性 <br>" str=str+" 驱动器字母 :" & objDrive.DriveLetter & "<Br>" if objDrive.IsReady then str=str+" 处于就绪状态<BR>" str=str+" 文件系统 :" & objDrive.filesystem & "<BR>" str=str+" 自 由 空 间 :" & int(objDrive.freespace/1024) &

"KB<BR>" str=str+" 总 空 间 :" & int(objDrive.Totalsize/1024/1024) &

"MB<BR>" else str=str+" 不在就绪状态<BR>" end if

建立文件系统对象,建立驱动器对象

驱动器是否就绪

Page 33: 第11章  使用 ActiveX 服务器组件

驱动器使用例•例 5 :显示某驱动器的一些属性(续)

select case objDrive.DriveType case 0:drivetype="未知" case 1:drivetype="软盘 " case 2:drivetype="硬盘 " case 3:drivetype=" 网络盘 " case 4:drivetype="CD-ROM" case 5:drivetype=" 虚拟盘 " end select str=str+" 驱动器类型为 :" & drivetype & "<br>" Response.write str set objdrivet=Nothing set objFS=nothing%>

释放对象

判别驱动器类型

Page 34: 第11章  使用 ActiveX 服务器组件

驱动器使用例•浏览结果如图所示。

注意:读者验证本例时,应在脚本的第 3 行中改用与自已机器相适应的驱动器名。

验证本例

Page 35: 第11章  使用 ActiveX 服务器组件

11.1.4 文件处理 •常用的文件处理包括文件的复制、移动、删除以及检测文件是否存在等。通过文件系统对象的相应方法就可以很方便地实现这些操作。

Page 36: 第11章  使用 ActiveX 服务器组件

1 .拷贝文件 •使用文件系统对象的 CopyFile 方法,可

以实现文件的复制,使用形式:对象变量名 .CopyFile 源文件,目标文件, [ 覆盖方

式 ]

•其中:指出源文件时,可包含统配符来指出多个文件,覆盖方式表示当目标文件存在时,是否覆盖。

Page 37: 第11章  使用 ActiveX 服务器组件

2 .移动文件 •使用文件系统对象的 MoveFile 方法,可以实现文件或文件夹的复制,使用形式:

对象变量名 .MoveFile 源文件,目标文件•同样,可使用统配符来指出移动多个文件,当目标文件存在时,系统将给出错误提示。

Page 38: 第11章  使用 ActiveX 服务器组件

3 .删除文件 •使用文件系统对象的 DeleteFile 方法,可以删除指定的文件,使用格式如下:

对象变量名 .DeleteFile 文件路径•同样可以使用统配符来指出多个文件。

Page 39: 第11章  使用 ActiveX 服务器组件

4 .检测文件是否存在 •通过文件系统对象的 FileExists 方法,可

以检测文件是否存在,使用形式为:对象变量名 .FileExists(“文件路径” )

•对于象文本文件,在打开前,可以先用此方法了解文件是否存在,再决定如何打开该文件。

Page 40: 第11章  使用 ActiveX 服务器组件

5 .使用文件对象 •通过文件系统对象的 GetFile 方法可以创建 File 对象,用该对象同样可以得到文件的有关属性。•使用文件对象同样可以实现文件的复制、移动和删除操作,只是由于源文件已经指定,所以格式有所不同,分别如下:

– 文件对象名 .Copy 新文件, [ 覆盖方式 ]– 文件对象名 . Move 新文件– 文件对象名 . Delete

Page 41: 第11章  使用 ActiveX 服务器组件

文件对象使用例 •例 6:文件操作

<% Set objFS=Server.CreateObject("Scripting.FileSystemObject")

set objTestFile=objFS.CreateTextFile("C:\test.txt")

objTestFile.writeLine("Hello") objTestFile.Close set newFile=objFS.GetFile("c:\test.txt") newFile.copy "c:\test1.txt" newFile.Move "c:\test2.txt" newFile.Delete set objTestFile=Nothing set objFS=nothing%>

创建一个文件

建立文件对象

进行文件操作释放对象

执行本例脚本

Page 42: 第11章  使用 ActiveX 服务器组件

11.2 广告轮播 • 当你需要按照不同的概率随机地显示不

同的广告时,可以使用 ASP附带的 Ad Rotator 组件,称为广告轮换组件。当网页被加载时,它能按照指定的权重选择某一广告图片,并建立对应的超链接,这样,当用户单击该图片时,转向事先指定的网页,同时,可以记录该广告的点击次数。

Page 43: 第11章  使用 ActiveX 服务器组件

11.2 广告轮播 • 示义

统计处理文件

实际网站

网页内容Ad Rotator 组件

网页内容

ASP 文件内容网页内容

图片和超连接网页内容

浏览器得到的内容

点击广告后转到网页

广告信息

实际网站实际网站实际网站实际网站

根据广告信息转到实际网站

随机产生

Page 44: 第11章  使用 ActiveX 服务器组件

11.2 广告轮播 •要使用该组件,需要完成以下几部分内容:

– 准备数据文件(信息文件 )– 在网页中使用组件

• 创建一个组件对象 •调用这个对象 • 建立统计处理网页

Page 45: 第11章  使用 ActiveX 服务器组件

1. 数据文件(信息文件 )• 信息文件包含两部分信息,一部分是公用

信息,包括:– REDIRECT 项用于指出当用户点击广告图片时,重定向到哪个网页文件。

– WIDTH 项指出广告图标的显示宽度。默认值为 440 。

– HEIGHT 项指出图标的显示高度。默认值为 60 。– BORDER 项指出广告图标显示时是否加边框。

Page 46: 第11章  使用 ActiveX 服务器组件

1. 数据文件(信息文件 )•第二部分是各个广告的信息,包含:图片文件名,实际需要转向的地址(网站地址),图片说明信息,该广告的显示权重等 4项信息。

• 例:software.gifhttp://www.microsoft.com微软站点40

Page 47: 第11章  使用 ActiveX 服务器组件

1. 数据文件(信息文件 )• 信息文件完整形式如下:

REDIRECT L11_7a.aspWIDTH 200HEIGHT 30BORDER 0*a1.gifL11_1.asp文件使用的第一个例子30software.gifhttp://www.microsoft.com微软站点40a2.gifL11_2.asp文件使用的第二个例子30

按 30 : 40 : 30 的比例显示 3 个不同的

广告

图片大小为 200*30 ,无边框

信息文件以 txt为扩展名存放

Page 48: 第11章  使用 ActiveX 服务器组件

2. 创建组件对象 •使用 Server 对象的 CreateObject 方法创建组件对象,形式如下:

Set objAd=Server.CreateObject(“MSWC.AdRotator”)

•其中: objAd 为创建的组件对象名

Page 49: 第11章  使用 ActiveX 服务器组件

3.调用组件对象•在网页中需要显示广告图片的位置上调用这个对象的 GetAdverTisment 方法。形式如下:

<%=objAd.GetAdverTisment(“adrot.txt”)%>

•其中:文本文件 adrot.txt 中包含了所有要显示广告的有关信息,称为广告轮播的信息文件。

Page 50: 第11章  使用 ActiveX 服务器组件

3.调用组件对象•从浏览时查看源代码得到,调用组件对象的地方形成了如下形式的超链接:

<A HREF="L11_7a.asp?url=http://www.microsoft.com&image=software.gif"><IMG SRC="software.gif" ALT="微软站点 " WIDTH=200

HEIGHT=30 BORDER=0></A>

•可以看出,该超链接中把真正要转向的位置作为查询字符串发送到指定文件。

Page 51: 第11章  使用 ActiveX 服务器组件

4. 建立统计处理网页•统计处理网页,用于保存广告被点击的次数,并通过 Request(“url”) 得到真正应该转到的地址,用Response 对象的 redirect 方法重定向到目标地址。•一般内容如下:

<%

Response.AppendToLog Request.QueryString(“url”)

Response.Redircet Request.QueryString(“url”)

%>

•其中,前一行是将实际要转到的地址存入日志文件中,后一行实现重定向。

Page 52: 第11章  使用 ActiveX 服务器组件

例:使用广告轮换的网页 •网页内容

<html><body><h2>欢迎你到我的个人主页 </h2><hr><% set

objAd=Server.Createobject("MSWC.AdRotator")%><center><%=objAd.GetAdvertisement("L11_7.txt")

%></center></body></html>

Page 53: 第11章  使用 ActiveX 服务器组件

例:使用广告轮换的网页 • 浏览结果

本例执行时会随机显示如下几种形式。执行本例

脚本

Page 54: 第11章  使用 ActiveX 服务器组件

11.3 浏览器信息组件 •通过浏览器信息组件( BrowserType )

可以获得有关浏览器的必要信息。创建一个 BrowserType 对象的方法如下:

Set objBT=Server.CreateObject(“MSWC.BrowserType”)

•一旦这种类型的对象创建后,就可以通过它的各种属性,得到相应的值。

Page 55: 第11章  使用 ActiveX 服务器组件

BrowserType 对象主要属性: •有如下主要属性:

– ActiveXControls : 指 出 该浏览器 是 否支持ActiveX 控件。

– backgroundsounds :指出该浏览器是否支持背景音乐。

– Beta :指出该浏览器是否测试版。– Browser :指定该浏览器的名称。– Cdf :指出该浏览器是否支持用于 Web 预测的

ChannelDefinitionFormat 。– Cookies :指出该浏览器是否支持 cookies 。– Frames :指出该浏览器是否支持框架。

Page 56: 第11章  使用 ActiveX 服务器组件

BrowserType 对象主要属性: •有如下主要属性:

– Javaapplets : 指 出 该浏览器 是 否支持Java程序。

– Javascript : 指 出 该浏览器 是 否支持JavaScript 。

– Platform :指出该浏览器的运行平台。– Tables :指出该浏览器是否支持表格。– Vbscript : 指 出 该 浏 览 器 是 否 支 持

VBScript 。– Version :指出该浏览器的版本号。

Page 57: 第11章  使用 ActiveX 服务器组件

使用浏览器信息组件 •网页内容

<% set objBT=Server.CreateObject("MSWC.BrowserType")%>浏览器名: <%=objBT.Browser%><BR>版本号: <%=objBT.version%><BR>是否支持框架: <%=objBT.frames%><BR>是否支持 Cookies:<%=objBT.tables%><BR>是否支持背景音乐: <%=objBT.BackgroundSounds%><BR><% set objBT=nothing%>

Page 58: 第11章  使用 ActiveX 服务器组件

使用浏览器信息组件 •浏览结果

验证本例

Page 59: 第11章  使用 ActiveX 服务器组件

11.4 内容链接组件 • 内容链接组件可以方便地根据存放在内

容列表文件中的内容,获得与内容对应的访问地址,从而方便地实现内容列表和自动链接的建立。对此分别讨论以下有关内容: – 目录列表文件 – 创建内容链接对象 – 内容链接对象的方法

Page 60: 第11章  使用 ActiveX 服务器组件

1. 目录列表文件• 目录列表文件的每一行记录了一个网页

地址(或文件名)和对应的说明信息,中间用 TAB隔开,并以 TXT 文件存放。

• 例:t\index1.Gif 图片 1t\index2.Gif 图片 2t\index3.Gif 图片 3t\index4.Gif 图片 4

Page 61: 第11章  使用 ActiveX 服务器组件

2. 创建内容链接对象 • 创建内容链接对象方法如下:

Set 对象变量名=Server.createobject("MSWC.nextlink")

• 即使用 server 对象的 createobject方法。对象创建后就可以使用它的方法实现一些功能。

Page 62: 第11章  使用 ActiveX 服务器组件

3. 内容链接对象的方法 GetListCount( 文件名 ) :求内容列表文件中的行数GetListIndex( 文件名 ) :求当前页在内容列表文件中的索引值,即使用该方法的网页文件名在列表文件中所处的行号。当该页不在列表中时返回零。GetPreviousURL( 文件名 ) :显示列表文件中当前页的前一个页的地址。GetPreviousDescription( 文件名 ) :求列表文件中前一页的说明信息。

Page 63: 第11章  使用 ActiveX 服务器组件

3. 内容链接对象的方法 GetNextURL( 文件名 ) :求列表文件中下一页的地址。GetNextDescription( 文件名 ) :求列表文件中下一页的说明。GetNthURL( 文件名 ,n) :求列表文件中第n 页的地址, n大于页数时,返回最后一页地址。GetNthDescript( 文件名 ,n) :返回列表文件中第 n 页的说明。

Page 64: 第11章  使用 ActiveX 服务器组件

内容链接对象使用例例 9 :为一组图片文件建立一个目录列表

( 1 )建立目录列表文件,文件名为“ L11_9.txt” ,输入内容如下:

t\index1.Gif 图片 1t\index2.Gif 图片 2t\index3.Gif 图片 3t\index4.Gif 图片 4

Page 65: 第11章  使用 ActiveX 服务器组件

例 9 :为一组图片文件建立一个目录列表( 2 )再建立一个网页文件,内容如下:

<% option explicit %><html><body><h1> 内容列表 </h1><UL><%dim nextlink,nlinkcount,iset nextlink=Server.createobject("MSWC.nextlink")nlinkcount=nextlink.getlistcount("L11_9.txt")for i=1 to nlinkcount%><LI><A href="<%= nextlink.getnthurl("L11_9.txt",i)

%>"><%=nextlink.getnthdescription("L11_9.txt",i)%></a><%next%></UL></body></html>

对目录列表文件中每一行循环

显示一个超连接

形成无序列表

Page 66: 第11章  使用 ActiveX 服务器组件

例 9 :为一组图片文件建立一个目录列表• 浏览结果• 在 t子目录中放入一组图片文件,文件名为

index1.Gif 、 index2.Gif等,单击“图片1”链接时,显示如右图。

验证本例

Page 67: 第11章  使用 ActiveX 服务器组件

内容链接对象使用例例 10 : 假 如 有 一 组 图 片 , 文 件 名 分 别 为02.jpg,03.jpg…,希望通过网页的形式逐个显示,可以建立一个网页文件,其内容如下:

<% option explicit %><html><body><% dim objL,nLindex,i set objL=Server.createobject("MSWC.nextlink") nLindex=objL.GetListIndex("L11_10.txt")%><table width="100%" border="0"> <tr>

建立内容链接对象

得到当前网页在目录列表文件中的序号

Page 68: 第11章  使用 ActiveX 服务器组件

例 10 :逐个显示图片<td width="80%"><img src="02.jpg" width="400" height="588"></td> <td> <% if (0<>nLIndex) then Response.write objL.GetNthDescription("L11_10.txt",nLindex) &"<BR>" end if if (nLindex>1) then Response.write "<a href=" & objL.GetPreviousURL("L11_10.txt") Response.write "> 前一页 </a><BR>" end if

显示本页标题

不是第一页时,显示前一页按钮

本页要显示的图片文件

Page 69: 第11章  使用 ActiveX 服务器组件

例 10 :逐个显示图片if (nLindex<>objL.GetListCount("L11_10.txt")) then Response.write "<a href=" &

objL.GetNextURL("L11_10.txt") Response.write "> 下一页 </a>" end if %> </td> </tr></table></body></html>

不是最后一页时,显示下一页按钮

Page 70: 第11章  使用 ActiveX 服务器组件

例 10 :逐个显示图片• “其中:文件 02.jpg”是要显示的图片的文件名,

“假设把它保存成 02.asp”,接着可以把代码中“的 02.jpg” “改为 03.jpg”,并把该文件另存为

“ 03.asp”,重复上述过程,根据不同的图片文件产生一系列的 ASP网页文件。

Page 71: 第11章  使用 ActiveX 服务器组件

例 10 :逐个显示图片•建 立 一 个 内 容 列 表 文 件 ( 本 例 中 文 件 名为“ L11_10.txt” ,形式如下:

04.asp 童趣 02.asp 泰山一游 03.asp 相伴一生

Page 72: 第11章  使用 ActiveX 服务器组件

例 10 :逐个显示图片•最后打开网页,根据图片文件的内容,可以依次游览出如下各图所示结果。

验证本例

Page 73: 第11章  使用 ActiveX 服务器组件

内容链接对象使用例例 11 :在线教程可以建立一组如下形式的网页,并建立一个列表文件,将各页对应的标题记录下来,这样用户就可以按顺序地浏览网页了。

<% option explicit %><html><body>这里是教程某一页的显示内容...<p><%dim objL,nLindex,iset objL=Server.createobject("MSWC.nextlink")

建立内容链接对象

Page 74: 第11章  使用 ActiveX 服务器组件

例 11 :在线教程nLindex=objL.getlistindex("L11_11.txt")

if (nLindex>1) then

Response.write "<a href=" & objL.GetPreviousURL("L11_11.txt") & ">"

Response.write "( 前 一 页 )" & objL.GetPreviousDescription("L11_11.txt")

Response.write "</a>&nbsp;&nbsp;"

end if

得到当前网页在目录列表文件中的序号

不是第一页时,显示前一页按钮

Page 75: 第11章  使用 ActiveX 服务器组件

例 11 :在线教程if (nLindex<>objL.getlistcount("L11_11.txt")) then

Response.write "<a href=" & objL.GetNextURL("L11_11.txt") &">"

Response.write "( 后 一 页 )" & objL.GetNextDescription("L11_11.txt")

Response.write "</a>"

end if

%>

</p>

</body>

</html>

不是最后一页时,显示下一页按钮

Page 76: 第11章  使用 ActiveX 服务器组件

例 11 :在线教程•内容列表文件如下所示:

L11_11.asp 第一节L11_11a.asp 第一节 (续 )L11_11b.asp 第二节

Page 77: 第11章  使用 ActiveX 服务器组件

例 11 :在线教程•浏览结果 验证本例

Page 78: 第11章  使用 ActiveX 服务器组件

11.5 自制 ActiveX 服务器组件 •为 了 进 一 步 的 开发, 有必要 了解自己制 作ActiveX 服务器组件的一般方法。•在许多不同的编程环境中都可以制作 ActiveX 服务器组件,但对于本课程来说,用 Visual Basic来制作 ActiveX 服务器组件是最方便的,具体过程如下:( 1 )建立组件文件(动态链接库)( 2 )注册组件( 3 )在 ASP 文件中使用组件

Page 79: 第11章  使用 ActiveX 服务器组件

11.5.1 建立组件文件 建立组件文件按如下过程进行:

– 新建 ActiveX DLL

– 设置工程名和类模块名– 输入函数定义– 指出工程的起始位置– 保存工程,编译生成动态连接库文件

Page 80: 第11章  使用 ActiveX 服务器组件

1. 新建 ActiveX DLL •首先,打开 Visual Basic 5.0 ,在出现的初始窗口中,选择新建 ActiveX DLL ,如图所示。

Page 81: 第11章  使用 ActiveX 服务器组件

2. 建立组件文件•单击工程资源管理器窗口中的工程 1 ,从属性窗口中将其改名为 MyPrj ,再单击类模块名 (Class1) ,从属性窗口中将其改名为 Math 。

Page 82: 第11章  使用 ActiveX 服务器组件

2. 建立组件文件•这样就确定了以后在 ASP 网页中需要创建的组件名称了。形式为:

Set obj=Server.CreateObject(“MyPrj.Math”)

•其中: MyPrj 为工程名,而不是工程文件名, Math 为工程中类模块名,而不是类模块文件名。尽管两者可以同名。

Page 83: 第11章  使用 ActiveX 服务器组件

3.输入函数定义•在类模块的代码窗口输入函数定义,这些函数在 ASP 文件中将作为所创建的对象的方法使用,本例中以定义一个求两个数的最大公约数为例,输入以下内容:

Public Function gcd(a, b) Dim r If b = 0 Then gcd = a Else r = a Mod b While r <> 0 a = b b = r r = a Mod b Wend gcd = b End IfEnd Function

Page 84: 第11章  使用 ActiveX 服务器组件

4. 指出工程的起始位置•接着再在“工程”菜单中选择“添加模块”,在模块的代码窗口输入如下内容:

Sub Main()

 

End Sub

•用于指出工程的起始位置。如图所示:

Page 85: 第11章  使用 ActiveX 服务器组件

5.编译生成动态连接库文件 • 最后形成的工程资源管理器窗口形式如图。

• 选择“文件”菜单中的“保存工程”将文件存盘,再在“文件”菜单中选择“生成MyPrj.dll” ,编译生成一个动态连接库文件“ MyPrj.dll”.

Page 86: 第11章  使用 ActiveX 服务器组件

11.5.2 注册组件 •进入 MS-DOS 方式,在存放 MyPrj.dll 的目录下执行如下的注册命令:

c:\windows\system\regsvr32 MyPrj.dll

•其中前面部分是文件 regsvr32.exe 所在的目录路径。用户应根据自己机器的安装情况作适当调整。正确执行后显示如图提示。

Page 87: 第11章  使用 ActiveX 服务器组件

11.5.3 在网页中创建并使用组件• 建立网页文件如下:

<html><body><% if (Request.form("a")<>"" and Request.form("b")<>"") then a=Request.form("a") b=Request.form("b") set obj=Server.createobject("MyPrj.Math") Response.write "<h2>调用自制组件 </h2>" Response.write a & " 和 " & b & " 的最大公约数 为 " &

obj.gcd(a,b) & "<BR>" set obj=nothing else%> 调用自制组件求

a,b最大公约数

Page 88: 第11章  使用 ActiveX 服务器组件

11.5.3 在网页中创建并使用组件<form action="L11_12.asp" method="POST"> 请输入两个数: <BR> a=<input type="text" name="a"><br> b=<input type="text" name="b"><br> <input type="submit" value="确定 "> </form><%end if%></body></html> 显示表单用于输

入 a,b俩数

Page 89: 第11章  使用 ActiveX 服务器组件

11.5.3 在网页中创建并使用组件• 浏览结果 验证本例

Page 90: 第11章  使用 ActiveX 服务器组件

本章小结 •本章介绍了常用的几个 ActiveX 组件的

使用方式,灵活使用这些组件,可以大大地提高应用程序的开发效率。尤其是对文件的访问,它是数据库的一个补充。•另外,本章也介绍了用 VB 来编写自己

的组件的一般过程,这为以后进行应用程序的开发打下了一定的基础。

Page 91: 第11章  使用 ActiveX 服务器组件

习题 1.改变 global.asa 文件中的 Session_Onstart 代码,

使用文件保存网页的点击计数值。2.请说出函数和方法的区别。3 .你是否想知道撤消注册的方法,你可以在

DOS 提示符下得到应有的帮助。4.请参照例 11-10 的过程,将一组图片链接成

一个顺序链表。5.内容链接对象可以实现内容的顺序链接,你能用它实现层次型的链接关系吗?