asp入门

ASP入门(十三)-Server对象

时间:2024年03月22日 信息来源:本站原创 点击: 加入收藏 】【 字体:

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

Server 对象是体现 ASP 强大功能的一个对象,之前介绍的对象都是针对获取、请求以及简单存储信息而设计的,之所以说它强大,有两个原因第一可以通过 Server 对象创建服务器上所具有的组件的实例,从而扩展 ASP 功能;第二 Server 对象可以执行服务器上的 ASP 文件,从而使得一些大型系统的架构变得简单。

Server 的属性

Server 对象只有一个属性 ScriptTimeout,设置或返回当前页面执行的超时时间()。

设定完毕后,当当前页面在服务器上的执行时间超过这个时间,则会强制终止当前页面的运行。因此如果某个页面可能运行时间较长的话,就需要手动来增大这个值,来保证页面可以正常执行完毕。

下面的例子(Server_ScriptTimeout.asp)演示如何设置及取回 ScriptTimeout 值,主要代码如下:

<h3>如果不设定ScriptTimeout属性,IIS中默认值为 <%=Server.ScriptTimeout%> 秒</h3><h3>手动属性设置为200秒,现在值为 <%=Server.ScriptTimeout%> 秒</h3>

显示结果如下,IIS默认的 ScriptTimeout 属性值为 90 秒。

ASP入门(十三)-Server对象

Server 的方法

方法描述
CreateObject(progID)创建由 progID 标识的对象的一个实例
Execute(path)停止当前页面的执行,把控制转到 path 中指定的网页。在该页面执行完毕后,控制传递回原先的页面,并继续执行 Execute 后面的语句。
GetLastError()返回 ASPError 对象,描述发生错误的原因
HTMLEncode(string)对字符串进行 HTML 转义
MapPath(path)返回在 Path 中指定的文件或资源的完整物理路径和文件名
Transfer(path)停止当前页面的执行,把控制转到 path 中指定的页面
URLEncode(string)对字符串进行 URL 转义

CreateObject 方法,用于创建服务器上的组件的实例。最常用的就是创建数据库操作组件的ADO的实例,我们手头刚刚创建了一个 Access 数据库 ServerInfo.accdb,这个数据库有一个名为 ServerMethods 的表,表里面记录了 Server 对象的方法(Method 字段)及描述信息(Description 字段),如下图:

ASP入门(十三)-Server对象

我们的例子(Server_CreateObject.asp)主要是读取出表的全部内容,部分代码如下:

ASP入门(十三)-Server对象

<%Dim oConn, sConnString, sDBPath, oRs, sql'数据库文件名sDBPath = "ServerInfo.accdb"'数据连接字符串sConnString = "Provider=Microsoft.ACE.OLEDB.15.0;Data Source=" & Server.MapPath(sDBPath)'创建 Connection 对象的实例 oConnSet oConn = Server.CreateObject("ADODB.Connection")'调用 oConn 的 Open 方法来打开连接oConn.Open sConnString'SQL语句,查询所有记录sql = "SELECT * FROM ServerMethods"'建立 ADODB.RecordSet 对象实例 oRsSet oRs = Server.CreateObject("ADODB.RecordSet")'通过SQL语句获得记录集oRs.Open sql, oConnDo While Not oRs.EOF
  Response.Write("<tr>")
  Response.Write("<td>" & oRs("Method") & "</td>")
  Response.write("<td>" & oRs("Description") & "</td>")
  Response.Write("</tr>")
  oRs.MoveNextLoopoRs.CloseSet oRs = NothingoConn.CloseSet oConn = Nothing%>

ASP入门(十三)-Server对象

运行效果如下:

ASP入门(十三)-Server对象

在这段代码中我们用到了两次 CreateObject,如下代码:

ASP入门(十三)-Server对象

...
'创建 Connection 对象的实例 oCon
Set oConn = Server.CreateObject("ADODB.Connection")
...
'建立 ADODB.RecordSet 对象实例 oRs
Set oRs = Server.CreateObject("ADODB.RecordSet")
...

