当前位置:首页 > 编程学习 > ASP六大对象介绍

ASP六大对象介绍

编程学习2008-05-0243700

Application对象


Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。

Application的属性:  

方法如下:

Application对象没有内置的属性,但是我们可以自行创建其属性。

<% Application("属性名")=值 %>

    其实大部分Application变量都 存放在Contents集合中,当你创建一个新的Application变量时,其实就是在Contents集合中添加了一项。下面两个脚本是等效的:  

<% Application("greeting")="hello!" %>

或  

<%  Application.contents("greeting")="hello!" %>

由于Application变量存在集合里,所以如果想要全部显示,其方法我们已经多次使用,例如For  Each循环。  

<% 
    For Each item IN Application.Contents  
        Response.write("<br>"&item&Application.Contents(item)) 
    next  
%>

Application的方法:

Application的方法只有两个方法:一个是Lock,另一个是Unlock。其中Lock方法用于保证同一时刻只能一个用户对Application操作。Unlock则用于取消Lock方法的限制。如:  

<% 
    Application.Lock  
    Application("visitor_num")=Application("visitor_num")+1  
    Application.Unlock 
%>

Application的事件:  

1、Application_OnStart()

当事件应用程序启动时触发。

2、Application_OnEnd()  

此事件应用程序结束时触发。

这两个事件过程都是必须定义在Global.asp文件中,一般把连接数据的函数定义在这两个事件,然后放在Global.asp中。例如:  

Sub Application_OnStart  
    Application("tt18_ConnectionString") = "driver={SQLServer};server=jeff;uid=sa;pwd=;database=test"
End Sub

    一个数组能够被定义成Application对象,不过这个数组只能作为一个对象保存,而不能用Application(0)取出其值。可以定义一个临时数组实现这种功能。

如:  

<% 
    dim Array()  
    Array=Application("array") 
    for i = 0 to ubound(array) 
        Response.write  Array(i) 
    next i 
%>

    同样要修改这个Application对象也可以定义一个临时数组,把Application对象赋给数组,然后修改这个数组的元素,最后把数组赋回Application对象。

如:  

<% 
    dim Array()  
    Array=Application("array") 
    Array(0)="jeff"
    Array(1)="zhu"
    Application.lock 
    Application("array")=Array 
    Application.unlock  
%>


ObjectContext对象


该对象用于控制Active Server  Pages的事务处理。事务处理由Microsoft Transaction Server (MTS)管理。


事件  

ObjectContext.OnTransactionAbort

由放弃的事务处理事件激发,在脚本完成处理后发生。


ObjectContext.OnTransactionCommit

由成功的事务处理事件激发,在脚本完成处理后发生。


方法

ObjectContext.SetAbort


显式的放弃一次事务处理。  

ObjectContext.SetComplete


覆盖前面任何调用ObjectContext.SetAbort方法的调用。


Request对象  


Request对象用于接受所有从浏览器发往你的服务器的请求内的所有信息。

集合

Request.ClientCertificate(key[SubField])


所有客户证书的信息的集合。对于Key,该集合具有如下的关键字:


Subject  

证书的主题。包含所有关于证书收据的信息。能和所有的子域后缀一起使用。


Issuer  

证书的发行人。包含所有关于证书验证的信息。除了CN外,能和所有的子域后缀一起使用。


VadidFrom  

证书发行的日期。使用VBScript格式。


ValidUntil

该证书不在有效的时间。  


SerialNumber

包含该证书的序列号。


Certificate  

包含整个证书内容的二进制流,使用ASN.1格式。  


对于SubField,Subject和Issuer关键字可以具有如下的子域后缀:(比如:SubjectOU或IssuerL)  


C

起源国家。


O

公司或组织名称。


OU

组织单元。


CN  

用户的常规名称。


L

局部。


S

州(或省)。


T

个人或公司的标题。  


GN

给定名称。


I

初始。  



当文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通过使用#INCLUDE导向包含在你的Active  Server Page里时,下面两个标志可以使用:


ceCertPresent

指明客户证书是否存在,其值为TRUE或FALSE。  


ceUnrecongnizedIssure

指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE。  

Request.Cookies(Cookie[(key).Attribute])

Cookie的集合。允许获得浏览器的Cookie。Cookie指明返回那一个Cookie。Key用于从Cookie字典中返回具有某一关键字的Cookie值。对于Attribute,你能使用属性HasKeys来确定某一Cookie是否具有子关键字。HasKeys的值为TRUE或FALSE。  

Request.Form(Parameter)[(Index).Count]

填写在HTML的表单中所有的数据的集合。Parameter是在HTML表单中某一元素的名称。当某一参数具有不止一个值(比如,当在<SELECT>中使用MULTIPLE属性时)时,使用Index。当某一参数具有多值时,Count指明多值个数。  

Request.QueryString(Varible)[(Index).Count]


