分享
 
 
 

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

王朝asp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务。(IIS HELP翻译)

有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数。

一、Script.ScriptTimeout

在脚本运行超过一段时间之后,即作超时处理。

服务器一般的默认脚本运行时间是90秒。

你可以从“Internet信息服务”中“默认Web站点”的属性弹出框中看出,你也可以自己设定。

应该是“主目录”标签中的“配置”对话框中,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>

当然对应的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>

你会发现上面的代码都被执行了。

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

2.htmlencode.asp

<%Response.write ("这是没有采用 HTMLEncode 方法的测试。<br> 这里就另起一行,说明代码被执行。 ")%>

<hr>

<%Response.write Server.HtmlEncode("这是对 HTMLEncode 方法的测试。<br> 这里应该不会另起一行,也就_

是代码没有被执行了。 ")%>

这在许多网站,论坛都存在的一些BUG,不信你可以到各论坛试试:敲入 就是没有,急死你呢:)当然HtmlEncode只是其中的一个原因,最主要的还是UBB代码的转换。不过关于这点我也已经调试解决了。

调试地址参看 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>”等代码看看:<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,"空格我不知道,呵呵。哪个告诉我下:)"," ")

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>”等代码看看:<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路径的处理方法在:

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对象学习了下,感觉好象是每个都有用的,重要啊。

还有,需要说明的,如果您从本处转载,发现和本源件有差错,比如代码 、 < 、 >等等,根本就是被执行了的。都说明您的站点存在着这些问题。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有