Server对象用于处理服务器上的一些特殊任务,例如,创建组件实例、获取文件路径、执行ASP脚本文件等。
Server对象是体现ASP强大功能的一个对象,前面我们所讲的一些对象基本都是针对获取、请求以及简单的存储信息而设计的,而这个对象却非常强大。
之所以说他强大,我的原因有二:
第一,可以通过Server对象创建服务器上所具有的组件的实例,从而扩展ASP的功能。
第二,Server对象可以执行服务器上的ASP文件,从而使得一些大型系统的架构变得简单。
Server对象只有一个属性,即ScriptTimeout属性。不知道你是否还记得Session的Timeout属性,这里的ScriptTimeout属性是设定了当前页面执行的超时时间,例如,下面的代码将当前页面的执行超时时间设定为500秒。
Server. ScriptTimeout = 500
设定完毕这个时间后,当当前页面在服务器上的执行时间大于这个时间,则会强制终止当前页面的运行。因此如果某个页面可能运行时间较长的话,你就需要手动的增大这个值,来保证页面可以正常执行完毕。如果不设定,那么这个值将遵循IIS的默认设定,为90秒。
Server对象有如下几种方法:
l CreateObject("identifier") 创建由identifier标识的对象(一个组件、应用程序或脚本对象)的一个实例
l Execute("url") 停止当前页面的执行,把控制转到在url中指定的网页。在该页面执行完成后,控制传递回原先的页面,并继续执行Execute方法后面的语句
l HTMLEncode("string") 对字符串进行HTML转义
l MapPath("url") 返回在url中指定的文件或资源的完整物理路径和文件名
l Transfer("url") 停止当前页面的执行,把控制转到url中指定的页面。
l URLEncode("string") 对字符串进行Url转义
首先来看CreateObject方法,这个方法用于创建服务器上的组件的实例。
这个方法最常用的就是用来创建数据库操作组件ADO的实例,如下:
Set rs = Server.CreateObject("Adodb.RecordSet")
这段代码则建立了组件Adodb.RecordSet的实例rs,你可以用rs进行一些数据集的操作,当然,这个我们在后面会详细讲解。
ExeCute方法和Transfer方法我们放在一起比较,两者的作用都是停止当前页面的运行,并传递到另外一个页面,其不同在于,Execute方法是在另外一个页面执行完毕后回到现在的页面继续向下执行,而Transfer方法则是在另外一个页面执行完毕后即停止运行了。
我们用实例来说明这一点。假设有三个文件分别是1.ASP、2.ASP以及3.ASP,其中3.ASP文件的代码只有一句,是<%Response.Write("这是3.ASP文件的内容")%>
1.ASP文件的代码如下:
<%
Response.Write("这是1.ASP文件开始的内容")
Server.Execute("3.ASP")
Response.Write("这是1.ASP文件结束的内容")
%>
2.ASP文件的代码如下:
<%
Response.Write("这是2.ASP文件开始的内容")
Server.Transfer("3.ASP")
Response.Write("这是2.ASP文件结束的内容")
%>
请通过最终执行的结果来比较Server.Execute和Server.Transfer方法的不同,如图8.8所示。
图8.8
不知道你是否还记得我们在探讨Response.Redirect方法的时候,我说的话,这里我们将Response.Redirect方法与Server.Transfer方法进行一个比较。
首先,二者都是将页面的控制权转到另外的页面进行处理,但是他们有如下的不同。
1. Redirect方法是在HTTP头中输出代码,让浏览器重新请求要转向的目标页面,而Server.Transfer方法则是在服务器上直接将当前的控制权转给目标页面,在客户端并不会意识到当前的页面已经发生了变更。
2. Redirect方法可以重定向到任何的URL,例如,可以使用代码Response.Redirect("http://www.baidu.com")转到百度搜索引擎,但是由于Transfer方法是在服务器上转移控制权,因此你只可以Transfer到本地服务器存在的页面。
3. 在使用Transfer方法时,会将当前页面的事务以及Request各个集合相应传递到目标页面,而Redirect方法仅仅是通知浏览器开启一个新的请求。你不妨做一个实验,在刚才的3.ASP页面中加入如下代码:Response.Write(Request.QueryString("a")),而后打开1.ASP页面时,附加一个QueryString变量,如,输入http://localhost/1.ASP?a=hanguofeng,此时页面会显示出“hanguofeng”字样,说明在3.ASP文件中也可以接收到这个QueryString变量。
Server.UrlEnCode和Server.HtmlEnCode两个方法是对某个字符串进行相关的转义操作,前者进行Url转义,后者进行HTML转义。
那么,什么是转义,转义又有什么意义呢。
先来说HTML转义,我们知道,在HTML代码中,如果需要在页面上显示尖括号,那么则需要在源代码中输入<或者>,在页面上显示空格,则需要输入 ,这是避免和HTML的标签混淆而规定的,例如某些时候我们需要对用户输入的内容在页面上显示时,则需要将其输入的内容进行转义,以防用户输入中包含了HTML代码而破坏页面原有的布局。
而URL转义则更为必要。有时,你使用Response.Redirect方法将页面重定向到另一个页面,而同时你传递的QueryString变量中又恰好含有中文,此时根据服务器配置的不同,某些服务器在处理这个中文时,则可能出现找不到页面的情况,因此需要在重定向之前使用Server.UrlEnCode来进行URL转义。这也是微软所建议的。
最后我们再来看Server.MapPath()方法,此方法用户获得服务器上指定文件在服务器上的物理路径,一般用于其他组件需要传递文件路径的场合。下面的代码获得当前目录下的test.txt文件在服务器上的物理路径。
Response.Write(Server.MapPath("test.txt"))
此页面的执行效果如图8.9所示。
图8.9
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