910 likes | 1.05k Views
第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 文件处理.
E N D
本章主要内容 • 安装好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 文件处理 11.5.3 在网页中创建并使用组件 11.2 广告轮播 11.3 浏览器信息组件 本章小结 11.4 内容链接组件 习题
11.1 文件访问 • ASP提供了FileSystemObject对象用于获得对文件、文件夹和驱动器的访问。使用FileSystemObject对象,可以创建File、Folder和Drive对象,分别用来代表计算机上的文件、文件夹和驱动器。每一个对象都有一些属性和方式来完成所需的任务。
11.1.1 使用文本文件 • 使用文本文件可以方便地记录少量信息或者记录一些没有格式要求的信息。如网页的点击次数等。对此主要讨论以下内容: 1. 创建新文件 2. 读取文件 3. 文件中追加数据
1.创建新文件 • 要创建新文件,要按如下步骤: • 使用Server对象的CreateObject方法创建文件系统对象(FileSystemObject) • 用文件系统对象的CreateTextFile方法创建文本流文件(TextStream) • 使用文本流文件的写方法写入一些内容 • 用close方法关闭这些对象 • 释放这些对象
建立文本文件对象 创建新文件例 向文件中写入内容 • 网页内容 <% 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 %> 创建一个文件系统对象 关闭文件 撤消对象 执行本例 脚本
创建新文件例 • 本例的代码执行后没有任何显示,完成后可通过文本编辑器打开C盘根目录下asp.txt文件,观察写入的内容。 • 例中涉及以下内容: • 创建文件系统对象 • 建立文本文件对象 • 向文件中写入内容 • 关闭文本文件 • 撤消文本文件对象
(1)创建文件系统对象 • 通过服务器对象创建一个文件系统对象(FileSystemObject)。 • 形式如下: Set objFS=Server.CreateObject("Scripting.FileSystemObject") • 其中:objFS为创建的对象名称。
(2)建立文本文件对象 • 通过执行文件系统对象的CreateTextFile方法,可以建立一个文本文件对象,形式如下: Set 文件变量名=CreateTextFile(文件路径,覆盖方式,编码方式) • 其中: 文件路径指出要创建文件所在的目录路径及文件名,使用物理路径。 覆盖方式是可选的,默认为TRUE,表示如果存在同名的文件,则覆盖该文件,若设置为FALSE,则当存在同名文件时会返回错误信息。 编码方式是可选的,默认为FALSE,表示使用ASC码形式进行创建和保存。如果选择TRUE,将以Unicode方式创建和保存。
(3)向文件中写入内容 • 向文件中写入内容可使用文本文件对象的有关方法,主要有如下几种: • write(字符串):将一个字符串写入文本文件,但不换行。 • writeLine(字符串):将一个字符串写入文本文件,并随后写入一个换行符。字符串缺省时,表示只写入一个换行符。 • WriteBlankLines(n):写入n个换行符。
(4)关闭文本文件 • 使用文本文件对象的close方法关闭文本文件,形式如下: objTextS.Close • 其中objTexts为文本文件对象。
(5)撤消文本文件对象 • 撤消文本文件对象和撤消文件系统对象分别使用如下形式: set objTextS=Nothing set objFS=nothing
2. 读取文件 • 要读取文件中的数据,首先需要用文件系统对象的打开文本文件(OpenTextFile)方法来创建一个TextStream对象,再用该对象的有关方法来对文件进行读取操作。
读取文件例 建立文件系统对象 <% 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 %> 打开文件 输出一行 当文件没有结束时循环 读一行 关闭并释放对象
读取文件例 • 浏览结果如图 验证本例
打开文本文件 • 打开一个文本文件形式如下: Set 文件变量=objFS.OpenTextFile(文件路径,打开方式,创建选项,编码方式) • 其中: • 打开方式是可选参数,指出打开该文件是用来进行读、写还是追加。默认为1表示读,设置为2时表示进行写操作,8表示进行追加操作。 • 创建选项是可选参数,默认为False,当设为TRUE时,表示若该文件不存在,创建该文件。 • 格式中的“文件路径”和“编码方式”的含义与CreateTextFile方法的相应参数相同。
文本文件对象的属性 • 文本文件对象有如下几种属性用于读的控制操作: • AtEndOfLine表示当前是否处于行末。 • AtEndOfStream表示当前是否处于文件结束位置。 • Column用于返回当前字符的列号,第一个字符的列号为1。 • Line用于返回当前行处于文件中的第几行。
文本文件中读取数据 • 文本文件中读取数据有如下几种方法: • Read(n) 从文本文件中读取n个字符。 • ReadLine 用于从文本文件中读取给定行号的一行内容。 • ReadAll 用于读取文件的所有内容。 • Skip(n) 跳过n个字符。 • SkipLine(n) 跳过n行。
3. 文件中追加数据 • 要向已经存在的文件中添加内容,可以使用添加方式打开文件,即在打开文件的方法中选择打开方式为8。形式如下: set objTextS=objFS.OpenTextFile("C:\asp.txt",8) • 其后就可以象创建文件时那样写入内容了。
文件中追加数据例 建立文件系统对象 <% 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 %> 打开文件 写入几行内容 关闭并释放对象
文件中追加数据例 • 因本例中使用缺省方式,应先执行例1的脚本。本例脚本执行完后,可通过运行例2中的脚本来观察结果,显示形式如图所示。 执行例1 脚本 执行本例 脚本 执行例2的脚本 观察结果
11.1.2 文件夹对象 • 通过文件系统对象的GetFolder方法,可以创建文件夹对象,形式为: set 文件夹变量=文件系统对象.GetFolder(“目录名”) • 这里的目录名使用物理路径的形式,如果要为某个虚拟目录建立文件夹对象,可以先使用Server对象的MapPath方法来求出对应的物理路径。
1. 文件夹对象的属性 • 创建文件夹对象后,就可以使用该对象的以下属性: • name属性==>求出该文件夹的名称 • 用Files属性集合==>求出该文件夹中包含的所有文件 • 用SubFolders属性集合==>得到该文件夹中所包含的所有子文件夹。
1. 文件夹对象的属性 • 另外还有: • Attributes==>文件属性 • DateCreated==>建立日期和时间 • DateLastAccessed==>最后访问日期和时间 • DateLastModified==>最后修改日期和时间
2. 文件夹对象的方法 • 可以使用如下方法: • Copy==>复制 • Delete==>删除 • Move==>移动
文件夹对象使用举例 • 例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 建立文件系统对象 建立文件夹对象 对文件夹中所以子文件夹循环 显示文件夹名称、标志、日期时间
文件夹对象使用举例 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 %> 对文件夹中所以文件循环 显示文件名、大小 显示文件日期时间 释放对象
文件夹对象使用举例 • 浏览结果 验证本例
11.1.3 驱动器 • 通过文件系统对象的GetDrive方法可以创建一个驱动器对象,使用形式为: set 驱动器对象变量=文件系统变量.GetDrive(“驱动器名”) • 例如: set objDrive=objFS.GetDrive(“C:”)
驱动器常用的属性 • 常用的属性: • FileSystem 文件系统类型 • VolumeName 卷标名称 • FreeSpace 自由空间 • TotalSize 总空间 • RootFolder 根文件夹 • SerialNumber 序列号 • ShareName 共享名称 • IsReady 是否就绪 • DriveType 启动器类型
驱动器使用例 建立文件系统对象,建立驱动器对象 • 例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 驱动器是否就绪
驱动器使用例 • 例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 %> 判别驱动器类型 释放对象
驱动器使用例 • 浏览结果如图所示。 验证本例 注意:读者验证本例时,应在脚本的第3行中改用与自已机器相适应的驱动器名。
11.1.4 文件处理 • 常用的文件处理包括文件的复制、移动、删除以及检测文件是否存在等。通过文件系统对象的相应方法就可以很方便地实现这些操作。
1.拷贝文件 • 使用文件系统对象的CopyFile方法,可以实现文件的复制,使用形式: 对象变量名.CopyFile 源文件,目标文件,[覆盖方式] • 其中:指出源文件时,可包含统配符来指出多个文件,覆盖方式表示当目标文件存在时,是否覆盖。
2.移动文件 • 使用文件系统对象的MoveFile方法,可以实现文件或文件夹的复制,使用形式: 对象变量名.MoveFile 源文件,目标文件 • 同样,可使用统配符来指出移动多个文件,当目标文件存在时,系统将给出错误提示。
3.删除文件 • 使用文件系统对象的DeleteFile方法,可以删除指定的文件,使用格式如下: 对象变量名.DeleteFile 文件路径 • 同样可以使用统配符来指出多个文件。
4.检测文件是否存在 • 通过文件系统对象的FileExists方法,可以检测文件是否存在,使用形式为: 对象变量名.FileExists(“文件路径”) • 对于象文本文件,在打开前,可以先用此方法了解文件是否存在,再决定如何打开该文件。
5.使用文件对象 • 通过文件系统对象的GetFile方法可以创建File对象,用该对象同样可以得到文件的有关属性。 • 使用文件对象同样可以实现文件的复制、移动和删除操作,只是由于源文件已经指定,所以格式有所不同,分别如下: • 文件对象名.Copy 新文件,[覆盖方式] • 文件对象名. Move 新文件 • 文件对象名. Delete
创建一个文件 文件对象使用例 执行本例 脚本 • 例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 %> 建立文件对象 进行文件操作 释放对象
11.2 广告轮播 • 当你需要按照不同的概率随机地显示不同的广告时,可以使用ASP附带的Ad Rotator组件,称为广告轮换组件。当网页被加载时,它能按照指定的权重选择某一广告图片,并建立对应的超链接,这样,当用户单击该图片时,转向事先指定的网页,同时,可以记录该广告的点击次数。
11.2 广告轮播 • 示义 浏览器得到的内容 网页内容 图片和超连接 网页内容 点击广告后转到网页 ASP文件内容 广告信息 统计处理 文件 随机产生 网页内容 Ad Rotator组件 网页内容 根据广告信息转到实际网站 实际网站 实际网站 实际网站 实际网站 实际网站
11.2 广告轮播 • 要使用该组件,需要完成以下几部分内容: • 准备数据文件(信息文件 ) • 在网页中使用组件 • 创建一个组件对象 • 调用这个对象 • 建立统计处理网页
1. 数据文件(信息文件 ) • 信息文件包含两部分信息,一部分是公用信息,包括: • REDIRECT项用于指出当用户点击广告图片时,重定向到哪个网页文件。 • WIDTH项指出广告图标的显示宽度。默认值为440。 • HEIGHT项指出图标的显示高度。默认值为60。 • BORDER项指出广告图标显示时是否加边框。
1. 数据文件(信息文件 ) • 第二部分是各个广告的信息,包含:图片文件名,实际需要转向的地址(网站地址),图片说明信息,该广告的显示权重等4项信息。 • 例: software.gif http://www.microsoft.com 微软站点 40
1. 数据文件(信息文件 ) • 信息文件完整形式如下: REDIRECT L11_7a.asp WIDTH 200 HEIGHT 30 BORDER 0 * a1.gif L11_1.asp 文件使用的第一个例子 30 software.gif http://www.microsoft.com 微软站点 40 a2.gif L11_2.asp 文件使用的第二个例子 30 图片大小为200*30,无边框 按30:40:30的比例显示3个不同的广告 信息文件以txt为扩展名存放
2.创建组件对象 • 使用Server对象的CreateObject方法创建组件对象,形式如下: Set objAd=Server.CreateObject(“MSWC.AdRotator”) • 其中: objAd为创建的组件对象名
3.调用组件对象 • 在网页中需要显示广告图片的位置上调用这个对象的GetAdverTisment方法。形式如下: <%=objAd.GetAdverTisment(“adrot.txt”)%> • 其中:文本文件adrot.txt中包含了所有要显示广告的有关信息,称为广告轮播的信息文件。
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> • 可以看出,该超链接中把真正要转向的位置作为查询字符串发送到指定文件。