第11章 使用 activex 服务器组件
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 PresentationTRANSCRIPT
![Page 1: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/1.jpg)
第 11 章 使用 ActiveX服务器组件
![Page 2: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/2.jpg)
本章主要内容 •安装好 ASP使用环境后,就可以使用一些它附带的组件,还可以从 Internet上下载无数的组件。甚至可以创建自己的组件。本章主要讨论以下各种组件的使用:– 文件访问组件 – 广告轮播组件 – 浏览器信息组件 – 内容链接组件 – 创建自己的组件
![Page 3: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/3.jpg)
本章目录
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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/4.jpg)
11.1 文件访问 • ASP 提供了 FileSystemObject 对象用
于获得对文件、文件夹和驱动器的访问。使用 FileSystemObject 对象,可以创建 File 、 Folder 和 Drive 对象,分别用来代表计算机上的文件、文件夹和驱动器。每一个对象都有一些属性和方式来完成所需的任务。
![Page 5: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/5.jpg)
11.1.1 使用文本文件 • 使用文本文件可以方便地记录少量信息
或者记录一些没有格式要求的信息。如网页的点击次数等。对此主要讨论以下内容: 1. 创建新文件 2. 读取文件 3. 文件中追加数据
![Page 6: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/6.jpg)
1. 创建新文件 • 要创建新文件,要按如下步骤:
– 使用 Server 对象的 CreateObject 方法创建文件系统对象( FileSystemObject )
– 用文件系统对象的 CreateTextFile 方法创建文本流文件( TextStream )
– 使用文本流文件的写方法写入一些内容– 用 close 方法关闭这些对象– 释放这些对象
![Page 7: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/7.jpg)
创建新文件例 • 网页内容
<% 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/8.jpg)
创建新文件例 • 本例的代码执行后没有任何显示,完成后可通过文本编辑器打开 C盘根目录下 asp.txt文件,观察写入的内容。
• 例中涉及以下内容:– 创建文件系统对象– 建立文本文件对象– 向文件中写入内容– 关闭文本文件– 撤消文本文件对象
![Page 9: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/9.jpg)
( 1 )创建文件系统对象• 通过服务器对象创建一个文件系统对象
( FileSystemObject )。• 形式如下: Set
objFS=Server.CreateObject("Scripting.FileSystemObject")
• 其中: objFS 为创建的对象名称。
![Page 10: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/10.jpg)
( 2 )建立文本文件对象•通过执行文件系统对象的 CreateTextFile 方
法,可以建立一个文本文件对象,形式如下:Set 文件变量名=CreateTextFile(文件路径,覆盖方式,编
码方式 )•其中:
文件路径指出要创建文件所在的目录路径及文件名,使用物理路径。
覆盖方式是可选的,默认为 TRUE ,表示如果存在同名的文件,则覆盖该文件,若设置为 FALSE ,则当存在同名文件时会返回错误信息。编码方式是可选的,默认为 FALSE ,表示使用
ASC码形式进行创建和保存。如果选择 TRUE,将以Unicode方式创建和保存。
![Page 11: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/11.jpg)
( 3 )向文件中写入内容• 向文件中写入内容可使用文本文件对象
的有关方法,主要有如下几种:– write( 字符串 ) :将一个字符串写入文本文
件,但不换行。– writeLine( 字符串 ) :将一个字符串写入文
本文件,并随后写入一个换行符。字符串缺省时,表示只写入一个换行符。
– WriteBlankLines(n):写入 n个换行符。
![Page 12: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/12.jpg)
( 4 )关闭文本文件• 使用文本文件对象的 close 方法关闭文
本文件,形式如下:objTextS.Close
• 其中 objTexts 为文本文件对象。
![Page 13: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/13.jpg)
( 5 )撤消文本文件对象•撤消文本文件对象和撤消文件系统对象
分别使用如下形式: set objTextS=Nothing set objFS=nothing
![Page 14: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/14.jpg)
2. 读取文件 • 要读取文件中的数据,首先需要用文件
系统对象的打开文本文件( OpenTextFile )方法来创建一个TextStream 对象,再用该对象的有关方法来对文件进行读取操作。
![Page 15: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/15.jpg)
读取文件例<% 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/16.jpg)
读取文件例•浏览结果如图
验证本例
![Page 17: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/17.jpg)
打开文本文件 •打开一个文本文件形式如下:
Set 文件变量 =objFS.OpenTextFile( 文件路径,打开方式,创建选项,编码方式 )
•其中:– 打开方式是可选参数,指出打开该文件是用来进行读、写还
是追加。默认为 1 表示读,设置为 2 时表示进行写操作, 8
表示进行追加操作。 – 创建选项是可选参数,默认为 False ,当设为 TRUE 时,表示
若该文件不存在,创建该文件。 – 格 式 中 的 “ 文 件 路 径 ” 和 “ 编 码 方 式 ” 的 含 义 与
CreateTextFile 方法的相应参数相同。
![Page 18: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/18.jpg)
文本文件对象的属性 • 文本文件对象有如下几种属性用于读的
控制操作: – AtEndOfLine 表示当前是否处于行末。 – AtEndOfStream 表示当前是否处于文件结束
位置。 – Column 用于返回当前字符的列号,第一个
字符的列号为 1 。 – Line 用于返回当前行处于文件中的第几行。
![Page 19: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/19.jpg)
文本文件中读取数据 • 文本文件中读取数据有如下几种方法:
– Read(n) 从文本文件中读取 n 个字符。– ReadLine 用于从文本文件中读取给定行号
的一行内容。 – ReadAll 用于读取文件的所有内容。– Skip(n) 跳过 n 个字符。– SkipLine(n) 跳过 n 行。
![Page 20: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/20.jpg)
3. 文件中追加数据 •要向已经存在的文件中添加内容,可以使用添加方式打开文件,即在打开文件的方法中选择打开方式为 8。形式如下:set objTextS=objFS.OpenTextFile("C:\asp.txt",8)
•其后就可以象创建文件时那样写入内容了。
![Page 21: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/21.jpg)
文件中追加数据例<% 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/22.jpg)
文件中追加数据例•因本例中使用缺省方式,应先执行例 1的脚本。本例脚本执行完后,可通过运行例 2中的脚本来观察结果,显示形式如图所示。
执行例 1脚本 执行本例
脚本
执行例 2 的脚本观察结果
![Page 23: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/23.jpg)
11.1.2 文件夹对象 •通过文件系统对象的 GetFolder 方法,可
以创建文件夹对象,形式为:set 文件夹变量 = 文件系统对象 .GetFolder(“目录
名” )
•这里的目录名使用物理路径的形式,如果要为某个虚拟目录建立文件夹对象,可以先使用 Server 对象的 MapPath 方法来求出对应的物理路径。
![Page 24: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/24.jpg)
1. 文件夹对象的属性•创建文件夹对象后,就可以使用该对象
的以下属性:– name 属性 ==> 求出该文件夹的名称– 用 Files 属性集合 ==> 求出该文件夹中包含
的所有文件– 用 SubFolders 属性集合 ==> 得到该文件
夹中所包含的所有子文件夹。
![Page 25: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/25.jpg)
1. 文件夹对象的属性•另外还有:
– Attributes==>文件属性– DateCreated==> 建立日期和时间– DateLastAccessed==>最后访问日期和时间
– DateLastModified==> 最后修改日期和时间
![Page 26: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/26.jpg)
2. 文件夹对象的方法•可以使用如下方法:
– Copy==>复制– Delete==>删除– Move==>移动
![Page 27: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/27.jpg)
文件夹对象使用举例• 例 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 & " " next str=str & " <DIR> " &
folder.DateLastModified Response.write str & "<BR>" next
建立文件系统对象
建立文件夹对象
对文件夹中所以子文件夹循环
显示文件夹名称、标志、日期时间
![Page 28: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/28.jpg)
文件夹对象使用举例 for each file in objFolder.Files str=file.name for i=18 to len(str) step -1 str=str & " " next for i=7 to len(file.size) step -1 str=str & " " next Response.write str & file.size & " " Response.write file.DateLastModified & "<BR>" next set objFolder=Nothing set objFS=nothing%>
对文件夹中所以文件循环
显示文件名、大小
显示文件日期时间释放
对象
![Page 29: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/29.jpg)
文件夹对象使用举例• 浏览结果
验证本例
![Page 30: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/30.jpg)
11.1.3 驱动器 •通过文件系统对象的 GetDrive 方法可以
创建一个驱动器对象,使用形式为:set 驱动器对象变量 = 文件系统变量 .GetDrive(“ 驱
动器名” )
•例如:set objDrive=objFS.GetDrive(“C:”)
![Page 31: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/31.jpg)
驱动器常用的属性•常用的属性:
– FileSystem 文件系统类型– VolumeName 卷标名称– FreeSpace 自由空间– TotalSize 总空间– RootFolder 根文件夹– SerialNumber 序列号– ShareName 共享名称– IsReady 是否就绪– DriveType 启动器类型
![Page 32: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/32.jpg)
驱动器使用例•例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/33.jpg)
驱动器使用例•例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/34.jpg)
驱动器使用例•浏览结果如图所示。
注意:读者验证本例时,应在脚本的第 3 行中改用与自已机器相适应的驱动器名。
验证本例
![Page 35: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/35.jpg)
11.1.4 文件处理 •常用的文件处理包括文件的复制、移动、删除以及检测文件是否存在等。通过文件系统对象的相应方法就可以很方便地实现这些操作。
![Page 36: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/36.jpg)
1 .拷贝文件 •使用文件系统对象的 CopyFile 方法,可
以实现文件的复制,使用形式:对象变量名 .CopyFile 源文件,目标文件, [ 覆盖方
式 ]
•其中:指出源文件时,可包含统配符来指出多个文件,覆盖方式表示当目标文件存在时,是否覆盖。
![Page 37: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/37.jpg)
2 .移动文件 •使用文件系统对象的 MoveFile 方法,可以实现文件或文件夹的复制,使用形式:
对象变量名 .MoveFile 源文件,目标文件•同样,可使用统配符来指出移动多个文件,当目标文件存在时,系统将给出错误提示。
![Page 38: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/38.jpg)
3 .删除文件 •使用文件系统对象的 DeleteFile 方法,可以删除指定的文件,使用格式如下:
对象变量名 .DeleteFile 文件路径•同样可以使用统配符来指出多个文件。
![Page 39: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/39.jpg)
4 .检测文件是否存在 •通过文件系统对象的 FileExists 方法,可
以检测文件是否存在,使用形式为:对象变量名 .FileExists(“文件路径” )
•对于象文本文件,在打开前,可以先用此方法了解文件是否存在,再决定如何打开该文件。
![Page 40: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/40.jpg)
5 .使用文件对象 •通过文件系统对象的 GetFile 方法可以创建 File 对象,用该对象同样可以得到文件的有关属性。•使用文件对象同样可以实现文件的复制、移动和删除操作,只是由于源文件已经指定,所以格式有所不同,分别如下:
– 文件对象名 .Copy 新文件, [ 覆盖方式 ]– 文件对象名 . Move 新文件– 文件对象名 . Delete
![Page 41: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/41.jpg)
文件对象使用例 •例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/42.jpg)
11.2 广告轮播 • 当你需要按照不同的概率随机地显示不
同的广告时,可以使用 ASP附带的 Ad Rotator 组件,称为广告轮换组件。当网页被加载时,它能按照指定的权重选择某一广告图片,并建立对应的超链接,这样,当用户单击该图片时,转向事先指定的网页,同时,可以记录该广告的点击次数。
![Page 43: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/43.jpg)
11.2 广告轮播 • 示义
统计处理文件
实际网站
网页内容Ad Rotator 组件
网页内容
ASP 文件内容网页内容
图片和超连接网页内容
浏览器得到的内容
点击广告后转到网页
广告信息
实际网站实际网站实际网站实际网站
根据广告信息转到实际网站
随机产生
![Page 44: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/44.jpg)
11.2 广告轮播 •要使用该组件,需要完成以下几部分内容:
– 准备数据文件(信息文件 )– 在网页中使用组件
• 创建一个组件对象 •调用这个对象 • 建立统计处理网页
![Page 45: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/45.jpg)
1. 数据文件(信息文件 )• 信息文件包含两部分信息,一部分是公用
信息,包括:– REDIRECT 项用于指出当用户点击广告图片时,重定向到哪个网页文件。
– WIDTH 项指出广告图标的显示宽度。默认值为 440 。
– HEIGHT 项指出图标的显示高度。默认值为 60 。– BORDER 项指出广告图标显示时是否加边框。
![Page 46: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/46.jpg)
1. 数据文件(信息文件 )•第二部分是各个广告的信息,包含:图片文件名,实际需要转向的地址(网站地址),图片说明信息,该广告的显示权重等 4项信息。
• 例:software.gifhttp://www.microsoft.com微软站点40
![Page 47: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/47.jpg)
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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/48.jpg)
2. 创建组件对象 •使用 Server 对象的 CreateObject 方法创建组件对象,形式如下:
Set objAd=Server.CreateObject(“MSWC.AdRotator”)
•其中: objAd 为创建的组件对象名
![Page 49: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/49.jpg)
3.调用组件对象•在网页中需要显示广告图片的位置上调用这个对象的 GetAdverTisment 方法。形式如下:
<%=objAd.GetAdverTisment(“adrot.txt”)%>
•其中:文本文件 adrot.txt 中包含了所有要显示广告的有关信息,称为广告轮播的信息文件。
![Page 50: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/50.jpg)
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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/51.jpg)
4. 建立统计处理网页•统计处理网页,用于保存广告被点击的次数,并通过 Request(“url”) 得到真正应该转到的地址,用Response 对象的 redirect 方法重定向到目标地址。•一般内容如下:
<%
Response.AppendToLog Request.QueryString(“url”)
Response.Redircet Request.QueryString(“url”)
%>
•其中,前一行是将实际要转到的地址存入日志文件中,后一行实现重定向。
![Page 52: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/52.jpg)
例:使用广告轮换的网页 •网页内容
<html><body><h2>欢迎你到我的个人主页 </h2><hr><% set
objAd=Server.Createobject("MSWC.AdRotator")%><center><%=objAd.GetAdvertisement("L11_7.txt")
%></center></body></html>
![Page 53: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/53.jpg)
例:使用广告轮换的网页 • 浏览结果
本例执行时会随机显示如下几种形式。执行本例
脚本
![Page 54: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/54.jpg)
11.3 浏览器信息组件 •通过浏览器信息组件( BrowserType )
可以获得有关浏览器的必要信息。创建一个 BrowserType 对象的方法如下:
Set objBT=Server.CreateObject(“MSWC.BrowserType”)
•一旦这种类型的对象创建后,就可以通过它的各种属性,得到相应的值。
![Page 55: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/55.jpg)
BrowserType 对象主要属性: •有如下主要属性:
– ActiveXControls : 指 出 该浏览器 是 否支持ActiveX 控件。
– backgroundsounds :指出该浏览器是否支持背景音乐。
– Beta :指出该浏览器是否测试版。– Browser :指定该浏览器的名称。– Cdf :指出该浏览器是否支持用于 Web 预测的
ChannelDefinitionFormat 。– Cookies :指出该浏览器是否支持 cookies 。– Frames :指出该浏览器是否支持框架。
![Page 56: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/56.jpg)
BrowserType 对象主要属性: •有如下主要属性:
– Javaapplets : 指 出 该浏览器 是 否支持Java程序。
– Javascript : 指 出 该浏览器 是 否支持JavaScript 。
– Platform :指出该浏览器的运行平台。– Tables :指出该浏览器是否支持表格。– Vbscript : 指 出 该 浏 览 器 是 否 支 持
VBScript 。– Version :指出该浏览器的版本号。
![Page 57: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/57.jpg)
使用浏览器信息组件 •网页内容
<% 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/58.jpg)
使用浏览器信息组件 •浏览结果
验证本例
![Page 59: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/59.jpg)
11.4 内容链接组件 • 内容链接组件可以方便地根据存放在内
容列表文件中的内容,获得与内容对应的访问地址,从而方便地实现内容列表和自动链接的建立。对此分别讨论以下有关内容: – 目录列表文件 – 创建内容链接对象 – 内容链接对象的方法
![Page 60: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/60.jpg)
1. 目录列表文件• 目录列表文件的每一行记录了一个网页
地址(或文件名)和对应的说明信息,中间用 TAB隔开,并以 TXT 文件存放。
• 例:t\index1.Gif 图片 1t\index2.Gif 图片 2t\index3.Gif 图片 3t\index4.Gif 图片 4
![Page 61: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/61.jpg)
2. 创建内容链接对象 • 创建内容链接对象方法如下:
Set 对象变量名=Server.createobject("MSWC.nextlink")
• 即使用 server 对象的 createobject方法。对象创建后就可以使用它的方法实现一些功能。
![Page 62: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/62.jpg)
3. 内容链接对象的方法 GetListCount( 文件名 ) :求内容列表文件中的行数GetListIndex( 文件名 ) :求当前页在内容列表文件中的索引值,即使用该方法的网页文件名在列表文件中所处的行号。当该页不在列表中时返回零。GetPreviousURL( 文件名 ) :显示列表文件中当前页的前一个页的地址。GetPreviousDescription( 文件名 ) :求列表文件中前一页的说明信息。
![Page 63: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/63.jpg)
3. 内容链接对象的方法 GetNextURL( 文件名 ) :求列表文件中下一页的地址。GetNextDescription( 文件名 ) :求列表文件中下一页的说明。GetNthURL( 文件名 ,n) :求列表文件中第n 页的地址, n大于页数时,返回最后一页地址。GetNthDescript( 文件名 ,n) :返回列表文件中第 n 页的说明。
![Page 64: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/64.jpg)
内容链接对象使用例例 9 :为一组图片文件建立一个目录列表
( 1 )建立目录列表文件,文件名为“ L11_9.txt” ,输入内容如下:
t\index1.Gif 图片 1t\index2.Gif 图片 2t\index3.Gif 图片 3t\index4.Gif 图片 4
![Page 65: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/65.jpg)
例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/66.jpg)
例 9 :为一组图片文件建立一个目录列表• 浏览结果• 在 t子目录中放入一组图片文件,文件名为
index1.Gif 、 index2.Gif等,单击“图片1”链接时,显示如右图。
验证本例
![Page 67: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/67.jpg)
内容链接对象使用例例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/68.jpg)
例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/69.jpg)
例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/70.jpg)
例 10 :逐个显示图片• “其中:文件 02.jpg”是要显示的图片的文件名,
“假设把它保存成 02.asp”,接着可以把代码中“的 02.jpg” “改为 03.jpg”,并把该文件另存为
“ 03.asp”,重复上述过程,根据不同的图片文件产生一系列的 ASP网页文件。
![Page 71: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/71.jpg)
例 10 :逐个显示图片•建 立 一 个 内 容 列 表 文 件 ( 本 例 中 文 件 名为“ L11_10.txt” ,形式如下:
04.asp 童趣 02.asp 泰山一游 03.asp 相伴一生
![Page 72: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/72.jpg)
例 10 :逐个显示图片•最后打开网页,根据图片文件的内容,可以依次游览出如下各图所示结果。
验证本例
![Page 73: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/73.jpg)
内容链接对象使用例例 11 :在线教程可以建立一组如下形式的网页,并建立一个列表文件,将各页对应的标题记录下来,这样用户就可以按顺序地浏览网页了。
<% option explicit %><html><body>这里是教程某一页的显示内容...<p><%dim objL,nLindex,iset objL=Server.createobject("MSWC.nextlink")
建立内容链接对象
![Page 74: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/74.jpg)
例 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> "
end if
得到当前网页在目录列表文件中的序号
不是第一页时,显示前一页按钮
![Page 75: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/75.jpg)
例 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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/76.jpg)
例 11 :在线教程•内容列表文件如下所示:
L11_11.asp 第一节L11_11a.asp 第一节 (续 )L11_11b.asp 第二节
![Page 77: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/77.jpg)
例 11 :在线教程•浏览结果 验证本例
![Page 78: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/78.jpg)
11.5 自制 ActiveX 服务器组件 •为 了 进 一 步 的 开发, 有必要 了解自己制 作ActiveX 服务器组件的一般方法。•在许多不同的编程环境中都可以制作 ActiveX 服务器组件,但对于本课程来说,用 Visual Basic来制作 ActiveX 服务器组件是最方便的,具体过程如下:( 1 )建立组件文件(动态链接库)( 2 )注册组件( 3 )在 ASP 文件中使用组件
![Page 79: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/79.jpg)
11.5.1 建立组件文件 建立组件文件按如下过程进行:
– 新建 ActiveX DLL
– 设置工程名和类模块名– 输入函数定义– 指出工程的起始位置– 保存工程,编译生成动态连接库文件
![Page 80: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/80.jpg)
1. 新建 ActiveX DLL •首先,打开 Visual Basic 5.0 ,在出现的初始窗口中,选择新建 ActiveX DLL ,如图所示。
![Page 81: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/81.jpg)
2. 建立组件文件•单击工程资源管理器窗口中的工程 1 ,从属性窗口中将其改名为 MyPrj ,再单击类模块名 (Class1) ,从属性窗口中将其改名为 Math 。
![Page 82: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/82.jpg)
2. 建立组件文件•这样就确定了以后在 ASP 网页中需要创建的组件名称了。形式为:
Set obj=Server.CreateObject(“MyPrj.Math”)
•其中: MyPrj 为工程名,而不是工程文件名, Math 为工程中类模块名,而不是类模块文件名。尽管两者可以同名。
![Page 83: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/83.jpg)
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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/84.jpg)
4. 指出工程的起始位置•接着再在“工程”菜单中选择“添加模块”,在模块的代码窗口输入如下内容:
Sub Main()
End Sub
•用于指出工程的起始位置。如图所示:
![Page 85: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/85.jpg)
5.编译生成动态连接库文件 • 最后形成的工程资源管理器窗口形式如图。
• 选择“文件”菜单中的“保存工程”将文件存盘,再在“文件”菜单中选择“生成MyPrj.dll” ,编译生成一个动态连接库文件“ MyPrj.dll”.
![Page 86: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/86.jpg)
11.5.2 注册组件 •进入 MS-DOS 方式,在存放 MyPrj.dll 的目录下执行如下的注册命令:
c:\windows\system\regsvr32 MyPrj.dll
•其中前面部分是文件 regsvr32.exe 所在的目录路径。用户应根据自己机器的安装情况作适当调整。正确执行后显示如图提示。
![Page 87: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/87.jpg)
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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/88.jpg)
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 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/89.jpg)
11.5.3 在网页中创建并使用组件• 浏览结果 验证本例
![Page 90: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/90.jpg)
本章小结 •本章介绍了常用的几个 ActiveX 组件的
使用方式,灵活使用这些组件,可以大大地提高应用程序的开发效率。尤其是对文件的访问,它是数据库的一个补充。•另外,本章也介绍了用 VB 来编写自己
的组件的一般过程,这为以后进行应用程序的开发打下了一定的基础。
![Page 91: 第11章 使用 ActiveX 服务器组件](https://reader034.vdocuments.net/reader034/viewer/2022052122/568147e8550346895db5211d/html5/thumbnails/91.jpg)
习题 1.改变 global.asa 文件中的 Session_Onstart 代码,
使用文件保存网页的点击计数值。2.请说出函数和方法的区别。3 .你是否想知道撤消注册的方法,你可以在
DOS 提示符下得到应有的帮助。4.请参照例 11-10 的过程,将一组图片链接成
一个顺序链表。5.内容链接对象可以实现内容的顺序链接,你能用它实现层次型的链接关系吗?