ASP编程入门进阶(七):内置对象Server

Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务。(IIS HELP翻译)
有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数。
一,Script.ScriptTimeout
在脚本运行超过一段时间之后,即作超时处理。
服务器一般的默认脚本运行时间是90秒。
你可以从“Internet信息服务”中“默认Web站点”的属性弹出框中看出,你也可以自己设定。

呵呵,上面的可不是,900秒了。
应该是“主目录”标签中的“配置”对话框中,WINXP一样。

在理解脚本运行时间之前,先来看一个程序,主要功能就是进行计算网页执行时间的。
<script language=vbs>
startime=timer()
//以下为网页内容
for i= 1 to 5000 step 20
document.write("<hr width="&int(500+i)&">")
next
//结束时间
endtime=timer()
document.write ("页面执行时间:"&FormatNumber((endtime-startime)*1000,3)&"毫秒")
</script>

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

当然对应的ASP也就是看到许多站点都有的页面执行时间显示

1,time.asp





<%startime=timer()%>
<a href=#bot>到下面看执行的时间</a>
<%
for i= 1 to 5000
response.write("<hr width="&int(500+i)&">")
next
%>
当然中间还可以添加其它内容。<br>
<%endtime=timer()%>
<a name=bot></a>
<%=FormatNumber((endtime-startime)*1000,3)%>毫秒

那如果上面的程序变成for i= 1 to 5000000
呵呵,是不是机器快反应不过来的感觉,那这个就是脚本的执行时间了。
为了让程序能很好的执行,就该把脚本执行时间放长了。
怎么放长?把默认的改?呵呵,当然不是:)





<%Server.ScriptTimeout=110%>


时间的设定当然要是比默认90秒大的,现在的代码就是:指定服务器处理脚本在 110 秒后超时。
还有,脚本时间的确定要看自身的程序了,一般情况100秒左右也差不多了,即使能执行出来,可能观看网页的人早就把它叉叉了。

以上的ScriptTimeout就是Server对象唯一属性了

二,Server.HtmlEncode
HtmlEncode就是Server对象的其中一个方法了。它允许你对特定的字符串进行 HTML 编码,虽然 HTML 可以显示大部分你写入 ASP 文件中的文本,但是当你需要实际包含 HTML 标记中所使用的字符,就会遇到问题。这是因为,当浏览器读到这样的字符串时,会试图进行解释。

还是看一个程序,我想在页面显示“ ”这样的代码(附: 是空格的代码)
那么当我进行书写的时候你会发现,浏览器已经给我解释了的。
空格的代码是: <br>
你会发现上面的代码都被执行了。

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

所以,为了要让一些特殊代码能够显示,就运用该方法了。

2,htmlencode.asp





<%Response.write ("这是没有采用 HTMLEncode 方法的测试。<br> 这里就另起一行,说明代码被执行。 ")%>
<hr>
<%Response.write Server.HtmlEncode("这是对 HTMLEncode 方法的测试。<br> 这里应该不会另起一行,也就是代码没有被执行了。 ")%>


这在许多网站,论坛都存在的一些BUG,不信你可以到各论坛试试:敲入 就是没有,急死你呢:)当然HtmlEncode只是其中的一个原因,最主要的还是UBB代码的转换。不过关于这点我也已经调试解决了。
调试地址参看 http://www.cnbruce.com/juven/showart.asp
当然经典论坛不存在这问题,要不你也不会看到效果了。

三,Server.UrlEncode
正如 HtmlEncode 方法使客户可以将字符串翻译成可接受的 HTML 格式一样,Server 对象的 UrlEncode 方法则是根据 URL 规则对字符串进行正确编码,当字符串数据以 URL 的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。为此,如果你希望在发送字符串之前进行 URL 编码,可以使用 Server.URLEncode 方法。
为方便起见,我们先看为处理送交,然后处理接受的效果。

3,urlencode.asp





<%filepath=request.servervariables("script_name")%>
接受URL中的值(没有处理接受值,发现值被解释了): <%=request.querystring("cnbruce")%>
<form action="<%=filepath%>">
你可以输入“<hr&gt”等代码看看:<input type="text" size="20" name="cnbruce"><input type="submit">
</form>
接受URL中的值(进行了urlencode编码,不会执行): <%=Server.URLEncode(request.querystring("cnbruce"))%>

