详细介绍ASP的六大对象(下)

开发 后端
本文介绍的是ASP的六大对象,分别是application,createobject,request,response,session,server。希望能够给你带来帮助,一起来看。

我们都知道,ASP中的六大内置对象,分别是application,createobject,request,response,session,server。接上篇>>

下面详细介绍这六大对象。

四、Response对象

Response对象用于向客户端浏览器发送数据,用户可以使用该对象将服务器的数据以HTML的格式发送到用户端的浏览器,它与Request组成了一对接收、发送数据的对象,这也是实现动态的基础。下面介绍它常用的属性和方法。

1、Buffer属性

该属性用于指定页面输出时是否要用到缓冲区,默认值为False。当它为True时,直到整个Active Server Page执行结束后才会将结果输出到浏览器上。如:

以下为引用的内容:

  1. <%Response.Buffer=True%> 
  2. <html> 
  3. <Head> 
  4. <title>Buffer示例</title> 
  5. </head> 
  6. <body> 
  7. <%  
  8. for i=1 to 500  
  9. response.write(i & "<br>")  
  10. next  
  11. %> 
  12. </body> 
  13. </html>  

 

这页执行时,整个主页的所有内容会同时显示在浏览器上,这个主页会存在缓存区中直到脚本执行结束。

2、Expires属性

该属性用于设置浏览器缓存页面的时间长度(单位为分),必须在服务器端刷新。通过如下设置:

 

  1. <%Response.Expires=0%> 

 

通过在ASP文件中加入这一行代码,要求每次请求是刷新页面,因为Response一收到页面就会过期。

3、Write方法

该方法把数据发送到客户端浏览器,如:

 

  1. <%Response.write "Hello,world!"%> 

 

4、Redirect方法

该方法使浏览器可以重新定位到另一个URL上,这样,当客户发出Web请求时,客户端的浏览器类型已经确定,客户被重新定位到相应的页面。如:

以下为引用的内容:

  1. <html> 
  2. <head> 
  3. <title>Redirect示例</title> 
  4. </head> 
  5. <body> 
  6. <form aciton="formjump.asp" method="post"> 
  7. <select name="wheretogo"> 
  8. <option selected value="fun">Fun</option> 
  9. <option value="news">News</option> 
  10. <option value="sample">Sample</option> 
  11. </select> 
  12. <input type=submit name="jump" value="Jump"> 
  13. </form> 
  14. </body> 
  15. </html>   
  16.   以上是提交的表单,下面是处理表单的文件formjump.asp:  
  17. <%response.buff=true%> 
  18. <html> 
  19. <head> 
  20. <title>Redirect示例</title> 
  21. </head> 
  22. <body> 
  23. <%  
  24. thisurl="http://www.tinyu.com/";  
  25. where=Request.form("wheretogo")  
  26. Select Case where  
  27. case "fun"  
  28. response.redirect thisurl & "/fun/default.asp"  
  29. case "news"  
  30. response.redirect thisurl & "/news/default.asp"  
  31. case "sample"  
  32. response.redirect thisurl & "/sample/default.asp"  
  33. End Select  
  34. %> 
  35. </body> 
  36. <html>  

 

这个例子当用户选择了以后,按"Jump"按钮提交表单,服务器接到申请后调用formjump.asp判断后定位到相应的URL。不过这里有一点要注意,HTTP标题已经写入到客户浏览器,任何HTTP标题的修改必须在写入页内容之前,遇到这种问题时,可以如下做:

在文件的开始<@ Language=..>后写:

Response.Buffer=True

在结尾定:

Response.Flush

这里Flush是Response的一个方法,它必须是Buffer属性设置为True时才能使用,否则会产生一个运行模式错误。另外一个Clear方法也是用于清除被缓存的页面,同样要Buffer属性设置为True时才能使用。

5、End方法

该方法用于告知Active Server当遇到该方法时停止处理ASP文件。如果Response对象的Buffer属性设置为True,这时End方法即把缓存中的内容发送到客户并清除冲区。所以要取消所有向客户的输出民,可以先清除缓冲区,然后利用End方法。如:

以下为引用的内容:

  1. <%  
  2. Response.buffer=true 
  3. On error resume next  
  4. Err.clear  
  5. if Err.number<>0 then  
  6. Response.Clear  
  7. Response.End  
  8. end if  
  9. %>  

 

#p#

五、Server 对象

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

1、语法

Server.property|method

2、属性

scriptTimeout:

scriptTimeout 属性指定脚本在结束前***可运行多长时间。 当处理服务器组件时,超时限制将不再生效。

语法 Server.scriptTimeout = NumSeconds

参数 NumSeconds

指定脚本在被服务器结束前***可运行的秒数。默认值为 90 秒。

3、注释

通过使用元数据库中的AspscriptTimeout属性可以为 Web 服务或 Web 服务器设置缺省的scriptTimeout值。scriptTimeout属性不能设置为小于在元数据库中指定的值。例如,如果NumSeconds设置为10,而元数据库设置包含了默认值90秒,则脚本在90秒后超时。但如果NumSeconds设置为100,则脚本在100秒后超时。

