ASP的六个对象

来源:互联网 发布:cf枪变色软件 编辑:程序博客网 时间:2024/04/30 20:06
    什么是对象? 对象就是在面向对象编程中,由当作完整实体的操作和数据组成的变量。对象是基于特定模型的,在对象中客户使用对象的服务通过由一组方法或相关函数的接口访问对象的数据,然后客户端可以调用这些方法执行某中操作
    ActiveX 组件是建立 Web 应用程序的关键,组件提供了在脚本中执行任务的对象。ActiveX 组件是一个文件,该文件包含执行某项或一组任务的代码,由于组件可以执行公用任务,这样程序员们就不必自己去创建执行这些任务的代码。可以利用组件作为脚本和基于 Web 应用程序的基本构造块。
    要使用组件提供的对象,请创建对象的实例并将这个新的实例分配变量名。使用 ASP 的 Server.CreateObject 方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名。
    例如:  Set db=Server.CreateObject("ADODB.Connection")
    这里的变量 db 就是 ASP 程序创建的访问数据库的对象实例。 
 
 
 
一.Request对象:
    可以使用 Request 对象访问任何基于 HTTP 请求传递的所有信息,包括从 HTML 表格用 POST 方法或 GET 方法传递的参数、cookie 和用户认证。Request 对象使您能够访问客户端发送给服务器的二进制数据。
    Request 的语法 : Request[. 集合 | 属性 | 方法 ]( 变量 )
    1、Form
        Form 集合通过使用 POST 方法的表格检索邮送到 HTTP 请求正文中的表格元素的值。
        Form 集合按请求正文中参数的名称来索引。Request.Form(element) 的值是请求正文中所有 element 值的数组。通过调用 Request.Form(element).Count 来确定参数中值的个数。如果参数未关联多个值,则计数为 1。如果找不到参数,计数为 0。要引用有多个值的表格元素中的单个值,必须指定 index 值。index 参数可以是从 1 到 Request.Form(element).Count 中的任意数字。如果引用多个表格参数中的一个,而未指定 index 值,返回的数据将是以逗号分隔的字符串。
        语法 Request.Form(element)[(index)|.Count]
        例如:(1)Form中某一个元素
                    Request.Form("txtName")
                  (2)Form中某一个元素数组
                    for i=0 to Request.Form("chkbox").Count -1
                            Request.Form("chkbox").(i)
                    next
 
    2、QueryString
        QueryString 集合检索 HTTP 查询字符串中变量的值 ,HTTP 查询字符串由问号 (?) 后的值指定。如:   
        < A HREF= "example.asp?string=this is a sample">string sample< /A> 生成值为 "this is a sample" 的变量名字符串。QueryString 集合可以让您以名称检索 QUERY_STRING 变量
        语法: Request.QueryString(variable)[(index)|.Count]
        例如: (1)QueryString中某一个元素
                     Request.QueryString("name")
                    (2)Form中某一个元素数组
                    for i=0 to Request.QueryString("chkbox").Count -1
                            Request.QueryString("chkbox").(i)
                    next
 
    3、Cookies
        Cookie 其实是一个标签,当你访问一个需要唯一标识你的站址的 WEB 站点时,它会在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。每个 WEB 站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每个站点的 Cookie 与其他所有站点的 Cookie 存在同一文件夹中的不同文件内。一个 Cookie 就是一个唯一标识客户的标记,Cookie 可以包含在一个对话期或几个对话期之间某个 WEB 站点的所有页面共享的信息,使用 Cookie 还可以在页面之间交换信息。Request 提供的 Cookies 集合允许用户检索在 HTTP 请求中发送的 cookie 的值。这项功能经常被使用在要求认证客户密码以及电子公告板、WEB 聊天室等 ASP 程序中。    
        如果访问 cookie 字典时未指定 key,则所有关键字都会作为单个查询字符串返回。
        发送了两个同名的 cookie,那么 Request.Cookie 将返回其中路径结构较深的一个。
        语法:Request.Cookies(cookie)[(key)|.attribute]     
                   key 可选参数,用于从 cookie 字典中检索子关键字的值。
                   attribe 指定 cookie 自身的有关信息。如:HasKeys 只读,指定 cookie 是否包含关键字。
        例如:Request.Cookies("myCookie").HasKeys
                   myCookie 是一个 cookie 字典,则返回为 TRUE。否则,为 FALSE。
        例如:response.cookies("nick")
  
    4、 ServerVariables
        浏览网页的时候使用的传输协议是 HTTP,在 HTTP 的标题文件中会记录一些客户端的信息,如 : 客户的 IP 地址等等,有时服务器端需要根据不同的客户端信息做出不同的反映,这时候就需要用 ServerVariables 集合获取所需信息。
        语法
        Request.ServerVariables ( 服务器环境变量)
        常用服务器环境变量:         ALL_HTTP 客户端发送的所有 HTTP 标题文件。 CONTENT_LENGTH 客户端发出内容的长度。 CONTENT_TYPE 内容的数据类型。如:“text/html”。同附加信息 的查询一起使用,如 HTTP 查询 GET、POST 和 PUT。 LOCAL_ADDR 返回接受请求的服务器地址。如果在绑定多 个 IP 地址的多宿主机器上查找请求所使用的地址 时,这条变量非常重要。 LOGON_USER 用户登录 Windows NT 的帐号。 QUERY_STRING 查询 HTTP 请求中问号(?)后的信息。 REMOTE_ADDR 发出请求的远程主机 (client) 的 IP 地址。 REMOTE_HOST 发出请求的主机 (client) 名称。如果服务器无此 信息,它将设置为空的 MOTE_ADDR 变量。 REQUEST_METHOD 该方法用于提出请求。相当于用于 HTTP 的 GET、HEAD、POST等等。 SERVER_NAME 出现在自引用 URL 中的服务器主机名、DNS 化名 或 IP 地址。 SERVER_PORT 发送请求的端口号。
        例如:For Each name In Request.ServerVariables
                        Request.ServerVariables(name)
                  Next
 
 