当然你会发现,虽然不执行了,但会出现“<”变成了“%3C”,“>”变成了“%3E”,那这就是因为没有在发送之前处理
不过,我们还可以通过Replace函数将这些特殊代码再逆转过来。

4,vurlencode.asp





<%
function tihuan(what)
tihuan=what
if not isnull(what) then
tihuan=replace(tihuan,"%3C","<")
tihuan=replace(tihuan,"%3D","=")
tihuan=replace(tihuan,"%3E",">")
tihuan=replace(tihuan,"%26","&")
tihuan=replace(tihuan,"%20"," ")
tihuan=replace(tihuan,"%3B",";")
tihuan=replace(tihuan,"%22",""")
tihuan=replace(tihuan,"%2B","+")
tihuan=replace(tihuan,"%2F","/")
end if
end function
%>

<%filepath=request.servervariables("script_name")%>

接受URL中的值(没有处理接受值,发现值被解释了): <%=request.querystring("cnbruce")%>

<form action="<%=filepath%>">
你可以输入“<hr&gt”等代码看看:<input type="text" size="20" name="cnbruce"><input type="submit">
</form>
接受URL中的值(进行了urlencode编码,不会执行): <%=tihuan(Server.URLEncode(request.querystring("cnbruce")))%>

呵呵,其实上面我是做的无用功啦,真正应该是在发送之前就该处理下的,不过对学习该方法的举例确是个好方法:)

四,Server.MapPath
相信看过我写的《DW2ASP系列》的朋友,都卡在这个上了。DW毕竟是入门的好东西,但要系统学ASP编程,对这个就该好好认识了解下。
MapPath方法,具体的就是将指定的相对或虚拟路径,映射到服务器上相应的物理目录上。
用法,也就是语法了,如下:





Server.MapPath(Path)


Path 指定要映射物理目录的相对或虚拟路径。若 Path 以一个正斜杠 (/) 或反斜杠 (\) 开始,则 MapPath 方法返回路径时将 Path 视为完整的虚拟路径。若 Path 不是以斜杠开始,则 MapPath 方法返回同本文件中已有的路径相对的路径。这里需要注意的是 MapPath 方法不检查返回的路径是否正确或在服务器上是否存在。
当然这可以和Request.ServerVariables连起来使用看看。

5,mappath.asp





Request.ServerVariables("APPL_PHYSICAL_PATH") : <%=Request.ServerVariables("APPL_PHYSICAL_PATH")%><p>
Request.ServerVariables("PATH_INFO") : <%=Request.ServerVariables("PATH_INFO")%><p>
Request.ServerVariables("SCRIPT_NAME") : <%=Request.ServerVariables("SCRIPT_NAME")%><p>
Request.ServerVariables("URL") : <%=Request.ServerVariables("URL")%><p>
Request.ServerVariables("PATH_TRANSLATED") : <%=Request.ServerVariables("PATH_TRANSLATED")%><hr>
上面都是通过ServerVariables提取得出的值,下面就来运用mapath把一个虚拟地址转变为实际的物理地址。<p>
Server.MapPath(Request.ServerVariables("URL")) :<%=Server.MapPath(Request.ServerVariables("URL"))%><p>
或者自己随便写个不存在的路径,同样能够执行<p>
Server.MapPath("cnbruce.asp") : <%=Server.MapPath("cnbruce.asp")%><p>
再来个“/”的<p>
Server.MapPath("/cnbruce.asp") : <%=Server.MapPath("/cnbruce.asp")%><br>
Server.MapPath("\cnbruce.asp") : <%=Server.MapPath("\cnbruce.asp")%><p>
你会发现物理地址转变到IIS默认根目录下面了。
这就是如6to23之类的站点mappath的问题所在。还是虚拟主机好,即使是根,也还是自己站点的默认存放节点根。


测试我的地址http://www.cnbruce.com/server.asp
注意测试的地址和根目录下的地址,对应的是同一文件夹(这就是虚拟主机),6to23之类是不会相同的。

有此些了解,对路径的处理应该要好多了,再返回我的站点,看看我对数据库的mappath路径的处理方法,相信又是一个理解层次了。
数据库的mappath路径的处理方法在:
http://www.cnbruce.com/blog/showlog.asp?cat_id=27&log_id=241

五,Server.CreatObject
Server.CreateObject 这个方法恐怕是 ASP 中最为实用,也是最强劲的功能了。它可用于创建已经注册到服务器上的 ActiveX 组件实例。这是一个非常重要的特性,因为通过使用 ActiveX 组件能够使你轻松地扩展 ActiveX 的能力,正是使用了 ActiveX 组件,你可以实现至关重要的功能,譬如数据库连接、文件访问、广告显示和其他 VBScript 不能提供或不能简单地依靠单独使用 ActiveX 所能完成的功能。也正是因为这些组件才使得 ASP 具有了强大的生命力。
呵呵,不过,在我们没有谈及连接数据库之前,这个先空着,“要得好,到临了”:)等我们接触到数据库连接的时候再说不迟。

恩,那今天就主要把Server对象学习了下,感觉好象是每个都有用的,重要啊。
还有,需要说明的,如果您从本处转载,发现和本源件有差错,比如代码  、 &lt 、 &gt等等,根本就是被执行了的。都说明您的站点存在着这些问题。

(0)

相关推荐

  • 如何用ASP建立Index Server查询对象并为其参数赋值?

    一个方法是利用Index Server query object和参数: <% Set Q= Sever.CreatObject("ixsso.Query") ' 创建查询对象. Set Util= Sever.CreatObject("ixsso.Util") Q.Query= Request("SearchString") ' 查询字段. Q.SortBy="rank[d] " ' 按照符合程度降序排列 Q.Colu

  • asp提示Server 对象 错误 ASP 0178 : 80070005

    尤其是刚安装的那些组件,需要手工设置下权限,因为为了安全考虑,权限限制的很低.大家可以参考下面的方法设置下. 错误提示: Server 对象 错误 'ASP 0178 : 80070005' Server.CreateObject 访问错误 ../asp.asp,行 123 检查权限时,对 Server.CreateObject 的调用失败.拒绝对此对象的访问. 错误如提示,存在以权限. 解决方法: 1. 调用"server.createObject("mssearch.applica

  • asp sqlserver 执行存储过程返回记录集报对象关闭时不允许操作

    如果要得到返回值,需要用Command的方法. 首先说明,返回值有两种.一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样:另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定. 这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?) 存储过程如下: 复制代码 代码如下: use pubs GO -- 建立存储过程 create procedure sp_PubsTest -- 定义三个参数变量,注意第三个,特别标记是用于输出

  • ASP基础入门第十篇(ASP内建对象Server)

    Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务的.有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数. 一.语法 Server.property|method 二.属性 ScriptTimeout 超时值,在脚本运行超过这一时间之后即作超时处理.如下代码指定服务器处理脚本在 100 秒后超时. < % Server.ScriptTim

  • Asp.net内置对象之Server对象(概述及应用)

    一.了解Server对象 Server对象提供对服务器上的方法和属性的访问以及进行HTML编码的功能.这些功能分别由Server对象相应的方法和属性完成. 二.Server对象的常用属性 (1).MachineName(2).ScriptTimeout:属性用于设置脚本程序执行的时间,适当地设置脚本程序的ScriptTimeout可以提高整个Web应用程序的效率.语法如下:Server.ScriptTimeout=time;(以s(秒)为单位) ScriptTimeout属性的最短时间默认为90

  • ASP编程入门进阶(十三):Ad & Content Rotator

    ASP的强大不仅仅局限于接受和显示的交互,更多的是运用ActiveX 组件进行更强大的Web应用. 那究竟ActiveX组件为何物?它又是如何运作的呢?其实ActiveX Server Components(ActiveX 服务器组件)是一个存在于 WEB 服务器上的文件,该文件包含执行某项或一组任务的代码,组件可以执行公用任务,这样就不必自己去创建执行这些任务的代码.很形象的一句话:运用组件直接采用别人经典的功能强大的程序.只不过这程序已被封装了的. 那具体ActiveX组件是如何产生.如何得

  • ASP编程入门进阶(十四):Browser & Linking

    一.Browser Capabilities组件 该组件最主要的作用是:提取识别客户端浏览器的版本信息. 其原理是这样的:当客户端浏览器向服务器发送页面请求时,同时会自动发送一个User Agent HTTP标题,而该标题是一个声明浏览器及其版本的 ASCII 字符串.而Browser Capabilities组件就将User Agent映射到在文件Browscap.ini中所注明的浏览器 , 并通过BrowserType对象的属性来识别客户浏览器. 若该对象在 browscap.ini 文件中

  • ASP编程入门进阶(一):安装配置服务器

    本人的水平有限,难免有疏忽遗漏之处,还望大家批评指正,在此先谢过. ASP编程入门进阶(一):安装配置服务器 鉴于ASP脚本语言是在服务器端IIS或PWS中解释和运行,并可动态生成普通的HTML网页,然后再传送到客户端供浏览的这一特点.我们要在本机上进行调试,那就要求我们的个人电脑具有服务器的功能. 不要看到"服务器"三个字就感到担心:我的机子配置这么底,性能这么差,是不是不能配啊.放心!配个服务器,就是多装个软件,况且就自己一个人用,根本没有必要多虑.那具体的装个什么软件呢?刚才我们

  • ASP编程入门进阶(四):内置对象Request

    系统学习ASP,就是先从ASP的几大内置对象开始的.一般称五大对象:Request.Response.Server.Session.Application今天先来看看Request对象. 当然一直还没有提到的就是,ASP到底是什么样?我看代码怎么知道是ASP代码?很简单,当看到"<%"和"%>"就表明是ASP,并且两者之间的就是ASP源码. 那为什么要学对象,对象的作用又是如何的?其实ASP所提供的这些可在脚本中使用的内建对象,使用户更容易收集通过浏览器

  • ASP编程入门进阶(二):认识表单

    说实话,无论是asp,php还是jsp进行网络编程的时候,都离不开和用户的交互.而人机对话的平台,基本上是靠相应的文本.列表框进行输入,然后通过按钮提交送至数据库的.所以学习网络编程就一定要了解这些输入平台相关的东西:表单(form)其基本格式如下:<form name="form1" action="xxx.asp" method="post"> <input type="text" name="

  • ASP编程入门进阶(三):接触脚本程序

    有了前面的html中关于form的强化知识,是不是在想,下面就可以开始ASP之旅呢?未必.一般系统学过ASP的编程人员都会切身体会到:在系统学习ASP的内置对象和内置组件之前,学会脚本语言永远是至关重要的.为什么这么说呢?为什么要学脚本语言呢?ASP和脚本语言又有什么关系呢? 首先说说ASP是贵为何物吧.ASP是Microsoft Active Server Pages的简称,它是一种服务器端脚本环境,可用来创建交互式 Web 页并建立强大的 Web 应用程序.可以表明ASP是一种基于服务器端的

  • ASP编程入门进阶(七):内置对象Server

    Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务.(IIS HELP翻译)有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数.一,Script.ScriptTimeout在脚本运行超过一段时间之后,即作超时处理.服务器一般的默认脚本运行时间是90秒.你可以从"Internet信息服务"中"默认Web站点"的

  • ASP编程入门进阶(九):内置对象Application

    在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共享数据:如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过Session变量共享信息,而Application类型的变量则可以实现站点多个用户之间在所有页面中共享信息.可以理解Session是局部变量,而Application则为全局变量. 在同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序.我们非但可以使用 Applic

  • ASP编程入门进阶(五):内置对象Response

    通过对Request对象的学习,可以了解到,Request对象是服务器端用来获取客户端的信息的.但作为服务器和客户端进行交互,是不是还缺少服务器端向客户端发送信息呢?对象Response正是担任此责任.负责将信息传递给用户的对象就是Response了,它可动态地响应客户端的请求,并将动态生成的响应结果返回给客户端浏览器.一,Response.write在Response中write方法是使用最频繁的一个了,write就是写:将指定的字符串写到当前的 HTTP 输出. 1,write.asp <%

  • ASP编程入门进阶(八):内置对象Session

    ASP对象中除了用于发送(Response).接收和处理数据(requeest).服务器访问(Server)的对象外,还有一些非常实用的标记Active Server应用程序(Application)和单个用户信息(Session)的对象. Session对象该对象在ASP使用中占相当大的比例.由于网页是一种无状态程序,无法得知用户浏览状态.在ASP中,通过Session对象来记录使用者私有的数据变量,以作为用户再次对服务器提出要求时做确认,用户在程序的Web页面之间跳转时,存在Session对

随机推荐