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 秒。

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 字段),如下图:

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

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

运行效果如下:

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

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

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


Execute、Transfer 方法

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

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

File1.asp 代码如下:

...
<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!")
%>
...

File2.asp 代码如下:

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

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


Response.Redirect 和 Server.Transfer 方法比较

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

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

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

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


URLEncode 和 HTMLEncode 方法

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

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

<%@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>

在 Firefox 中运行效果如下:

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

而 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 中运行后,返回了服务器上的完整路径,如下:


示例代码下载

Server.rar

ASP入门(十三)-Server对象的更多相关文章

  1. ASP.NET中Server对象的几个方法

    HtmlDecode 已重载. 对已被编码以消除无效 HTML 字符的字符串进行解码.HtmlEncode 已重载. 对要在浏览器中显示的字符串进行编码.MapPath 返回与 Web 服务器上的指定 ...

  2. 初识 Asp.Net内置对象之Server对象

    Server对象 Server对象定义了一个于Web服务器相关联的类提供对服务器上的方法和属性的访问,用于访问服务器上的资源. Server对象的常用属性 属性   MarhineName 获取服务器 ...

  3. ASP.NET中的Request、Response、Server对象

    Request对象 Response.Write(Request.ApplicationPath) //应用根路径 Request.AppRelativeCurrentExecutionFilePat ...

  4. x64位windows 2003 server中“Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败”问题

    给朋友看一个老asp网站图片不能上传问题,试过网上各种办法都提示: Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败 最终问题出在x6 ...

  5. ASP.NET(二):Application、Session和Server对象

    导读:在上篇博客中,总结了:Reques对象和Response对象的区别,以及IsPostBack属性的用法.其中说明Asp.net有6大对象,那么,这次就介绍剩下的3个对象,分别是:Applicat ...

  6. ASP入门(二十二)-连接数据库

    ADO 简介 在 ASP 中访问数据库使用的 ADO 组件. ADO 是一项微软的技术. ADO 指 ActiveX 数据对象(ActiveX Data Objects). ADO 是微软的 Acti ...

  7. 18第一章 ASP.Net内建对象

    第一章        ASP.Net内建对象 第一章        ASP.Net内建对象 ASP.Net为保持用户的数据和信息,内建了许多对象,包括Application.Response.Requ ...

  8. JS入门之ActiveXObject对象(转载)

    JS入门之ActiveXObject对象   此对象提供自动化对象的接口.   function ActiveXObject(ProgID : String [, location : String] ...

  9. Application对象、Session对象、Cookie对象、Server对象初步认识

    Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...

随机推荐

  1. Access restriction: The method XXX from the type XXX is not accessible due to restriction XXX

    插件重构的时候 遇到这个问题 Access restriction: The method setDefaultAutoCommit(boolean) from the type BasicDataS ...

  2. ACE_Message_Queue和spawn实现(生产者/消费者)(V2.00)

    參考这里用到了线程管理.參考:http://blog.csdn.net/calmreason/article/details/36399697 以下的两个线程共享一个消息队列,一个用来放整数到队列,一 ...

  3. MySQL对数据表进行分组查询

    MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...

  4. lufylegend:图形变形2

    下面来详细讲解一下drawtriangles函数的使用方法.并且使用drawtriangles函数实现下面这种处理效果 因为这个方法是从AS3移植而来,所以它的使用方法和AS3基本一致,这里是AS3的 ...

  5. Android Socket通信详解

    一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客 ...

  6. <c:otherwise>

    <c:if>没有<c:else>可以用<c:choose>来取代结构:<c:choose> <c:when test=""&g ...

  7. Android项目更换开发环境时出现的 java.lang.VerifyError 异常解决办法

    from://http://blog.csdn.net/wudiwo/article/details/7548451 项目是从同事的电脑上直接拷贝过来的,项目里面的jar包是在项目跟下libs里面存放 ...

  8. linux内核netfilter模块分析之:HOOKs点的注册及调用

    转自;http://blog.csdn.net/suiyuan19840208/article/details/19684883 -1: 为什么要写这个东西?最近在找工作,之前netfilter 这一 ...

  9. Android之TextView部分颜色变动

    public class StringHandleExampleActivity extends Activity { /** Called when the activity is first cr ...

  10. 实用ExtJS教程100例-010:ExtJS Form异步加载和提交数据

    ExtJS Form 为我们提供了两个方法:load 和 submit,分别用来加载和提交数据,这两个方法都是异步的. 系列ExtJS教程持续更新中,点击查看>>最新ExtJS教程目录 F ...