第11章使用ActiveX服务器组件.ppt

上传人:本田雅阁 文档编号:3123103 上传时间:2019-07-13 格式:PPT 页数:91 大小:1.20MB
返回 下载 相关 举报
第11章使用ActiveX服务器组件.ppt_第1页
第1页 / 共91页
第11章使用ActiveX服务器组件.ppt_第2页
第2页 / 共91页
第11章使用ActiveX服务器组件.ppt_第3页
第3页 / 共91页
第11章使用ActiveX服务器组件.ppt_第4页
第4页 / 共91页
第11章使用ActiveX服务器组件.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《第11章使用ActiveX服务器组件.ppt》由会员分享,可在线阅读,更多相关《第11章使用ActiveX服务器组件.ppt(91页珍藏版)》请在三一文库上搜索。

1、第11章 使用ActiveX服务器组件,本章主要内容,安装好ASP使用环境后,就可以使用一些它附带的组件,还可以从Internet上下载无数的组件。甚至可以创建自己的组件。本章主要讨论以下各种组件的使用: 文件访问组件 广告轮播组件 浏览器信息组件 内容链接组件 创建自己的组件,本章目录,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

2、 在网页中创建并使用组件,11.1 文件访问,ASP提供了FileSystemObject对象用于获得对文件、文件夹和驱动器的访问。使用FileSystemObject对象,可以创建File、Folder和Drive对象,分别用来代表计算机上的文件、文件夹和驱动器。每一个对象都有一些属性和方式来完成所需的任务。,11.1.1 使用文本文件,使用文本文件可以方便地记录少量信息或者记录一些没有格式要求的信息。如网页的点击次数等。对此主要讨论以下内容: 1. 创建新文件 2. 读取文件 3. 文件中追加数据,1.创建新文件,要创建新文件,要按如下步骤: 使用Server对象的CreateObject

3、方法创建文件系统对象(FileSystemObject) 用文件系统对象的CreateTextFile方法创建文本流文件(TextStream) 使用文本流文件的写方法写入一些内容 用close方法关闭这些对象 释放这些对象,创建新文件例,网页内容 ,创建一个文件系统对象,执行本例 脚本,建立文本文件对象,向文件中写入内容,关闭文件,撤消对象,创建新文件例,本例的代码执行后没有任何显示,完成后可通过文本编辑器打开C盘根目录下asp.txt文件,观察写入的内容。 例中涉及以下内容: 创建文件系统对象 建立文本文件对象 向文件中写入内容 关闭文本文件 撤消文本文件对象,(1)创建文件系统对象,通过

4、服务器对象创建一个文件系统对象(FileSystemObject)。 形式如下: Set objFS=Server.CreateObject(“Scripting.FileSystemObject“) 其中:objFS为创建的对象名称。,(2)建立文本文件对象,通过执行文件系统对象的CreateTextFile方法,可以建立一个文本文件对象,形式如下: Set 文件变量名=CreateTextFile(文件路径,覆盖方式,编码方式) 其中: 文件路径指出要创建文件所在的目录路径及文件名,使用物理路径。 覆盖方式是可选的,默认为TRUE,表示如果存在同名的文件,则覆盖该文件,若设置为FALSE,

5、则当存在同名文件时会返回错误信息。 编码方式是可选的,默认为FALSE,表示使用ASC码形式进行创建和保存。如果选择TRUE,将以Unicode方式创建和保存。,(3)向文件中写入内容,向文件中写入内容可使用文本文件对象的有关方法,主要有如下几种: write(字符串):将一个字符串写入文本文件,但不换行。 writeLine(字符串):将一个字符串写入文本文件,并随后写入一个换行符。字符串缺省时,表示只写入一个换行符。 WriteBlankLines(n):写入n个换行符。,(4)关闭文本文件,使用文本文件对象的close方法关闭文本文件,形式如下: objTextS.Close 其中obj