关于使用元数据库的详细信息,参阅 关于元数据库。

示例 以下示例中,如果服务器处理脚本超过 100 秒,将使之超时。

 

  1. <% Server.scriptTimeout = 100 %> 

 

以下示例获取 scriptTimeout 属性当前值,并将其存储在变量 TimeOut 中。

 

  1. <TimeOut = Server.scriptTimeout %> 

 

4、方法

(1)CreateObject

CreateObject 方法创建服务器组件的实例。如果该组件执行了 OnStartPage 和 OnEndPage 方法,则此时就会调用 OnStartPage 方法。有关服务器组件的详细信息,请参阅 可安装的 ASP 组件。

语法 Server.CreateObject( progID )

参数 progID 指定要创建的对象的类型。progID 的格式为 [Vendor.] component[.Version]。

注释 默认情况下,由 Server.CreateObject 方法创建的对象具有页作用域。这就是说,再当前 ASP 页处理完成之后,服务器将自动破坏这些对象。要创建有会话或应用程序作用域的对象,可以使用 <OBJECT> 标记并设置 session 或 APPLICATION 的 SCOPE 属性,也可以在对话及应用程序变量中存储该对象。

例如,在如下所示的脚本中,当 session 对象被破坏,即当对话超时时或 Abandon 方法被调用时,存储在会话变量中的对象也将被破坏。

 

  1. <% Set session("ad") = Server.CreateObject("MSWC.AdRotator")%> 

 

可以通过将变量设置为 Nothing 或新的值来破坏对象,如下所示。***个例子释放 ad 对象,第二个例子用字串代替 ad 。

 

  1. <% session ("ad") = Nothing %>  
  2. <% session ("ad") = " Other Valum " %> 

 

不能创建与内建对象同名的对象实例。 例如,下列脚本将返回错误。

 

  1. <% Set Response = Server.CreateObject("Response") %>  

 

示例 <% Set MyAd = Server.CreateObject("MSWC.AdRotator") %>

上面的例子创建一个名为 MyAd 的 MSWC.AdRotator 服务器组件,MSWC.AdRotator 组件可用于在 Web 页上的自动轮换广告。

关于服务器组件的详细信息, 请参阅 Creating Components for ASP.

HTMLEncode HTMLEncode方法对指定的字符串应用 HTML 编码。

语法 Server.HTMLEncode( string )

参数 string 指定要编码的字符串。

示例脚本 <%= Server.HTMLEncode("The paragraph tag: <P>") %>

输出 The paragraph tag: <P>

注意 以上输出将被 Web 浏览器显示为The paragraph tag: <P>如果查看一下源文件或以文本方式打开一个 Web 页,您就可以看到已编码的 HTML。

(2)MapPath

MapPath 方法将指定的相对或虚拟路径映射到服务器上相应的物理目录上。

语法

Server.MapPath( Path )

参数

Path

指定要映射物理目录的相对或虚拟路径。若 Path 以一个正斜杠 (/) 或反斜杠 (\) 开始,则 MapPath 方法返回路径时将 Path 视为完整的虚拟路径。若 Path 不是以斜杠开始,则 MapPath 方法返回同 .asp 文件中已有的路径相对的路径。

注释

MapPath 方法不支持相对路径语法 (.) 或 (..)。例如,下列相对路径 ../MyDir/MyFile.txt 返回一个错误。

MapPath 方法不检查返回的路径是否正确或在服务器上是否存在。

因为 MapPath 方法只映射路径而不管指定的目录是否存在,所以,您可以先用 MapPath 方法映射物理目录结构的路径,然后将其传递给在服务器上创建指定目录或文件的组件。

示例

对于下列示例,文件data.txt和包含下列脚本的test.asp文件都位于目录C:\Inetpub\Wwwroot\script下。C:\Inetpub\Wwwroot目录被设置为服务器的宿主目录。

下列示例使用服务器变量 PATH_INFO 映射当前文件的物理路径。脚本

<%= server.mappath(Request.ServerVariables("PATH_INFO"))%><BR>

输出

c:\inetpub\wwwroot\script\test.asp<BR>

由于下列示例中的路径参数不是以斜杠字符开始的,所以它们被相对映射到当前目录,此处是 C:\Inetpub\Wwwroot\script。脚本

 

  1. <%= server.mappath("data.txt")%><BR> 
  2. <%= server.mappath("script/data.txt")%><BR> 

 

输出

c:\inetpub\wwwroot\script\data.txt<BR>

c:\inetpub\wwwroot\script\script\data.txt<BR>

接下来的两个示例使用斜杠字符指定返回的路径应被视为在服务器的完整虚拟路径。脚本

 

  1. <%= server.mappath("/script/data.txt")%><BR> 
  2. <%= server.mappath("\script")%><BR> 

 

输出

c:\inetpub\script\data.txt<BR>

c:\inetpub\script<BR>

