ASP入门(十三)-Server对象
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 标签,是将 “<”符号转义为”<“,将”>”符号转义为”>“。

而 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对象的更多相关文章
- ASP.NET中Server对象的几个方法
HtmlDecode 已重载. 对已被编码以消除无效 HTML 字符的字符串进行解码.HtmlEncode 已重载. 对要在浏览器中显示的字符串进行编码.MapPath 返回与 Web 服务器上的指定 ...
- 初识 Asp.Net内置对象之Server对象
Server对象 Server对象定义了一个于Web服务器相关联的类提供对服务器上的方法和属性的访问,用于访问服务器上的资源. Server对象的常用属性 属性 MarhineName 获取服务器 ...
- ASP.NET中的Request、Response、Server对象
Request对象 Response.Write(Request.ApplicationPath) //应用根路径 Request.AppRelativeCurrentExecutionFilePat ...
- x64位windows 2003 server中“Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败”问题
给朋友看一个老asp网站图片不能上传问题,试过网上各种办法都提示: Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败 最终问题出在x6 ...
- ASP.NET(二):Application、Session和Server对象
导读:在上篇博客中,总结了:Reques对象和Response对象的区别,以及IsPostBack属性的用法.其中说明Asp.net有6大对象,那么,这次就介绍剩下的3个对象,分别是:Applicat ...
- ASP入门(二十二)-连接数据库
ADO 简介 在 ASP 中访问数据库使用的 ADO 组件. ADO 是一项微软的技术. ADO 指 ActiveX 数据对象(ActiveX Data Objects). ADO 是微软的 Acti ...
- 18第一章 ASP.Net内建对象
第一章 ASP.Net内建对象 第一章 ASP.Net内建对象 ASP.Net为保持用户的数据和信息,内建了许多对象,包括Application.Response.Requ ...
- JS入门之ActiveXObject对象(转载)
JS入门之ActiveXObject对象 此对象提供自动化对象的接口. function ActiveXObject(ProgID : String [, location : String] ...
- Application对象、Session对象、Cookie对象、Server对象初步认识
Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...
随机推荐
- 没有可用的复制构造函数或复制构造函数声明为“explicit”
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\vector(810) : error C2558: str ...
- arcgis10.5.1 对齐要素
许可级别:BasicStandardAdvanced 摘要 标识地理处理工具用于标识搜索距离中输入要素与目标要素的不一致部分并使其与目标要素一致. 插图 用法 警告: 此工具用于修改输入数据.有关详细 ...
- 多线程UI
遇到过要在工作线程中去更新UI以让用户知道进度,而在多线程中直接调用UI控件操作是错误的做法. 最后解决方法是将操作UI的代码封装,通过Invoke / BeginInvoke 去委托调用. priv ...
- 天蝎第一季/全集Scorpion迅雷下载
英文译名 Scorpion (第1季) (2014-秋季播出)CBS.本季看点:<天蝎>双名蝎子故事描述一个高深莫测的计算机专家和一群同样具备天才头脑的国际计算机黑客共同组建全球防御网络, ...
- 发展受阻第一至四季/全集Arrested迅雷下载
发展受阻 第一至四季 Arrested Development 1-4 (2013)本季看点:<发展受阻>讲述了一个很有钱的Bluth家庭的故事,主要聚焦家族里的各种古怪事和相互算计带来的 ...
- Windows Power Shell简介
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能. 它引入了许多非常有用的新概念,从而进一步扩展了您在 W ...
- [转]有关Apache alias的一点问题
转自:http://www.thinkphp.cn/topic/11973.html Apache 的Alias 指令映射URL到文件系统的特定区域 一个简单的例子: Alias /mytest /w ...
- perf 高级命令简介
perf 高级命令简介 1.使用 tracepoint 当 perf 根据 tick 时间点进行采样后,人们便能够得到内核代码中的 hot spot. 使用ls命令来演示 sys_enter 这个tr ...
- Log4cplus使用指南
1. Log4cplus简介 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统,受Apache Software License保护,作者是Tad E. Smith ...
- tensorflow报错屏蔽的方法
之前是报这样的错: OpKernel ('op: "BestSplits" device_type: "CPU"') for unknown op: BestS ...