6、Texts为文本文件对象。,(5)撤消文本文件对象,撤消文本文件对象和撤消文件系统对象分别使用如下形式: set objTextS=Nothing set objFS=nothing,2. 读取文件,要读取文件中的数据,首先需要用文件系统对象的打开文本文件(OpenTextFile)方法来创建一个TextStream对象,再用该对象的有关方法来对文件进行读取操作。,读取文件例,“ loop objTextS.Close set objTextS=Nothing set objFS=nothing %,打开文件,建立文件系统对象,当文件没有结束时循环,读一行,输出一行,关闭并释放对象,读取文件例

7、,浏览结果如图,验证本例,打开文本文件,打开一个文本文件形式如下: Set 文件变量=objFS.OpenTextFile(文件路径,打开方式,创建选项,编码方式) 其中: 打开方式是可选参数,指出打开该文件是用来进行读、写还是追加。默认为1表示读,设置为2时表示进行写操作,8表示进行追加操作。 创建选项是可选参数,默认为False,当设为TRUE时,表示若该文件不存在,创建该文件。 格式中的“文件路径”和“编码方式”的含义与CreateTextFile方法的相应参数相同。,文本文件对象的属性,文本文件对象有如下几种属性用于读的控制操作: AtEndOfLine表示当前是否处于行末。 AtEn

8、dOfStream表示当前是否处于文件结束位置。 Column用于返回当前字符的列号,第一个字符的列号为1。 Line用于返回当前行处于文件中的第几行。,文本文件中读取数据,文本文件中读取数据有如下几种方法: Read(n) 从文本文件中读取n个字符。 ReadLine 用于从文本文件中读取给定行号的一行内容。 ReadAll 用于读取文件的所有内容。 Skip(n) 跳过n个字符。 SkipLine(n) 跳过n行。,3. 文件中追加数据,要向已经存在的文件中添加内容,可以使用添加方式打开文件,即在打开文件的方法中选择打开方式为8。形式如下: set objTextS=objFS.OpenT

9、extFile(“C:asp.txt“,8) 其后就可以象创建文件时那样写入内容了。,文件中追加数据例,建立文件系统对象,打开文件,关闭并释放对象,写入几行内容,文件中追加数据例,因本例中使用缺省方式,应先执行例1的脚本。本例脚本执行完后,可通过运行例2中的脚本来观察结果,显示形式如图所示。,执行例1 脚本,执行本例 脚本,执行例2的脚本 观察结果,11.1.2 文件夹对象,通过文件系统对象的GetFolder方法,可以创建文件夹对象,形式为: set 文件夹变量=文件系统对象.GetFolder(“目录名”) 这里的目录名使用物理路径的形式,如果要为某个虚拟目录建立文件夹对象,可以先使用Se

10、rver对象的MapPath方法来求出对应的物理路径。,1. 文件夹对象的属性,创建文件夹对象后,就可以使用该对象的以下属性: name属性=求出该文件夹的名称 用Files属性集合=求出该文件夹中包含的所有文件 用SubFolders属性集合=得到该文件夹中所包含的所有子文件夹。,1. 文件夹对象的属性,另外还有: Attributes=文件属性 DateCreated= 建立日期和时间 DateLastAccessed=最后访问日期和时间 DateLastModified=最后修改日期和时间,2. 文件夹对象的方法,可以使用如下方法: Copy=复制 Delete=删除 Move=移动,文

11、件夹对象使用举例,例4:显示C盘根目录中所有文件和文件夹 “ next,建立文件系统对象,建立文件夹对象,对文件夹中所以子文件夹循环,显示文件夹名称、标志、日期时间,文件夹对象使用举例,for each file in objFolder.Files str=file.name for i=18 to len(str) step -1 str=str “ Response.write file.DateLastModified & “ next set objFolder=Nothing set objFS=nothing %,对文件夹中所以文件循环,显示文件名、大小,显示文件日期时间,释放对