下列示例演示如何使用正斜杠 (/) 或反斜杠 (\) 返回宿主目录的物理路径。脚本

 

  1. <%= server.mappath("/")%><BR> 
  2. <%= server.mappath("\")%><BR> 

 

输出

c:\inetpub\wwwroot<BR>

c:\inetpub\wwwroot<BR>

(3)URLEncode

URLEncode 方法将 URL 编码规则,包括转义字符,应用到指定的字符串。

语法

Server.URLEncode( string )

参数

String 指定要编码的字符串。

示例

脚本 <%Response.Write(Server.URLEncode("http://www.tinyu.com";)) %>

输出 http%3A%2F%2Fwww%2Etinyu%2Ecom

#p#

六、session对象

Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。每一访问者都会单独获得一个Session。在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共享数据;如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过session变量共享信息,而Application类型的变更则可以实现站点多个用户之间在所有页面中共享信息。

1、sessionID属性

该属性返回当前会话的唯一标志,为每一个session分配不同的编号。

我曾在开发过程中就遇到对用户的控制问题。它要实现的功能就是,针对某个网站的一个模块,当一个会员登录后正在看此模块时,另一个人用同样的会员名登录,就不能浏览这个模块。也就是说一个会员名同时只能一个人浏览此模块。我通过用会员名(假设为UserID,唯一)和SessionID来实现了控制。

当会员登录时,给这个会员一个Session记录登录状态如:Session("Status")="Logged",同时把这个会员的Session.sessionID写入数据库。当他要浏览此模块时,先判断其是否登录,若已经登录再判断它的sessionID是否与数据库记录的相同,如果不同则不能访问。

这样,当另一个用户用相同的会员名登录时,那么数据库中记录的就是新的sessionID,前者访问此模块时就不能通过检查。这就实现了一个会员名同时只能一个人浏览某个模块。这个功能在一些收费网站有很有特别作用,它防止了一个会员名给多个人浏览的问题,为公司保障了利益。

2、TimeOut属性

该属性用来定义用户Session对象的时限。如果用户在规定的时间内没有刷新网页,则session对象就会终止。一般默认为20分钟。

3、Abandon方法

该方法是Session对象的唯一方法,可以清除Session对象,用来消除用户的Session对象并释放其所占的资源。如: <% session.Abandon %>

4、Session_OnStart和session_OnEnd事件

和Application一样,当对象的例程每一次启动时触发Session_OnStart事件,然后运行session_Onstart事件的处理过程。也就是说,当服务器接收到应用程序中的URL的HTTP请求时,触发此事件,并建立一个session对象。同理,这个事件也必须定在Global.asa文件中。

当调用Session.Abandon方法时或者在TimeOut的时间内没有刷新,这会触发Session_OnEnd事件,然后执行里面的脚本。Session变量与特定的用户相联系,针对某一个用户赋值的Session变量是和其他用户的session变量完全独立的,不会存在相互影响。

session应用一列:

与Application一样,一个被定义为Session类型的数组只能将整个数组作为一个对象,用户不能直接改变Session数组中某个元素的值。为了创建一个Session数组,需先定义一个普通的数组,并对它的每一个元素赋初值,***把它定义为一个session数组。如:

以下为引用的内容:

 

  1. <%  
  2. dim array()  
  3. array=array("李","明","男")  
  4. session("info")=array  
  5. Response.write session("info")(0) &"-" 
  6. Response.write session("info")(1) &"-" 
  7. Response.write session("info")(2) &"<br>" 
  8. %>  
  9. <hr>  
  10. <%  
  11. array(0)="天" 
  12. array(1)="宇" 
  13. array(2)="男" 
  14. session("info")=array  
  15. Response.write session("info")(0) & "-" 
  16. Response.write session("info")(1) & "-" 
  17. Response.write session("info")(2) & "<br>" 
  18. %> 

到这,ASP的六大内置对象,就大家介绍完了。希望对你有帮助。

【编辑推荐】

  1. 利用ASP和SQL Server构建网页防火墙
  2. 经验分享ASP编码八原则
  3. ASP新手之常用ASP内置函数大总结
  4. 介绍ASP程序所使用的几种脚本语言
  5. 解决ASP无法更新ACCESS数据库的问题
责任编辑:于铁 来源: 互联网
相关推荐

2011-07-06 17:25:20

2010-07-29 16:31:34

Flex开源项目

2019-01-29 10:22:08

Web漏洞攻击XSS

2022-01-23 10:44:39

零信任网络安全网络攻击

2023-08-31 22:12:51

低代码隐患技术

2013-08-23 10:42:03

Hadoop

2021-08-12 14:31:52

边缘计算云计算数据

2023-06-02 12:48:16

2010-07-30 13:15:17

Flex优势

2023-10-18 10:48:44

Python解释器

2016-07-06 11:16:47

2013-08-23 10:18:06

Hadoop

2011-03-16 10:44:19

2023-07-24 11:01:32

2023-05-11 11:36:56

云计算云供应商

2010-09-09 10:54:58

2012-05-21 23:59:58

Java

2011-04-29 10:05:57

主板硬盘

2011-07-25 09:43:38

目标设备管理工具日志文件

2022-10-11 23:53:08

组件架构开发
点赞
收藏

51CTO技术栈公众号