查询字符串的所有值的集合。Varible是在查询字符串某一变量的名称。当某一变量具有多于一个值时,使用Index。当某一参数具有多值时,Count指明值的个数。

Request.ServerVaribles(Server Environment  Variable)

环境变量的集合。允许读取HTTP头。你可以通过使用HTTP_前缀来读取任何头信息。比如,HTTP_USER_AGENT接受客户代理HTTP头(浏览器类型)。除此外,你可以使用下表所示的变量获得任何环境信息。  


ALL_HTTP

客户端发送的所有HTTP标头,他的结果都有前缀HTTP_。


ALL_RAW  

客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_


APPL_MD_PATH

应用程序的元数据库路径。  


APPL_PHYSICAL_PATH

与应用程序元数据库路径相应的物理路径。


AUTH_PASSWORD  

当使用基本验证模式时,客户在密码对话框中输入的密码。


AUTH_TYPE  

这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。


AUTH_USER

代验证的用户名。  


CERT_COOKIE

唯一的客户证书ID号。


CERT_FLAG  

客户证书标志,如有客户端证书,则bit0为0。如果客户端证书验证无效,bit1被设置为1。


CERT_ISSUER  

用户证书中的发行者字段。


CERT_KEYSIZE

安全套接字层连接关键字的位数,如128。  


CERT_SECRETKEYSIZE

服务器验证私人关键字的位数。如1024。


CERT_SERIALNUMBER  

客户证书的序列号字段。


CERT_SERVER_ISSUER

服务器证书的发行者字段  


CERT_SERVER_SUBJECT

服务器证书的主题字段。


CERT_SUBJECT

客户端证书的主题字段。  


CONTENT_LENGTH

客户端发出内容的长度。


CONTENT_TYPE

客户发送的form内容或HTTP  PUT的数据类型。


GATEWAY_INTERFACE

服务器使用的网关界面。


HTTPS  

如果请求穿过安全通道(SSL),则返回ON。如果请求来自非安全通道,则返回OFF。


HTTPS_KEYSIZE  

安全套接字层连接关键字的位数,如128。


HTTPS_SECRETKEYSIZE

服务器验证私人关键字的位数。如1024。  


HTTPS_SERVER_ISSUER

服务器证书的发行者字段。


HTTPS_SERVER_SUBJECT  

服务器证书的主题字段。


INSTANCE_ID

IIS实例的ID号。


INSTANCE_META_PATH  

响应请求的IIS实例的元数据库路径。


LOCAL_ADDR

返回接受请求的服务器地址。


LOGON_USER  

用户登录Windows NT的帐号


PATH_INFO

客户端提供的路径信息。


PATH_TRANSLATED  

通过由虚拟至物理的映射后得到的路径。


QUERY_STRING

查询字符串内容。


REMOTE_ADDR  

发出请求的远程主机的IP地址。


REMOTE_HOST

发出请求的远程主机名称。


REQUEST_METHOD  

提出请求的方法。比如GET、HEAD、POST等等。


SCRIPT_NAME

执行脚本的名称。

INSTANCE_ID

IIS实例的ID号。


INSTANCE_META_PATH

响应请求的IIS实例的元数据库路径。  


LOCAL_ADDR

返回接受请求的服务器地址。


LOGON_USER

用户登录Windows NT的帐号  


PATH_INFO

客户端提供的路径信息。


PATH_TRANSLATED

通过由虚拟至物理的映射后得到的路径。  


QUERY_STRING

查询字符串内容。


REMOTE_ADDR

发出请求的远程主机的IP地址。  


REMOTE_HOST

发出请求的远程主机名称。


REQUEST_METHOD  

提出请求的方法。比如GET、HEAD、POST等等。


SCRIPT_NAME

执行脚本的名称。  


SERVER_NAME

服务器的主机名、DNS地址或IP地址。


SERVER_PORT

接受请求的服务器端口号。  


SERVER_PORT_SECURE

如果接受请求的服务器端口为安全端口时,则为1,否则为0。  


SERVER_PROTOCOL

服务器使用的协议的名称和版本。


SERVER_SOFTWARE  

应答请求并运行网关的服务器软件的名称和版本。


URL

提供URL的基本部分。


方法

Request.BinaryRead(Count)


接收一个HTML表单的未经过处理的内容。当调用此方法时,Count指明要接收多少字节。在调用此方法后,Count指明实际上接收到多少个字节。  


属性

Request.TotalBytes

查询体的长度,以字节为单位


Response对象


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


1、Buffer属性  

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

<%Response.Buffer=True%> 
<html> 
<Head>  
<title>Buffer示例</title> 
</head> 
<body> 
<% 
for  i=1 to 500 
    response.write(i & "<br>") 
next 
%>  
</body> 
</html>

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


2、Expires属性  

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

<%Response.Expires=0%>  

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


3、Write方法

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

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


4、Redirect方法

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