12、象,文件夹对象使用举例,浏览结果,验证本例,11.1.3 驱动器,通过文件系统对象的GetDrive方法可以创建一个驱动器对象,使用形式为: set 驱动器对象变量=文件系统变量.GetDrive(“驱动器名”) 例如: set objDrive=objFS.GetDrive(“C:”),驱动器常用的属性,常用的属性: FileSystem 文件系统类型 VolumeName 卷标名称 FreeSpace 自由空间 TotalSize 总空间 RootFolder 根文件夹 SerialNumber 序列号 ShareName 共享名称 IsReady 是否就绪 DriveType 启动器类型

13、,驱动器使用例,例5:显示某驱动器的一些属性 “ str=str+“驱动器字母:“ & objDrive.DriveLetter & “ if objDrive.IsReady then str=str+“处于就绪状态“ str=str+“文件系统:“ & objDrive.filesystem & “ str=str+“自由空间:“ & int(objDrive.freespace/1024) & “KB“ str=str+“总空间:“ & int(objDrive.Totalsize/1024/1024) & “MB“ else str=str+“不在就绪状态“ end if,建立文件系统

14、对象,建立驱动器对象,驱动器是否就绪,驱动器使用例,例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 & “ Response.write str set objdrivet=Nothing s

15、et objFS=nothing %,释放对象,判别驱动器类型,驱动器使用例,浏览结果如图所示。,注意:读者验证本例时,应在脚本的第3行中改用与自已机器相适应的驱动器名。,验证本例,11.1.4 文件处理,常用的文件处理包括文件的复制、移动、删除以及检测文件是否存在等。通过文件系统对象的相应方法就可以很方便地实现这些操作。,1拷贝文件,使用文件系统对象的CopyFile方法,可以实现文件的复制,使用形式: 对象变量名.CopyFile 源文件,目标文件,覆盖方式 其中:指出源文件时,可包含统配符来指出多个文件,覆盖方式表示当目标文件存在时,是否覆盖。,2移动文件,使用文件系统对象的MoveFi

16、le方法,可以实现文件或文件夹的复制,使用形式: 对象变量名.MoveFile 源文件,目标文件 同样,可使用统配符来指出移动多个文件,当目标文件存在时,系统将给出错误提示。,3删除文件,使用文件系统对象的DeleteFile方法,可以删除指定的文件,使用格式如下: 对象变量名.DeleteFile 文件路径 同样可以使用统配符来指出多个文件。,4检测文件是否存在,通过文件系统对象的FileExists方法,可以检测文件是否存在,使用形式为: 对象变量名.FileExists(“文件路径”) 对于象文本文件,在打开前,可以先用此方法了解文件是否存在,再决定如何打开该文件。,5使用文件对象,通过

17、文件系统对象的GetFile方法可以创建File对象,用该对象同样可以得到文件的有关属性。 使用文件对象同样可以实现文件的复制、移动和删除操作,只是由于源文件已经指定,所以格式有所不同,分别如下: 文件对象名.Copy 新文件,覆盖方式 文件对象名. Move 新文件 文件对象名. Delete,文件对象使用例,例6:文件操作 ,建立文件对象,进行文件操作,释放对象,执行本例 脚本,11.2 广告轮播,当你需要按照不同的概率随机地显示不同的广告时,可以使用ASP附带的Ad Rotator组件,称为广告轮换组件。当网页被加载时,它能按照指定的权重选择某一广告图片,并建立对应的超链接,这样,当用户

18、单击该图片时,转向事先指定的网页,同时,可以记录该广告的点击次数。,11.2 广告轮播,示义,统计处理 文件,实际网站,网页内容 Ad Rotator组件 网页内容,ASP文件内容,网页内容 图片和超连接 网页内容,浏览器得到的内容,点击广告后转到网页,广告信息,实际网站,实际网站,实际网站,实际网站,根据广告信息转到实际网站,随机产生,11.2 广告轮播,要使用该组件,需要完成以下几部分内容: 准备数据文件(信息文件 ) 在网页中使用组件 创建一个组件对象 调用这个对象 建立统计处理网页,1. 数据文件(信息文件 ),信息文件包含两部分信息,一部分是公用信息,包括: REDIRECT项用于指

