第七章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秒Dimii=1DoWhilei>0'死循环程序i=i+1Loop%>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和Re...