ASP的六個對象

什麼是對象? 對象就是在面向對象編程中,由當作完整實體的操作和數據組成的變量。對象是基於特定模型的,在對象中客戶使用對象的服務通過由一組方法或相關函數的接口訪問對象的數據,然後客戶端可以調用這些方法執行某中操作
    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 將執行它。
發佈了163 篇原創文章 · 獲贊 13 · 訪問量 119萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章