19、出当用户点击广告图片时,重定向到哪个网页文件。 WIDTH项指出广告图标的显示宽度。默认值为440。 HEIGHT项指出图标的显示高度。默认值为60。 BORDER项指出广告图标显示时是否加边框。,1. 数据文件(信息文件 ),第二部分是各个广告的信息,包含:图片文件名,实际需要转向的地址(网站地址),图片说明信息,该广告的显示权重等4项信息。 例: software.gif http:/ 微软站点 40,1. 数据文件(信息文件 ),信息文件完整形式如下: REDIRECT L11_7a.asp WIDTH 200 HEIGHT 30 BORDER 0 * a1.gif L11_1.asp

20、文件使用的第一个例子 30 software.gif http:/ 微软站点 40 a2.gif L11_2.asp 文件使用的第二个例子 30,按30:40:30的比例显示3个不同的广告,图片大小为200*30,无边框,信息文件以txt为扩展名存放,2.创建组件对象,使用Server对象的CreateObject方法创建组件对象,形式如下: Set objAd=Server.CreateObject(“MSWC.AdRotator”) 其中: objAd为创建的组件对象名,3.调用组件对象,在网页中需要显示广告图片的位置上调用这个对象的GetAdverTisment方法。形式如下: 其中:文

21、本文件adrot.txt中包含了所有要显示广告的有关信息,称为广告轮播的信息文件。,3.调用组件对象,从浏览时查看源代码得到,调用组件对象的地方形成了如下形式的超链接: 可以看出,该超链接中把真正要转向的位置作为查询字符串发送到指定文件。,4. 建立统计处理网页,统计处理网页,用于保存广告被点击的次数,并通过Request(“url”)得到真正应该转到的地址,用Response对象的redirect方法重定向到目标地址。 一般内容如下: 其中,前一行是将实际要转到的地址存入日志文件中,后一行实现重定向。,例:使用广告轮换的网页,网页内容 欢迎你到我的个人主页 ,例:使用广告轮换的网页,浏览结果

22、 本例执行时会随机显示如下几种形式。,执行本例 脚本,11.3 浏览器信息组件,通过浏览器信息组件(BrowserType)可以获得有关浏览器的必要信息。创建一个BrowserType对象的方法如下: Set objBT=Server.CreateObject(“MSWC.BrowserType”) 一旦这种类型的对象创建后,就可以通过它的各种属性,得到相应的值。,BrowserType对象主要属性:,有如下主要属性: ActiveXControls:指出该浏览器是否支持ActiveX控件。 backgroundsounds:指出该浏览器是否支持背景音乐。 Beta:指出该浏览器是否测试版。

23、Browser:指定该浏览器的名称。 Cdf:指出该浏览器是否支持用于Web预测的ChannelDefinitionFormat。 Cookies:指出该浏览器是否支持cookies。 Frames:指出该浏览器是否支持框架。,BrowserType对象主要属性:,有如下主要属性: Javaapplets:指出该浏览器是否支持Java程序。 Javascript:指出该浏览器是否支持JavaScript。 Platform:指出该浏览器的运行平台。 Tables:指出该浏览器是否支持表格。 Vbscript:指出该浏览器是否支持VBScript。 Version:指出该浏览器的版本号。,使用浏

24、览器信息组件,网页内容 浏览器名: 版本号: 是否支持框架: 是否支持Cookies: 是否支持背景音乐: ,使用浏览器信息组件,浏览结果,验证本例,11.4 内容链接组件,内容链接组件可以方便地根据存放在内容列表文件中的内容,获得与内容对应的访问地址,从而方便地实现内容列表和自动链接的建立。对此分别讨论以下有关内容: 目录列表文件 创建内容链接对象 内容链接对象的方法,1.目录列表文件,目录列表文件的每一行记录了一个网页地址(或文件名)和对应的说明信息,中间用TAB隔开,并以TXT文件存放。 例: tindex1.Gif 图片1 tindex2.Gif 图片2 tindex3.Gif 图片3

