您现在的位置: 365建站网 > 365文章 > 服务器功能的Server对象

服务器功能的Server对象

文章来源:365jz.com     点击数:623    更新时间:2009-09-12 17:12   参与评论

Server对象用于处理服务器上的一些特殊任务,例如,创建组件实例、获取文件路径、执行ASP脚本文件等。

8.5.1 Server对象简介

Server对象是体现ASP强大功能的一个对象,前面我们所讲的一些对象基本都是针对获取、请求以及简单的存储信息而设计的,而这个对象却非常强大。

之所以说他强大,我的原因有二:

第一,可以通过Server对象创建服务器上所具有的组件的实例,从而扩展ASP的功能。

第二,Server对象可以执行服务器上的ASP文件,从而使得一些大型系统的架构变得简单。

8.5.2 Server对象的方法和属性

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所示。

圆角矩形标注: 返回1.ASP文件继续圆角矩形: 3.ASP文件

 

圆角矩形标注: 终止运行

图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代码中,如果需要在页面上显示尖括号,那么则需要在源代码中输入&lt;或者&gt;,在页面上显示空格,则需要输入&nbsp;,这是避免和HTML的标签混淆而规定的,例如某些时候我们需要对用户输入的内容在页面上显示时,则需要将其输入的内容进行转义,以防用户输入中包含了HTML代码而破坏页面原有的布局。

而URL转义则更为必要。有时,你使用Response.Redirect方法将页面重定向到另一个页面,而同时你传递的QueryString变量中又恰好含有中文,此时根据服务器配置的不同,某些服务器在处理这个中文时,则可能出现找不到页面的情况,因此需要在重定向之前使用Server.UrlEnCode来进行URL转义。这也是微软所建议的。

最后我们再来看Server.MapPath()方法,此方法用户获得服务器上指定文件在服务器上的物理路径,一般用于其他组件需要传递文件路径的场合。下面的代码获得当前目录下的test.txt文件在服务器上的物理路径。

Response.Write(Server.MapPath("test.txt"))

此页面的执行效果如图8.9所示。

图8.9

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (623人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号