ASP六大对象介绍

发布时间:2013-09-19 11:33:46来源:阅读(1439)

    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("
    "&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={SQL      
                        Server};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表单中某一元素的名称。当某一参数具有不止一个值(比如,当在



     
      以上是提交的表单,下面是处理表单的文件formjump.asp:
    <%response.buff=true%>


    Redirect示例


    <%
    thisurl="http://www.tinyu.com/";
    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
    %>

     
      这个例子当用户选择了以后,按"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 页处理完成之后,服务器将自动破坏这些对象。要创建有会话或应用程序作用域的对象,可以使用  标记并设置 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: 

    ") %> 
    输出    The paragraph tag: 

     
    注意 以上输出将被 Web 浏览器显示为The paragraph tag: 

    如果查看一下源文件或以文本方式打开一个 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.tinyu.com";)) %> 
    输出 http%3A%2F%2Fwww%2Etinyu%2Ecom
    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) &"
    "
    %>



    <%
    array(0)="天"
    array(1)="宇"
    array(2)="男"
    Session("info")=array
    Response.write Session("info")(0) & "-"
    Response.write Session("info")(1) & "-"
    Response.write Session("info")(2) & "
    "
    %> 

    关键字