版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 Server对象与服务器端文件访问7.1 Server对象属性及方法Server对象是专门为处理服务器上的事物而设计的内置对象,特别是与服务器的环境和处理活动有关的任务。有了sever对象,就可以在服务器上启动ActiveX控件。事实上,当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX 组件来强大 Web 应用程序的功能,譬如:你需要连接数据库,对数据库进行在线操作或者对 WEB 服务器上的文件系统进行操作,亦或你需要一个 WEB 广告交换程序,所有这一切你都必须通过调用 ASP 内建的 ActiveX 组件或自己编写所需的组件来完成。其实 ActiveX 组件是一个存
2、在于 WEB 服务器上的文件,该文件包含执行某项或一组任务的代码,组件可以执行公用任务,这样就不必自己去创建执行这些任务的代码。当你在 WEB 服务器上安装完 ASP 环境后,就可以直接使用它自带的几个常用组件,如 Database Access 组件。当然你也可以从第三方开发者处获得可选的组件 , 也可以编写自己的组件。可以使用任何支持组件对象模型(COM)的语言来编写组件,如, C、 C+、 Java 或 Visual Basic。ActiveX 是 Microsoft对 INTERNET 上使用 OLE/COM 作为基础技术的规格定义, ActiveX是Microsoft提出的一组使用C
3、OM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。可以使用VB、VC等编程工具开发该控件。要使用Active控件必须先注册才能使用(已注册的组件,可以在注册表的HKEYCLASSESROOT中找到)。具体使用组件时,首先要创建对象的实例并将这个新的实例分配变量名。使用 ASP 的Server.CreateObject 方法可以创建对象的实例。7.1.1
4、Server对象的属性Server对象的属性为:ScriptTimeOut.通过设置该属性值可以强制规定脚本的最长执行时间(单位:秒)。ScriptTimeout默认值为90秒。设置该属性值的方法:例如Server.ScriptTimeout=120思考题:如何验证ScriptTimeout的默认值为90秒呢?例:应用ScriptTimeout防止脚本出现死循环。 ScriptTimeout属性用法示例0 死循环程序i=i+1 Loop%7.1.2 Server的方法 Server的方法主要有:CreateObject(component):建立组件实例Execute(path):调用PATH
5、指定的程序GetlastError():返回一个ASPError对象的实例,该实例描述最近发生的错误HTMLEncode(string):将String进行编码,使它不会被解释为HTML语法URLEncode(string):将String进行编码,以放入 QueryString返回服务器MapPath(path):将Path指定的虚拟路径转换为实际路径Transfer(path):将控制权转移到Path指定的ASP程序Server.Execute方法格式:Server.Execute(path)功能:该方法是IIS5.0新增的功能,用途类似程序语言中的函数调用,也就是说,你可以在ASP程序中
6、使用Server.Execute(path)方法调用path指定的ASP程序,待彼此调用的程序执行完毕之后再返回原来的程序,继续执行接下来的指令。举例:Server.Execute方法使用 执行 page_2.asp 后会再返回 Server.Transfer方法格式:Server.Transfer(path)功能:该方法也是IIS5.0新增的功能,用于将目前ASP程序的控制权转移到path指定的ASP程序,即使转移之后的程序已经执行完毕,控制权不会返回原来的程序。举例:Server.Transfer方法使用 将控制权转移至 page_2.asp 后便不再返回注意:Server.Transfe
7、r、Server.Execute和Redirect三者的区别:(1)Transfer与Execute基本相似,唯一区别是Transfer方法执行完新网页后并不回到原来网页。(2)Redirect与Transfer有点相似,都有页面导向的功能,所不同的是,使用Transfer能够保留原来所有内置对象的值,而Redirect却做不到。思考题:编程验证Redirect与Transfer对内置对象的值的影响有何不同。Server.HTMLEncode和Server.URLEncode方法Server对象提供的Server.HTMLEncode和Server.URLEncode两个方法可以进行字符串编码
8、。1Server.HTMLEncode编码方式该编码方式可以将String进行编码,使字符串不会被解释为HTML语法。其格式为:Response.Write(Server.HTMLEncode(“段落标记:”)例如,请分析下列程序的运行结果%Response.write(这是对HTMLEncode方法的测试。这里应该不会另起一行。)%Response.write Server.HTMLEncode(这是对 HTMLEncode 方法的测试。 这里应该不会另起一行。)%2Server.URLEncode编码方式该方式可以将Srting进行编码,以放入Querystring返回服务器。服务器端用R
9、equest.Querystring(“keyname”)获取即可。例如,分析下列程序找出错误原因。 URLENCODE举例 a href=urlsample.asp?name=传name过去 注意观察 Server.MapPath方法格式:Server.MapPath(path)功能:该方法用于将path指定的虚拟路径转换为实际路径。举例:Server.MapPath方法使用Server.CreateObject方法格式:Server.CreateObject(component)功能:这是Server对象最重要的一个方法。它用于创建已经注册到服务器(从注册表里能找到已经注册的组件)上的Ac
10、tiveX组件的实例。有了它,我们就可以使用ActiveX组件轻松的扩展ActiveX的能力,使设计更加多元化。举例:下面就声明了FileSystemObject的一个实例:Dim objFSO 声明objFSO 的变量,以存放对象实例Set objFSO = Server.CreateObject(Scripting.FileSystemObject)说明:1Set 是VBScript关键字,用来建立对象实例,objFSO是这个对象的名称;Scripting.FileSystemObject是FileSystem组件在服务器注册时的ID标识。2服务器组件不能直接使用,必须先用Server.C
11、reateObject建立一个组件的对象实例,然后才能通过次对象实例访问其集合、方法和属性。7.2 ASP内置组件本节主要介绍如下几个ASP内置组件:FileSystem HYPERLINK G:ASP精品课程ASP课件第七章电子课程教案对象.doc Object组件:主要负责对服务器断文件或文件夹的相关操作。Browser Capabilities组件:获取浏览器信息。Content Linking组件:用于建立网络导航,这在建立大型网站非常有用。Dictionary组件:功能类似于数据库操作,所有操作在内存中完成,不需要存取磁盘上的文件,适合保存少量的数据。Ad Rotator组件:广告轮
12、显组件。用于制作动态交替变换的广告Web页面。7.2.1 HYPERLINK G:ASP精品课程ASP课件第七章电子课程教案对象.doc FileSystem HYPERLINK G:ASP精品课程ASP课件第七章电子课程教案对象.doc Object组件FSO( HYPERLINK G:ASP精品课程ASP课件第七章电子课程教案对象.doc FileSystem HYPERLINK G:ASP精品课程ASP课件第七章电子课程教案对象.doc Object)组件模式包含在 Scripting 类型库中,该库位于 Scrrun.dll 文件中。因而,要使用 FSO 对象模式,必须把 Scrrun
13、.dll 放在 Web 服务器的适当系统目录中。一、检查指定的磁盘、文件夹或文件是否存在在进行磁盘、文件夹或文件的读写之前,我们都必须先确定磁盘、文件夹或文件是存在的,否则将产生错误信息。我们可以分别使用FilesystemObject组件的DriveExistes(path)、FileExists(path)及FolderExists(path)方法来检查磁盘、文件夹或文件是否存在,例如以下程序:01:02: %03: Dim objFSO 声明一个名称为 objFSO 的变量以存放对象实例04: Set objFSO = Server.CreateObject(Scripting.File
14、SystemObject)05: If objFSO.DriveExists(C:) Then06: Response.Write C:磁盘是存在的 & 07: Else将虚拟路径转换为实际路径08: Response.Write C:磁盘是不存在的 & 09: End If10: If objFSO.FolderExists(Server.MapPath(Ch07) Then11: Response.Write Ch07文件夹是存在的 & 12: Else13: Response.Write Ch07文件夹是不存在的 & 将虚拟路径转换为实际路径14: End If15: If objFSO
15、.FileExists(Server.MapPath(CheckExist.asp) Then16: Response.Write CheckExist.asp文件是存在的 & 17: Else18: Response.Write CheckExist.asp文件是不存在的 & 19: End If20: Set objFSO = Nothing 释放 FileSystemObject 对象实例21: %22:注意:1使用FolderExists方法和FileExists方法时,要求参数必须是实际路径,所以,在程序中,我们总要使用Server.MapPath方法先将虚拟路径先转换为实际路径。2
16、程序结束前,我们使用Set objFSO = Nothing释放我们曾经在程序中建立的对象。二、对文件夹的操作1建立文件夹格式:objFSO.CreateFolder (FolderName)用途:FileSystemObject对象的CreateFolder方法用于建立一个FolderName文件夹,而且参数FolderName必须使用实际路径。举例:在Ch07文件夹内建立一个名称为NewFolder的文件夹。 2移动、重新命名文件夹格式:objFSO.MoveFolder Source,Destination用途:FileSystemObject对象的MoveFolder方法用于将Sour
17、ce指定的文件夹移动到Destination,而且参数Source和Destination必须使用实际路径。举例:将Web主目录的Folder1文件夹移动到Ch07文件夹内,而且移动之后的文件夹名称改为Folder2。 3删除文件夹格式:objFSO.DeleteFolder path,force用途:FileSystemObject对象的DeleteFolder方法用于删除path指定的文件夹,force为布尔值,默认值为false,不删除只读文件夹,若要采用默认值,可省略不写,若要删除只读文件夹,force的值要设置为true,参数path必须使用实际路径。举例:将Web主目录的MyFol
18、der文件夹删除。 4复制文件夹使用FileSystemObject的CopyFolder方法完成文件夹复制格式:objFSO.CopyFolder Source,Destination功能:FileSystemObject对象的CopyFolder方法用于将Source指定的文件夹复制到Destination,而且参数Source和Destination必须使用实际路径。举例:将Web主目录的Folder1文件夹复制到Ch07文件夹内,而且移动之后的文件夹名称改为Folder2。 使用Folder对象的Copy方法完成文件夹的复制格式:objFolder.Copy destination,o
19、verwrite功能:Folder对象的Copy方法用于将文件夹复制到Destination,若Destination已有同名文件夹,且Overwrite的值为True,表示将其覆盖,否则不覆盖。举例:对上例进行修改。 注意:在本例中,我们使用FilesystemObject的GetFolder方法取得Folder1文件夹的Folder对象实例,类似的还有GetFile、GetDrive方法,使用方法类似。问题:对象释放的顺序是什么?三、取得文件夹的父文件夹信息我们可以使用FilesystemObject的GetParentFolderName、GetSpecialFolder方法来取得文件夹
20、的父文件夹路径和WindowsFolder、SystemFolder、TemporaryFolder等特殊文件夹的路径,但如果要取得文件夹的大小、属性、类型和日期等信息,就必须使用Folder对象提供的属性。我们一起来看下面的例子。01:02: %03: Dim objFSO, objFolder04: Set objFSO = Server.CreateObject(Scripting.FileSystemObject)05: If objFSO.FolderExists(Server.MapPath(Ch07) Then06: Response.Write 父文件夹的路径: & _07:
21、objFSO.GetParentFolderName(Server.MapPath(Ch07) & 08: Response.Write 特殊文件夹WindowsFolder的路径: & _09: objFSO.GetSpecialFolder(WindowsFolder) & 10: Set objFolder = objFSO.GetFolder(Server.MapPath(Ch07)11: Response.Write 文件夹的名称: & objFolder.Name & 12: Response.Write 文件夹的路径: & objFolder.Path & 13: Respons
22、e.Write 文件夹的建立日期: & objFolder.DateCreated & 14: Else15: Response.Write Ch07文件夹不存在无法显示相关信息16: End If17: Set objFolder = Nothing18: Set objFSO = Nothing19: %20:本例实现对文件夹相关信息的查询,主要使用FileSystemObject对象的Getparentfoldername方法、Folder对象的相关属性。四、列出文件夹内的所有内容Folder对象提供的属性除了可以取得文件夹的大小、类型、日期、名称和路径等信息之外,还可以取得文件夹内的所
23、有文件或子文件夹。我们一起来看下面的例子。01:02: 03: %04: Dim objFSO, objFolder, objFile05: Set objFSO = Server.CreateObject(Scripting.FileSystemObject)06: If objFSO.FolderExists(Server.MapPath(Ch07) Then07: Set objFolder = objFSO.GetFolder(Server.MapPath(Ch07)08: For Each objFile in objFolder.Files09: Response.Write ob
24、jFile.Name & 10: Next11: Else12: Response.Write Ch07文件夹不存在无法显示内含的文件13: End If14: Set objFolder = Nothing15: Set objFSO = Nothing16: %17: 18:本例实现文件夹下文件信息查询。实现的关键是使用Folder对象的Files集合。五、文件的建立、移动、重命名、删除和复制1建立新文件格式:objFSO.CreateTextFile(Filename,Overwrite,Unicode)功能:FileSystemObject对象的CreateTextFile方法用于建立
25、一个文本文件,并返回一个TextStream对象实例;Filename为文本文件的名称(必须使用实际路径);Overwrite和Unicode都为布尔值,默认值都为false,前者表示是否覆盖同名文件,后者为true表示为Unicode文本文件,为false表示为ASCII文本文件。举例:本例实现在ch07下建立ASCII文本文件NewFile.asp。 2移动、重新命名文件格式:objFSO.MoveFile Source,Destination功能:FileSystemObject对象的MoveFile方法用于将Source指定的文件移动到Destination,而且参数Source和De
26、stination必须使用实际路径。举例:请说明下列程序的功能: 3删除文件格式:objFSO.DeleteFile path,force用途:FileSystemObject对象的DeleteFile方法用于删除path指定的文件,force为布尔值,默认值为false,不删除只读文件,若要采用默认值,可省略不写,若要删除只读文件夹,force的值要设置为true,参数path必须使用实际路径。举例:将Ch05文件夹内的NewFile.asp文件删除。 4复制文件格式:objFSO.CopyFileSource,Destination,Overwrite功能:FileSystemObject
27、对象的CopyFile方法用于将Source指定的文件复制到Destination,Overwrite为布尔值,默认值都为false,前者表示是否覆盖同名文件。举例:将Web主目录的File1.asp文件复制到Ch07文件夹内,而且移动之后的文件夹名称改为File2.asp。 5获取文件信息本例中我们先获取File对象,然后利用该对象的相关属性完成对文件信息的获取。 % Dim objFSO, objFile Set objFSO = Server.CreateObject(Scripting.FileSystemObject) If objFSO.FileExists(Server.MapP
28、ath(Ch07CreFile.asp) ThenSet objFile = objFSO.GetFile(Server.MapPath(Ch07CreFile.asp) Response.Write 文件的路径: & objFile.Path & Response.Write 文件的建立日期: & objFile.DateCreated & Response.Write 文件的大小: & objFile.Size & Response.Write 文件的类型: & objFile.Type & ElseResponse.Write CreFile.asp文件不存在无法显示相关信息 End I
29、f Set objFile = Nothing 释放File对象 Set objFSO = Nothing 释放FileSystemObject对象 % 六、文件的打开、读取和写入操作1打开文件两种方法都可以打开文件:objFSO.OpenTextFile(filename,iomode,create,format)objFSO.OpenAsTextStream(Iomode,Format):2读取文件(1)从文件读取Num个字符本例从Sample1.txt文件每次读取6个字符,直到文件结尾。Sample1.txt文件只有一行数据,内容为“好书推荐:逝去之梦3D精彩动画制作”。 % Dim o
30、bjFSO, objTS, Chars Set objFSO = Server.CreateObject(Scripting.FileSystemObject) Set objTS = objFSO.OpenTextFile(Server.MapPath(Sample1.txt), 1) Do While Not objTS.AtEndOfStream 检查是否到达文件结尾 Chars = objTS.Read(6) 读取6个字符给字符串变量Chars Response.Write Chars & 输出Chars和强制换行标记 Loop objTS.Close 关闭已打开的文件 Set obj
31、TS = Nothing 释放TextStream对象案例 Set objFSO = Nothing 释放FileSystemObject对象案例 %(2)从文件读取Num个字符本例使用objTS.ReadLine从Sample2.txt文件中每次读取一行,直到文件结尾。 % Dim objFSO, objTS, ALine Set objFSO = Server.CreateObject(Scripting.FileSystemObject) Set objTS = objFSO.OpenTextFile(Server.MapPath(Sample2.txt), 1) Do While No
32、t objTS.AtEndOfStream 检查是否到达文件结尾ALine = objTS.ReadLine 读取一行字符给字符串变量ALine Response.Write ALine 输出ALineResponse.Write 强制换行标记 Loop objTS.Close 关闭已打开的文件 Set objTS = Nothing 释放TextStream对象案例 Set objFSO = Nothing 释放FileSystemObject对象案例 %(3)从文件读取全部内容本例使用objTS.ReadAll一次读取Sample2.txt文件中全部内容,然后显示在浏览器上。% Dim o
33、bjFSO, objTS, AllLines, ResultSet objFSO = Server.CreateObject(Scripting.FileSystemObject) Set objTS = objFSO.OpenTextFile(Server.MapPath(Sample2.txt), 1)在读取文件内容之前先使用 If 语句检查是否到达文件结尾If Not objTS.AtEndOfStream Then读取全部内容,再指派给字符串变量 AllLinesAllLines = objTS.ReadAll 使用 Replace 函数将字符串变量中的换行字符置换成强制换行标记Res
34、ult = Replace(AllLines, vbCrLf, )Response.Write ResultEnd IfobjTS.Close关闭已打开的文件Set objTS = Nothing释放 TextStream 对象实例Set objFSO = Nothing释放 FileSystemObject 对象实例% 3.写入文件在成功打开文件并取得一个TextStream对象实例之后,我们可以分别使用TextStream对象提供的Write(String)、WriteLine(String)、WriteBlankLines(Num)方法,在文件内写入字符串、字符串和换行字符、Num个换行
35、字符。现在我们一起来看这三个方法应用的例子。4如何设置Server-Side IncludeServer-Side Include允许我们将一些常用的功能写成独立的文件,然后插入网页,如此一来,就不用重复编写相同的程序代码,而且一旦这些功能需要进行调整时,只要修改定义这些功能的文件,而不必到每个网页做修改。使用格式如下: 例如,我们已经编制好了NaviBar.asp,其代码如下:回首页 文渊阁简介 系列图书我们可以在Include1.asp中包含上面的那段代码: 7.2.2 Content Linking组件Content Linking组件用于建立网络导航,它将链接地址存放在文本文件(必须按
36、照规定的格式存放),因此便于维护(只需编辑文本文件即可)。该组件的工作原理是:自动将当前显示页面的URL地址与服务器文本文件的页面列表匹配起来。用于存放链接地址的文本文件称为内容链接列表文件。该文件包含一个按显示顺序排列的URL列表,每个页面链接用一行表示,每行包含三个部分:URL地址、描述和注释三个部分。其中描述用语在页面上显示链接文本,注释用于说明链接,但注释对访问者不可见。例如,如果要实现如图所示页面效果,则相应的链接文件应该如下所示。 文件超链接组件应用示例网络导航a href=http:/ target=_New Content Linking组件的方法:GetListCount(L
37、inks_File):返回链接文件中条目的数量GetListIndex(Links_File):返回链接文件中当前页面的索引号GetNextURL(Links_File):返回链接文件中下一个页面的URL地址GetNextDescription(Links_File):返回下一个页面的描述GetPreviousURL(Links_File):返回前一个页面的URL地址GetPreviousDescription(Links_File):返回前一个页面的描述GetNthURL(Links_File,n):返回第n个页面的URL地址GetNthURLDescription(Links_File,n
38、):返回第n个页面的描述7.2.3 Browser Capabilities组件由于不同的浏览器存在差异,所以当不同的浏览器浏览相同的页面时,就有可能得到不同的浏览结果。解决这个问题的行之有效的方法是针对不同的浏览器编写不同的页面程序,但前提是要先知道浏览器的相关信息。我们可以使用ServerVariables集合获取一部分有关于浏览器的信息,但不完整。这里我们介绍使用Browser Capabilities组件来检测浏览器信息。1Browser组件属性Browser:浏览器类型名称Version:浏览器版本名称Majorver:浏览器主版本Minorver:浏览器次版本Frames:是否支持
39、框架功能Tables:是否支持表格功能Cookies:是否支持CookieBackgroundsounds:是否支持背景音乐Vbscript:是否支持VbscriptJavaScript:是否支持JavaScriptJavaapplets:是否支持JAVA小程序ActiveXControls:是否支持ActiveX程序下面程序演示如何输出浏览器信息:客户端浏览器信息客户端浏览器信息浏览器类型:浏览器版本:支持框架否:支持Cookie否:True支持JavaScript否:支持Java小程序否:支持ActiveX否:当我们已经获取了浏览器以后,可以利用这些信息作出一些选择。请看下例: 你的浏览器
40、不支持框架2Browscap.ini文件在Browser Capabilities组件的原理机制中,涉及到一个非常重要的文件: Browscap.ini。这个文件必须和browscap.dll文件处于同一个文件夹之下通常在系统文件夹下:c:windowssysytem32inetsrvBrowscap.ini。它只是个普通的文本文件,其中记录了各种型号的浏览器信息。当一个客户端连接到服务器,就会向服务器发送一个请求,该请求包含了一个USERAGENT页眉(浏览器信息字符串)。Browser Capabilities组件会把这个页眉信息与Browscap.ini文件的内容进行比较匹配。一旦匹配成功,则建立映射,以后凡是程序中通过Browser Capabilities组件获取的浏览器信息都来自于该文件。因该即使升级Browscap.ini(/browscap)问题:如何验证通过Browser Capabilities组件获取的浏览器信息都来自于Browscap.ini呢?请编程验证。7.2.4 利用Dictionary组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供货协议属合同
- 零售业财务评估师全攻略及常见问题解析
- 作业许可管理员面试题集
- 联想集团研发工程师面试题及答案详解
- 健康管理师面试题及答案解析
- 城市管理督查专员的面试题及答案解析
- 2025年健身产业综合体建设项目可行性研究报告
- 2025年智慧城市数据管理系统集成可行性研究报告
- 2025年大健康产业发展论坛可行性研究报告
- 2025年农作物精准灌溉技术推广项目可行性研究报告
- 在线网课知慧《形势与政策(吉林大学)》单元测试考核答案
- 业主授权租户安装充电桩委托书
- 化工建设综合项目审批作业流程图
- 亲子鉴定的报告单图片
- 辽宁轨道交通职业学院单招《职业技能测试》参考试题库(含答案)
- 新概念二单词表新版,Excel 版
- 2023年陕西西安经济技术开发区招聘120人(共500题含答案解析)笔试必备资料历年高频考点试题摘选
- 第八讲 发展全过程人民民主PPT习概论2023优化版教学课件
- 篇12pmc窗口功能指令举例讲解
- GB/T 7332-2011电子设备用固定电容器第2部分:分规范金属化聚乙烯对苯二甲酸酯膜介质直流固定电容器
- GB/T 38658-20203.6 kV~40.5 kV交流金属封闭开关设备和控制设备型式试验有效性的延伸导则
评论
0/150
提交评论