25、 tindex4.Gif 图片4,2.创建内容链接对象,创建内容链接对象方法如下: Set 对象变量名=Server.createobject(“MSWC.nextlink“) 即使用server对象的createobject方法。对象创建后就可以使用它的方法实现一些功能。,3.内容链接对象的方法,GetListCount(文件名):求内容列表文件中的行数 GetListIndex(文件名):求当前页在内容列表文件中的索引值,即使用该方法的网页文件名在列表文件中所处的行号。当该页不在列表中时返回零。 GetPreviousURL(文件名):显示列表文件中当前页的前一个页的地址。 GetPrev

26、iousDescription(文件名):求列表文件中前一页的说明信息。,3.内容链接对象的方法,GetNextURL(文件名):求列表文件中下一页的地址。 GetNextDescription(文件名):求列表文件中下一页的说明。 GetNthURL(文件名,n):求列表文件中第n页的地址,n大于页数时,返回最后一页地址。 GetNthDescript(文件名,n):返回列表文件中第n页的说明。,内容链接对象使用例,例9:为一组图片文件建立一个目录列表 (1)建立目录列表文件,文件名为“L11_9.txt”,输入内容如下: tindex1.Gif 图片1 tindex2.Gif 图片2 ti

27、ndex3.Gif 图片3 tindex4.Gif 图片4,例9:为一组图片文件建立一个目录列表,(2)再建立一个网页文件,内容如下: 内容列表 “ ,对目录列表文件中每一行循环,显示一个超连接,形成无序列表,例9:为一组图片文件建立一个目录列表,浏览结果 在t子目录中放入一组图片文件,文件名为index1.Gif、 index2.Gif等,单击“图片1”链接时,显示如右图。,验证本例,内容链接对象使用例,例10:假如有一组图片,文件名分别为02.jpg,03.jpg,希望通过网页的形式逐个显示,可以建立一个网页文件,其内容如下: ,建立内容链接对象,得到当前网页在目录列表文件中的序号,例10