二.Response对象:
    Response 对象是用来控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个 URL 或设置 cookie 的值。
    语法:Response.collection|property|method
    1、Buffer 属性
    Buffer 属性指示是否缓冲页输出。当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了 Flush 或 End 方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置 Buffer 属性。因此应该在 .asp 文件的第一行调用 Response.Buffer。
    例如:response.buffer=true
 
    2、Charset 属性
    Charset 属性将字符集名称附加到 Response 对象中 content-type 标题的后面。对于不包含 Response.Charset 属性的 ASP 页,content-type 标题将为 :content-type:text/html。
    我们可以在 .asp 文件中指定 content-type 标题,如: < % Response.Charset="gb2312") %>
    将产生以下结果:content-type:text/html; charset=gb2312
    例如:<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> 
 
    3、ContentType属性
    ContentType 属性指定服务器响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/HTML。
    例如:<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> 
 
    4、Expires属性
    Expires 属性指定了在浏览器上缓冲存储的页距过期还有多少时间。如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。如果设置 response.expires=0,则可使缓存的页面立即过期。这是一个较实用的属性,当客户通过 ASP 的登陆页面进入 WEB 站点后,应该利用该属性使登陆页面立即过期,以确保安全。
    例如:Response.Buffer = True
              Response.Expires = -1000
              Server.ScriptTimeOut = 900
 
    5、ExpiresAbsolute属性
    与 Expires 属性不同 ExpiresAbsolute 属性指定缓存于浏览器中的页面的确切到期日期和时间。在未到期之前,若用户返回到该页,该缓存中的页面就显示。如果未指定时间,该主页在当天午夜到期。如果未指定日期,则该主页在脚本运行当天的指定时间到期。如下示例指定页面在 1998 年 12 月 10 日上午 9:00 分 30 秒到期。
    例如:< % Response.ExpiresAbsolute=#Dec 12,1998 9:00:30# %>
 
    6、Clear方法
    可以用 Clear 方法清除缓冲区中的所有 HTML 输出。但 Clear 方法只清除响应正文而不清除响应标题。可以用该方法处理错误情况。但是如果没有将 Response.Buffer 设置为 TRUE,则该方法将导致运行时错误。
    例如:Response.Clear
 
    7、End方法
    End 方法使 Web 服务器停止处理脚本并返回当前结果。文件中剩余的内容将不被处理。如果 Response.Buffer 已设置为 TRUE,则调用 Response.End 将缓冲输出。
    例如:response.end
 
    8、Flush方法
    Flush 方法立即发送缓冲区中的输出。如果没有将 Response.Buffer 设置为 TRUE,则该方法将导致运行时错误。
    例如:response.Flush  
 
    9、Redirect方法
    Redirect 方法使浏览器立即重定向到程序指定的 URL。
    例如:Response.redirect "www.google.com"
    例如:Response.redirect  "my.asp"
    例如:response.redirect "my.asp?cmd=inputFJ&ZCBM="&ZCBM&""
 
    10、Write方法
    将指定的字符串写到当前的 HTTP 输出。
    例如:response.write "xx"
 
    11、Cookie集合
    Cookies 集合设置 cookie 的值。若指定的 cookie 不存在,则创建它。若存在,则设置新的值并且将旧值删去。
    语法: Response.Cookies(cookie)[(key)|.attribute]=value
    这里的 cookie 是指定 cookie 的名称。而如果指定了 key,则该 cookie 就是一个字典。
    attribute 指定 cookie 自身的有关信息。attribute 参数可以是下列之一 :
                Domain 若被指定,则 cookie 将被发送到对该域的请求中去。
                Expires 指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。
                HasKeys 指定 cookie 是否包含关键字。
                Path 若被指定,则 cookie 将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。
                例如:response.mycookie("nick")
 
  
 