<html> 
<head>  
<title>Redirect示例</title> 
</head> 
<body> 
<form  aciton="formjump.asp" method="post"> 
<select name="wheretogo">  
<option selected value="fun">Fun</option> 
<option  value="news">News</option> 
<option  value="sample">Sample</option> 
</select> 
<input type=submit  name="jump" value="Jump"> 
</form> 
</body> 
</html>

以上是提交的表单,下面是处理表单的文件formjump.asp:

<%response.buff=true%> 
<html>  
<head> 
<title>Redirect示例</title> 
</head> 
<body>  
<% 
thisurl="www.apull.net"; 
where=Request.form("wheretogo")  
Select Case where 
case "fun" 
response.redirect thisurl &  "/fun/default.asp" 
case "news" 
response.redirect thisurl &  "/news/default.asp" 
case "sample" 
response.redirect thisurl &  "/sample/default.asp" 
End Select 
%> 
</body> 
<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方法。如:  

<% 
    Response.buffer=true 
    On error  resume next 
    Err.clear 
    if Err.number<>0 then 
        Response.Clear  
        Response.End
    end if 
%>


Server 对象:


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

语法  

Server.property|method


属性

ScriptTimeout:  

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


语法  Server.ScriptTimeout = NumSeconds


参数 NumSeconds  

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


注释  

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


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


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

<% Server.ScriptTimeout = 100 %>

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

<% TimeOut = Server.ScriptTimeout %>

方法  


CreateObject

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


语法  Server.CreateObject( progID )


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


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

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

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

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

<%  Session ("ad") = Nothing %> 
<% Session ("ad") = " Other Valum " %>

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

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



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

输出  

c:\inetpub\wwwroot\script\test.asp  


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

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

输出  

c:\inetpub\wwwroot\script\data.txt  

c:\inetpub\wwwroot\script\script\data.txt


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

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

输出  

c:\inetpub\script\data.txt

c:\inetpub\script


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

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

输出

c:\inetpub\wwwroot

c:\inetpub\wwwroot


URLEncode

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


语法

Server.URLEncode( string )

参数  

String 指定要编码的字符串。

示例 脚本

<%Response.Write(Server.URLEncode("http://www.apull.net";)) %>

输出  http%3A%2F%2Fwww%2Eapull%2Enet


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数组。如:  

<% 
    dim array()  
    array=array("李","明","男") 
    Session("info")=array 
    Response.write  Session("info")(0) &"-"
    Response.write Session("info")(1) &"-"
    Response.write Session("info")(2) &"<br>"
%> 
<hr>  
<% 
    array(0)="天"
    array(1)="宇"
    array(2)="男"
    Session("info")=array 
    Response.write Session("info")(0) & "-"
    Response.write Session("info")(1) & "-"
    Response.write  Session("info")(2) & "<br>"
%>


扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://www.apull.net/html/20080502222.html

分享给朋友:

相关文章

[转] 深入探讨C++中的引用

[转] 深入探讨C++中的引用

  摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。  关键词:引用,const,多态,指针  引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。  引用简介  引用就是某一变量(目标)的一个别名,...

MD5加密VB版

MD5加密VB版

'MD5加密VB版 '调用方法:str=MD5("Apull",32),就能得到"Apull"的32位的MD5。 Private m_lOnBits(30) Private m_l2Power(30) Private Const BITS_TO_A_BYTE = 8 Private Const BYTES_TO_A_WORD = 4 Private Const BITS_TO_A_WORD = 32 Private Fu...

代码迷惑技术如何保护Java免遭逆向工程

代码迷惑技术如何保护Java免遭逆向工程

很少有问题比程序员遇到不访问无法利用的源代码就无法解决的漏洞更令人沮丧的了。你是否在通过一个在线开源库修补代码,或正在调用常用操作系统例行程序;你可能每周都要花时间处理不是由你编写,因而也无法访问其源代码的代码。因为Java字节码包含许多和原始代码相同的信息,所以很容易对Java类文件执行逆向工程。另外,Java程度以其“一旦编写,随处运行”特性而闻名。虽然并非Java语言的专利,但代码反编译从未在Java开发者之中得到如此公开或普遍地利用。反编译的对...

致面向对象技术初学者的一封公开信

致面向对象技术初学者的一封公开信

 致面向对象技术初学者的一封公开信 Alistair Cockburn 著(1996 年2 月),袁峰 译介绍 首先我要解释一下为什么会写这封公开信。这似乎已经成了一种习惯,但这个步骤还是需要的。过去6 年中, 我曾经无数次地在饭店、酒吧、旅店大厅等各种地方以同一种方式度过愉快而漫长的夜晚:和同样追求真理、光明和智慧的伙伴一起探讨面向对象的真谛。现在,我已经可以回答很多当年我遇到的问题。这些同样的问题也在困扰着我的一位新同事,在一家饭店里,我花了整整一个晚上和他讨...