28、:逐个显示图片, nLIndex) then Response.write objL.GetNthDescription(“L11_10.txt“,nLindex) &“ end if if (nLindex1) then Response.write “前一页“ end if,显示本页标题,不是第一页时,显示前一页按钮,本页要显示的图片文件,例10:逐个显示图片,if (nLindexobjL.GetListCount(“L11_10.txt“) then Response.write “下一页“ end if % ,不是最后一页时,显示下一页按钮,例10:逐个显示图片,其中:文件“02.j

29、pg”是要显示的图片的文件名,假设把它保存成“02.asp”,接着可以把代码中的“02.jpg”改为“03.jpg”,并把该文件另存为“03.asp”,重复上述过程,根据不同的图片文件产生一系列的ASP网页文件。,例10:逐个显示图片,建立一个内容列表文件(本例中文件名为“L11_10.txt”,形式如下: 04.asp 童趣 02.asp 泰山一游 03.asp 相伴一生,例10:逐个显示图片,最后打开网页,根据图片文件的内容,可以依次游览出如下各图所示结果。,验证本例,内容链接对象使用例,例11:在线教程 可以建立一组如下形式的网页,并建立一个列表文件,将各页对应的标题记录下来,这样用户就

30、可以按顺序地浏览网页了。 这里是教程某一页的显示内容 . % dim objL,nLindex,i set objL=Server.createobject(“MSWC.nextlink“),建立内容链接对象,例11:在线教程,nLindex=objL.getlistindex(“L11_11.txt“) if (nLindex1) then Response.write “ Response.write “(前一页)“ “ end if,得到当前网页在目录列表文件中的序号,不是第一页时,显示前一页按钮,例11:在线教程,if (nLindexobjL.getlistcount(“L11_11

31、.txt“) then Response.write “ Response.write “(后一页)“ & objL.GetNextDescription(“L11_11.txt“) Response.write “ end if % ,不是最后一页时,显示下一页按钮,例11:在线教程,内容列表文件如下所示: L11_11.asp 第一节 L11_11a.asp 第一节(续) L11_11b.asp 第二节,例11:在线教程,浏览结果,验证本例,11.5 自制ActiveX服务器组件,为了进一步的开发,有必要了解自己制作ActiveX服务器组件的一般方法。 在许多不同的编程环境中都可以制作Ac

32、tiveX服务器组件,但对于本课程来说,用Visual Basic来制作ActiveX服务器组件是最方便的,具体过程如下: (1)建立组件文件(动态链接库) (2)注册组件 (3)在ASP文件中使用组件,11.5.1 建立组件文件,建立组件文件按如下过程进行: 新建ActiveX DLL 设置工程名和类模块名 输入函数定义 指出工程的起始位置 保存工程,编译生成动态连接库文件,1.新建ActiveX DLL,首先,打开Visual Basic 5.0,在出现的初始窗口中,选择新建ActiveX DLL,如图所示。,2. 建立组件文件,单击工程资源管理器窗口中的工程1,从属性窗口中将其改名为My

33、Prj,再单击类模块名(Class1),从属性窗口中将其改名为Math。,2. 建立组件文件,这样就确定了以后在ASP网页中需要创建的组件名称了。形式为: Set obj=Server.CreateObject(“MyPrj.Math”) 其中:MyPrj为工程名,而不是工程文件名,Math为工程中类模块名,而不是类模块文件名。尽管两者可以同名。,3.输入函数定义,在类模块的代码窗口输入函数定义,这些函数在ASP文件中将作为所创建的对象的方法使用,本例中以定义一个求两个数的最大公约数为例,输入以下内容: Public Function gcd(a, b) Dim r If b = 0 Then

34、 gcd = a Else r = a Mod b While r 0 a = b b = r r = a Mod b Wend gcd = b End If End Function,4.指出工程的起始位置,接着再在“工程”菜单中选择“添加模块”,在模块的代码窗口输入如下内容: Sub Main() End Sub 用于指出工程的起始位置。如图所示:,5.编译生成动态连接库文件,最后形成的工程资源管理器窗口形式如图。,选择“文件”菜单中的“保存工程”将文件存盘,再在“文件”菜单中选择“生成MyPrj.dll”,编译生成一个动态连接库文件“MyPrj.dll”.,11.5.2 注册组件,进入M

35、S-DOS方式,在存放MyPrj.dll的目录下执行如下的注册命令: c:windowssystemregsvr32 MyPrj.dll 其中前面部分是文件regsvr32.exe所在的目录路径。用户应根据自己机器的安装情况作适当调整。正确执行后显示如图提示。,11.5.3 在网页中创建并使用组件,建立网页文件如下: “ and Request.form(“b“)“) then a=Request.form(“a“) b=Request.form(“b“) set obj=Server.createobject(“MyPrj.Math“) Response.write “调用自制组件“ Res

36、ponse.write a & “和“ & b & “的最大公约数为“ & obj.gcd(a,b) & “ set obj=nothing else %,调用自制组件求a,b最大公约数,11.5.3 在网页中创建并使用组件, 请输入两个数: a= b= ,显示表单用于输入a,b俩数,11.5.3 在网页中创建并使用组件,浏览结果,验证本例,本章小结,本章介绍了常用的几个ActiveX组件的使用方式,灵活使用这些组件,可以大大地提高应用程序的开发效率。尤其是对文件的访问,它是数据库的一个补充。 另外,本章也介绍了用VB来编写自己的组件的一般过程,这为以后进行应用程序的开发打下了一定的基础。,习题,1改变global.asa文件中的Session_Onstart代码,使用文件保存网页的点击计数值。 2请说出函数和方法的区别。 3你是否想知道撤消注册的方法,你可以在DOS提示符下得到应有的帮助。 4请参照例11-10的过程,将一组图片链接成一个顺序链表。 5内容链接对象可以实现内容的顺序链接,你能用它实现层次型的链接关系吗?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1