三.Application对象:
    同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序。我们非但可以使用 Application 对象,在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久的保存数据。而且,Application 对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。 
    一旦分配了 Application 对象的属性,它就会持久地存在,直到关闭 WEB 服务器服务使得 Application 停止。由于存储在 Application 对象中的数值可以被应用程序的所有用户读取,所以 Application 对象的属性特别适合在应用程序的用户之间传递信息。
    不能在 Application 对象中存储 ASP 内建对象。
    1 、属性
    Application(" 属性 / 集合名称 ")= 值
    例如:Application("MyVar") = "Hello"
    Set Application("MyObj") = Server.CreateObject("MyComponent")
   
    2 、Lock 方法
    禁止其他客户修改 Application 对象的属性。
    Lock 方法阻止其他客户修改存储在 Application 对象中的变量,以确保在同一时刻仅有一个客户可修改和存取 Application 变量。如果用户没有明确调用 Unlock 方法,则服务器将在 .asp 文件结束或超时后即解除对 Application 对象的锁定。
    例如:Application.LockApplication("Num")
   
    3 、Unlock 方法
    允许其他客户修改 Application 对象的属性。
    例如:Application.Unlock
   
    4 、Application_OnStart事件
    Application_OnStart 事件在首次创建新的会话 ( 即 Session_OnStart 事件 ) 之前发生。当 WEB 服务器启动并允许对应用程序所包含的文件进行请求时就触发 Application_OnStart 事件。Application_OnStart 事件的处理过程必须写在 Global.asa 文件之中。
    例如:Sub Application_OnStart()
              End Sub

    5 、Application_OnEnd事件
    Application_OnEnd 事件在应用程序退出时于 Session_OnEnd 事件之后发生,Application_OnEnd 事件的处理过程也必须写在 Global.asa 文件之中。
    例如:Sub Application_OnEnd()
              End Sub
 
 
 
四.Session对象:
    使用 Session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。
    通过向客户程序发送唯一的 Cookie 可以管理服务器上的 Session 对象。当用户第一次请求 ASP 应用程序中的某个页面时,ASP 要检查 HTTP 头信息,查看是否有在报文中有名为 ASPSESSIONID 的 Cookie 发送过来,如果有,则服务器会启动新的会话,并为该会话生成一个全局唯一的值,在把这个值作为新 ASPSESSIONID Cookie 的值发送给客户端,正是使用这种 Cookie,可以访问存储在服务器上的属于客户程序的信息。Session 对象最常见的作用就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。另外其还经常被用在鉴别客户身份的程序中。要注意的是,会话状态仅在支持 cookie 的浏览器中保留,如果客户关闭了 Cookie 选项,Session 也就不能发挥作用了。  
    会话可以通过以下三种方式启动 : 
    一个新用户请求访问一个 URL,该 URL 标识了某个应用程序中的 .asp 文件,并且该应用程序的 Global.asa 文件包含 Session_OnStart 过程。 
    用户在 Session 对象中存储了一个值。
    用户请求了一个应用程序的 .asp 文件,并且该应用程序的Global.asa 文件使用 < OBJECT> 标签创建带有会话作用域的对象的实例。
    1、SessionID属性
    SessionID 属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识。会话标识以长整形数据类型返回。在很多情况下 SessionID 可以用于 WEB 页面注册统计。
    例如:Session.SessionID
 
    2、TimeOut 属性
    Timeout 属性以分钟为单位为该应用程序的 Session 对象指定超时时限。如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。
    例如:Session.Timeout=30  
 
    3、Abandon方法
     Abandon 方法删除所有存储在 Session 对象中的对象并释放这些对象的源。如果您未明确地调用 Abandon 方法,一旦会话超时,服务器将删除这些对象。当服务器处理完当前页时,下面示例将释放会话状态。 
    例如:Session.Abandon
 
    4、Session_OnStart 事件
    在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。Session_OnStart 事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。
    例如:Sub Session_OnStart()
              End Sub
    为了确保用户在打开某个特定的 Web 页时始终启动一个会话,就可以在 Session_OnStart 事件中调用 Redirect 方法。当用户进入应用程序时,服务器将为用户创建一个会话并处理 Session_OnStart 事件脚本。您可以将脚本包含在该事件中以便检查用户打开的页是不是启动页,如果不是,就指示用户调用 Response.Redirect 方法启动网页。
    例如:Sub Session_OnStart
                      startPage = "/MyApp/StartHere.asp"
                      currentPage = Request.ServerVariables("SCRIPT_NAME")
                      if strcomp(currentPage,startPage,1) then
                           Response.Redirect(startPage)
                      end if
              End Sub
 
    5、Session_OnEnd 事件
    在会话被放弃或超时发生        
    例如:Sub Session_OnEnd()
              End Sub       
 
 
 
