Server对象与服务器端文件访问.docx
《Server对象与服务器端文件访问.docx》由会员分享,可在线阅读,更多相关《Server对象与服务器端文件访问.docx(25页珍藏版)》请在冰豆网上搜索。
![Server对象与服务器端文件访问.docx](https://file1.bdocx.com/fileroot1/2022-11/30/449c67e3-1867-42c5-8693-b319a01cce50/449c67e3-1867-42c5-8693-b319a01cce501.gif)
Server对象与服务器端文件访问
Server对象与服务器端文件访问
7.1Server对象属性及方法
Server对象是专门为处理服务器上的事物而设计的内置对象,专门是与服务器的环境和处理活动有关的任务。
有了sever对象,就能够在服务器上启动ActiveX控件。
事实上,当你用ASP编写服务器端应用程序时,必须依靠ActiveX组件来强大Web应用程序的功能,譬如:
你需要连接数据库,对数据库进行在线操作或者对WEB服务器上的文件系统进行操作,亦或你需要一个WEB广告交换程序,所有这一切你都必须通过调用ASP内建的ActiveX组件或自己编写所需的组件来完成。
事实上ActiveX组件是一个存在于WEB服务器上的文件,该文件包含执行某项或一组任务的代码,组件能够执行公用任务,如此就不必自己去创建执行这些任务的代码。
当你在WEB服务器上安装完ASP环境后,就能够直截了当使用它自带的几个常用组件,如DatabaseAccess组件。
因此你也能够从第三方开发者处获得可选的组件,也能够编写自己的组件。
能够使用任何支持组件对象模型(COM)的语言来编写组件,如,C、C++、Java或VisualBasic。
ActiveX是Microsoft对INTERNET上使用OLE/COM作为基础技术的规格定义,ActiveX是Microsoft提出的一组使用COM(ComponentObjectModel,部件对象模型)使得软件部件在网络环境中进行交互的技术集。
它与具体的编程语言无关。
作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。
同时,ActiveX技术也被用于方便地创建一般的桌面应用程序。
能够使用VB、VC等编程工具开发该控件。
要使用Active控件必须先注册才能使用(已注册的组件,能够在注册表的HKEY—CLASSES—ROOT中找到)。
具体使用组件时,第一要创建对象的实例并将那个新的实例分配变量名。
使用ASP的Server.CreateObject方法能够创建对象的实例。
7.1.1Server对象的属性
Server对象的属性为:
ScriptTimeOut.通过设置该属性值能够强制规定脚本的最长执行时刻(单位:
秒)。
ScriptTimeout默认值为90秒。
设置该属性值的方法:
例如Server.ScriptTimeout=120
摸索题:
如何验证ScriptTimeout的默认值为90秒呢?
例:
应用ScriptTimeout防止脚本显现死循环。
ScriptTimeout属性用法示例<%
Server.ScriptTimeout=1'设置脚本文件最长执行时刻为1秒
Dimi
i=1
DoWhilei>0'死循环程序
i=i+1
Loop
%>
7.1.2Server的方法
Server的方法要紧有:
ØCreateObject(component):
建立组件实例
ØExecute(path):
调用PATH指定的程序
Ø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程序中使用Server.Execute(path)方法调用path指定的ASP程序,待彼此调用的程序执行完毕之后再返回原先的程序,连续执行接下来的指令。
举例:
Server.Execute方法使用
<%Response.Write"调用Execute方法之前"%>
<%Server.Execute("page_2.asp")%>'执行page_2.asp后会再返回
<%Response.Write"调用Execute方法之后"%>
<%Response.Write“这是page_2.asp的执行结果"%>
◆Server.Transfer方法
格式:
Server.Transfer(path)
功能:
该方法也是IIS5.0新增的功能,用于将目前ASP程序的操纵权转移到path指定的ASP程序,即使转移之后的程序差不多执行完毕,操纵权可不能返回原先的程序。
举例:
Server.Transfer方法使用
<%Response.Write"调用Transfer方法之前"%>
<%Server.Transfer("page_2.asp")%>'将操纵权转移至page_2.asp后便不再返回
<%Response.Write"调用Transfer方法之后"%>
注意:
Server.Transfer、Server.Execute和Redirect三者的区别:
(1)Transfer与Execute差不多相似,唯独区别是Transfer方法执行完新网页后并不回到原先网页。
(2)Redirect与Transfer有点相似,都有页面导向的功能,所不同的是,使用Transfer能够保留原先所有内置对象的值,而Redirect却做不到。
摸索题:
编程验证Redirect与Transfer对内置对象的值的阻碍有何不同。
◆Server.HTMLEncode和Server.URLEncode方法
Server对象提供的Server.HTMLEncode和Server.URLEncode两个方法能够进行字符串编码。
1.Server.HTMLEncode编码方式
该编码方式能够将String进行编码,使字符串可不能被说明为HTML语法。
其格式为:
Response.Write(Server.HTMLEncode(“段落标记:
”))
例如,请分析下列程序的运行结果
<%
Response.write("这是对HTMLEncode方法的测试。
那个地点应该可不能另起一行。
")
%>
<%
Response.writeServer.HTMLEncode("这是对HTMLEncode方法的测试。
那个地点应该可不能另起一行。
")
%>
2.Server.URLEncode编码方式
该方式能够将Srting进行编码,以放入Querystring返回服务器。
服务器端用Request.Querystring(“keyname”)猎取即可。
例如,分析下列程序找出错误缘故。
<%language=vbscript%>
URLENCODE举例name=<%=server.urlencode("李四")%>">传name过去
<%@language=vbscript%>
<%
name=request.form("name")
%>
注意观看<%=name&"你好"%>
◆Server.MapPath方法
格式:
Server.MapPath(path)
功能:
该方法用于将path指定的虚拟路径转换为实际路径。
举例:
Server.MapPath方法使用
<%Response.Write"父名目为"&Server.MapPath("../")%>
<%Response.Write"现在名目为"&Server.MapPath("./")%>
<%Response.Write"根名目为"&Server.MapPath("/")%>
<%Response.Write"网页的实际路径为"&Server.MapPath("path.asp")%>
◆Server.CreateObject方法
格式:
Server.CreateObject(component)
功能:
这是Server对象最重要的一个方法。
它用于创建差不多注册到服务器(从注册表里能找到差不多注册的组件)上的ActiveX组件的实例。
有了它,我们就能够使用ActiveX组件轻松的扩展ActiveX的能力,使设计更加多元化。
举例:
下面就声明了FileSystemObject的一个实例:
DimobjFSO'声明objFSO的变量,以存放对象实例
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
说明:
1.Set是VBScript关键字,用来建立对象实例,objFSO是那个对象的名称;Scripting.FileSystemObject是FileSystem组件在服务器注册时的ID标识。
2.服务器组件不能直截了当使用,必须先用Server.CreateObject建立一个组件的对象实例,然后才能通过次对象实例访问其集合、方法和属性。
7.2ASP内置组件
本节要紧介绍如下几个ASP内置组件:
ØFileSystemObject组件:
要紧负责对服务器断文件或文件夹的相关操作。
ØBrowserCapabilities组件:
猎取扫瞄器信息。
ØContentLinking组件:
用于建立网络导航,这在建立大型网站专门有用。
ØDictionary组件:
功能类似于数据库操作,所有操作在内存中完成,不需要存取磁盘上的文件,适合储存少量的数据。
ØAdRotator组件:
广告轮显组件。
用于制作动态交替变换的广告Web页面。
7.2.1FileSystemObject组件
FSO(FileSystemObject)组件模式包含在Scripting类型库中,该库位于Scrrun.dll文件中。
因而,要使用FSO对象模式,必须把Scrrun.dll放在Web服务器的适当系统名目中。
一、检查指定的磁盘、文件夹或文件是否存在
在进行磁盘、文件夹或文件的读写之前,我们都必须先确定磁盘、文件夹或文件是存在的,否则将产生错误信息。
我们能够分别使用FilesystemObject组件的DriveExistes(path)、FileExists(path)及FolderExists(path)方法来检查磁盘、文件夹或文件是否存在,例如以下程序:
01:
02:
<%
03:
DimobjFSO'声明一个名称为objFSO的变量以存放对象实例
04:
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
05:
IfobjFSO.DriveExists("C:
")Then
06:
Response.Write"C:
磁盘是存在的"&"
"
07:
Else将虚拟路径转换为实际路径
08:
Response.Write"C:
磁盘是不存在的"&"
"
09:
EndIf
10:
IfobjFSO.FolderExists(Server.MapPath("\Ch07"))Then
11:
Response.Write"Ch07文件夹是存在的"&"
"
12:
Else
13:
Response.Write"Ch07文件夹是不存在的"&"
"将虚拟路径转换为实际路径
14:
EndIf
15:
IfobjFSO.FileExists(Server.MapPath("CheckExist.asp"))Then
16:
Response.Write"CheckExist.asp文件是存在的"&"
"
17:
Else
18:
Response.Write"CheckExist.asp文件是不存在的"&"
"
19:
EndIf
20:
SetobjFSO=Nothing'开释FileSystemObject对象实例
21:
%>
22:
注意:
1.使用FolderExists方法和FileExists方法时,要求参数必须是实际路径,因此,在程序中,我们总要使用Server.MapPath方法先将虚拟路径先转换为实际路径。
2.程序终止前,我们使用SetobjFSO=Nothing开释我们曾经在程序中建立的对象。
二、对文件夹的操作
1.建立文件夹
格式:
objFSO.CreateFolder(FolderName)
用途:
FileSystemObject对象的CreateFolder方法用于建立一个FolderName文件夹,而且参数FolderName必须使用实际路径。
举例:
在Ch07文件夹内建立一个名称为NewFolder的文件夹。
<%
DimobjFSO
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
objFSO.CreateFolder(Server.MapPath("\ch07\NewFolder"))
Response.Write"新文件夹的实际路径为"&Server.MapPath("\ch07\NewFolder")
SetobjFSO=Nothing
%>
2.移动、重新命名文件夹
格式:
objFSO.MoveFolderSource,Destination
用途:
FileSystemObject对象的MoveFolder方法用于将Source指定的文件夹移动到Destination,而且参数Source和Destination必须使用实际路径。
举例:
将Web主名目的Folder1文件夹移动到Ch07文件夹内,而且移动之后的文件夹名称改为Folder2。
<%
DimobjFSO
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
IfobjFSO.FolderExists(Server.MapPath("\Folder1"))Then
objFSO.MoveFolderServer.MapPath("\Folder1"),Server.MapPath("\Ch07\Folder2")
Else
Response.Write"Folder1文件夹不存在无法进行移动"
EndIf
SetobjFSO=Nothing
%>
3.删除文件夹
格式:
objFSO.DeleteFolderpath,force
用途:
FileSystemObject对象的DeleteFolder方法用于删除path指定的文件夹,force为布尔值,默认值为false,不删除只读文件夹,若要采纳默认值,可省略不写,若要删除只读文件夹,force的值要设置为true,参数path必须使用实际路径。
举例:
将Web主名目的MyFolder文件夹删除。
<%
DimobjFSO
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
IfobjFSO.FolderExists(Server.MapPath("\MyFolder"))Then
objFSO.DeleteFolderServer.MapPath("\MyFolder")
Else
Response.Write"MyFolder文件夹不存在无法进行删除"
EndIf
SetobjFSO=Nothing
%>
4.复制文件夹
Ø使用FileSystemObject的CopyFolder方法完成文件夹复制
格式:
objFSO.CopyFolderSource,Destination
功能:
FileSystemObject对象的CopyFolder方法用于将Source指定的文件夹复制到Destination,而且参数Source和Destination必须使用实际路径。
举例:
将Web主名目的Folder1文件夹复制到Ch07文件夹内,而且移动之后的文件夹名称改为Folder2。
<%
DimobjFSO
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
IfobjFSO.FolderExists(Server.MapPath("\Folder1"))Then
objFSO.CopyFolderServer.MapPath("\Folder1"),Server.MapPath("\Ch07\Folder2")
Else
Response.Write"Folder1文件夹不存在无法进行复制"
EndIf
SetobjFSO=Nothing
%>
Ø使用Folder对象的Copy方法完成文件夹的复制
格式:
objFolder.Copydestination,overwrite
功能:
Folder对象的Copy方法用于将文件夹复制到Destination,若Destination已有同名文件夹,且Overwrite的值为True,表示将其覆盖,否则不覆盖。
举例:
对上例进行修改。
<%
DimobjFSO,objFolder
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
IfobjFSO.FolderExists(Server.MapPath("\Folder1"))Then
SetobjFolder=objFSO.GetFolder(Server.MapPath("\Folder1"))
objFolder.CopyServer.MapPath("\Ch07\Folder2"),true
Else
Response.Write"Folder1文件夹不存在无法进行复制"
EndIf
SetobjFolder=Nothing
SetobjFSO=Nothing
%>
注意:
在本例中,我们使用FilesystemObject的GetFolder方法取得Folder1文件夹的Folder对象实例,类似的还有GetFile、GetDrive方法,使用方法类似。
问题:
对象开释的顺序是什么?
三、取得文件夹的父文件夹信息
我们能够使用FilesystemObject的GetParentFolderName、GetSpecialFolder方法来取得文件夹的父文件夹路径和WindowsFolder、SystemFolder、TemporaryFolder等专门文件夹的路径,但假如要取得文件夹的大小、属性、类型和日期等信息,就必须使用Folder对象提供的属性。
我们一起来看下面的例子。
01:
02:
<%
03:
DimobjFSO,objFolder
04:
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
05:
IfobjFSO.FolderExists(Server.MapPath("\Ch07"))Then
06:
Response.Write"父文件夹的路径:
"&_
07:
objFSO.GetParentFolderName(Server.MapPath("\Ch07"))&"
"
08:
Response.Write"专门文件夹WindowsFolder的路径:
"&_
09:
objFSO.GetSpecialFolder(WindowsFolder)&"
"
10:
SetobjFolder=objFSO.GetFolder(Server.MapPath("\Ch07"))
11:
Response.Write"文件夹的名称:
"&objFolder.Name&"
"
12:
Response.Write"文件夹的路径:
"&objFolder.Path&"
"
13:
Response.Write"文件夹的建立日期:
"&objFolder.DateCreated&"
"
14:
Else
15:
Response.Write"Ch07文件夹不存在无法显示相关信息"
16:
EndIf
17:
SetobjFolder=Nothing
18:
SetobjFSO=Nothing
19:
%>
20:
本例实现对文件夹相关信息的查询,要紧使用FileSystemObject对象的Getparentfoldername方法、Folder对象的相关属性。
四、列出文件夹内的所有内容
Folder对象提供的属性除了能够取得文件夹的大小、类型、日期、名称和路径等信息之外,还能够取得文件夹内的所有文件或子文件夹。
我们一起来看下面的例子。
01:
02:
03:
<%
04:
DimobjFSO,objFolder,objFile
05:
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
06:
If