ASP入门(十三)-Server对象

在后面的介绍会详细介绍数据库方面的知识。


Execute、Transfer 方法

两者的作用都是停止当前页面的运行,并传递到另外一个一面,其不同在于,Execute 方法是在另外一个页面执行完毕后回到现在的页面继续向下执行,而 Transfer 方法是在另外一个页面执行完毕后即停止运行了。

我们下面的例子将说明 Execute 和 Transfer 方法的区别,我们 建立两个 ASP 文件(File1.asp 和 File2.asp)

File1.asp 代码如下:

ASP入门(十三)-Server对象

...<h3>Server.Execute演示</h3><%Response.Write("I am in File 1!<br>")
Server.Execute("File2.asp")
Response.Write("I am back in File 1!")%><hr><h3>Server.Transfer演示</h3><%Response.Write("I am in File 1!<br>")
Server.Transfer("File2.asp")
Response.Write("I am back in File 1!")%>...

ASP入门(十三)-Server对象

File2.asp 代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><%Response.Write("I am in File 2!<br>")%>

执行 File1.asp 后,效果如下:

ASP入门(十三)-Server对象


Response.Redirect 和 Server.Transfer 方法比较

首先两者都是将页面的控制权转移到另外的页面进行处理。但是还是有不同的地方。

1、Redirect 方法是在HTTP头中输出代码,让浏览器重新请求要转向的目标页面,而 Server.Transfer 方法则是在服务器上直接将当前的控制权转给目标页面,在客户端并不会意识到当前的页面已经发生了变化。

2、Redirect 方法可以重定向到任何的 URL,而 Transfer 方法是在服务器上转移控制权,因此只可以 Transfer 到本地服务器存在的页面。

3、在使用 Transfer 方法时,会将当前页面的事务以及 Request 各个集合相应传递到目标页面,而 Redirect 方法仅仅是通知浏览器开启一个新的请求。


URLEncode 和 HTMLEncode 方法

两者都是对某个字符串进行转义的操作。

下面的代码(ServerEncode.asp)展示了两个转义方法的区别和效果:


ASP入门(十三)-Server对象

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><!doctype html><html><head><meta charset="utf-8"><title>HTMLEncode 和 URLEncode 的应用</title></head><body><p><%Response.write(Server.HTMLEncode("The image tag: <img>"))%></p><p><%Response.Write(Server.URLEncode("http://www.baidu.com"))%></p></body></html>

ASP入门(十三)-Server对象

在 Firefox 中运行效果如下:
ASP入门(十三)-Server对象

在 Firefox 中“查看页面源代码”中我们发现 “<img>” 之所以能正常显示,而不被识别成 HTML 标签,是将 “<”符号转义为”&lt;“,将”>”符号转义为”&gt;“。

ASP入门(十三)-Server对象

而 URLEncode 则是把空格转化为+号,非字母数字符号转义为十六进制表示。


MapPath 方法

在上面的 CreateObject 方法讲解中,有一条语句用到了 MapPath 方法,代码如下:

'数据库文件名
sDBPath = "ServerInfo.accdb"
'数据连接字符串
sConnString = "Provider=Microsoft.ACE.OLEDB.15.0;Data Source=" & Server.MapPath(sDBPath)

此方法用户获得服务器上指定文件在服务器上的物理路径。例如上面提到的 ServerInfo.accdb 的路径是啥?

我们通过实例(ServerMapPath.asp)展示,主要代码如下:

<%=Server.MapPath("ServerInfo.accdb")%>

在 Firefox 中运行后,返回了服务器上的完整路径,如下:

ASP入门(十三)-Server对象


示例代码下载

Server.rar


上一篇:ASP入门(十二)-Application对象
下一篇:ASP入门(十四)-FileSystemObject 对象
(作者:佚名 编辑:admin)

我有话说

新文章

荐文章

门文章