五.Server对象:
    Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务的。有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数。
    语法: Server.property|method
    1、ScriptTimeout属性
           ScriptTimeout 超时值,在脚本运行超过这一时间之后即作超时处理。如下代码指定服务器处理脚本在 100 后超时。
    例如:Server.ScriptTimeout=100
 
    2、HTMLEncode 方法
    HTMLEncode 方法允许你对特定的字符串进行 HTML 编码,从而在浏览器中按你的需要输出文本
    例如:Response.write Server.HTMLEncode(" 这是对 HTMLEncode 方法的测试。< br> 这里应该不会另起一行。")
 
    3、URLEncode 方法
    就象 HTMLEncode 方法使客户可以将字符串翻译成可接受的 HTML 格式一样,Server 对象的 URLEncode 方法可以根据 URL 规则对字符串进行正确编码,当字符串数据以 URL 的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。为此,如果你希望在发送字符串之前进行 URL 编码,可以使用 Server.URLEncode 方法。
    例如:<a href=me.asp?cmd=moreCL&DLDM=<%=server.URLEncode(DLDMS))%></a>
 
    4、MapPath 方法 
    MapPath 方法将指定的相对或虚拟路径映射到服务器上相应的物理目录上。
    例如:文件 data.txt 和包含下列脚本的 test.asp 文件都位于目录 C:/Inetpub/Wwwroot/asp 下。C:/Inetpub/Wwwroot 目录被设置为服务器的宿主目录。下列示例使用服务器变量 PATH_INFO 映射当前文件的物理路径。
            server.mappath("data.txt")
            输出 c:/inetpub/wwwroot/asp/data.txt 
            server.mappath("asp/data.txt")"
            输出 c:/inetpub/wwwroot/asp/asp/data.txt
            例如:Set fso =  Server.CreateObject ("Scripting.FileSystemObject")  
                      strFilePathOpen="vb/xlsfile/xlsdzxl/" 
                      strFilePath = Server.MapPath ("./vb/xlsfile/xlsdzxl/")
                      输出虚拟目录+/vb/xlsfile/xlsdzxl
 
    5、CreateObject 方法
    它用于创建已经注册到服务器上的 ActiveX 组件实例。不能创建与内建对象同名的对象实例。
    语法:Server.CreateObject("Component Name")
    例如:Set Session("ad") = Server.CreateObject("MSWC.AdRotator")
    例如:Set db=Server.CreateObject("ADODB.Connection")
 
 
 
六.ObjectContext 对象
    使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事务,它由 ASP  页包含的脚本初始化。
    ObjectContext 实现 MTS ObjectContext 对象的两种方法。 SetAbort 方法完全终止事务。这样,MTS 不更新在第一阶段联系的源。事务终止时,将处理脚本的 OnTransactionAbort 事件。
    调用 SetComplete 方法并不一定意味着事务已完成。只有脚本调用的所有事务组件都调用了 SetComplete,事务才能完成。在大多数实例中,如果结束处理时未调用 SetAbort,脚本通常被假定为完成的,所以不一定要在脚本内调用 SetComplete。
    语法:ObjectContext.method
    1、SetComplete方法
    声明脚本不了解事务未完成的原因。如果事务中的所有组件都调用 SetComplete,事务将完成。 忽略脚本中以前调用过的任何 SetAbort 方法。
    例如:ObjectContext.SetComplete
         
    2、SetAbort方法
    声明被脚本初始化的事务未完成,无法更新源
    例如:ObjectContext.SetAbort
 
    3、OnTransactionCommit事件
    在一个已处理的脚本事务提交后发生。 OnTransactionCommit 事件发生时,如果脚本中有 OnTransactionCommit 子例程,IIS 将处理该子例程。
 
    4、OnTransactionAbort事件
          如果事务异常终止,就会发生 OnTransactionAbort 事件。当 OnTransactionAbort 事件发生时,如果脚本中有 OnTransactionAbort 子程序,则 IIS 将执行它。