佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > ASP七大對象說明分析

ASP七大對象說明分析

熱門標簽:阿里云 團購網(wǎng)站 銀行業(yè)務 科大訊飛語音識別系統(tǒng) Mysql連接數(shù)設(shè)置 服務器配置 Linux服務器 電子圍欄
/*-------------------ASP文檔參考集-----------------------*/
*-->作者:草履蟲
*-->時間:2007-4.28---2007-4.30(原來是自己編寫的手冊,現(xiàn)在發(fā)在這里)
*-->聯(lián)系:caolvchong@gmail.com
*-->文檔功能:
1.復習了ASP,加深了對ASP結(jié)構(gòu)的理解和ASP的體會
2.可以用來做ASP參考,自己寫的,參考起來更方便


這是第二部分:ASP七大對象
/*---------------------------ASP七大對象----------------------------*/ 
*-->Application對象:
  功能:在給定的應用程序的所有用戶之間共享信息,并在服務器運行期間持久的保存數(shù)
    據(jù).而且,Application對象還有控制訪問應用層數(shù)據(jù)的方法和可用于在應用程序啟
    動和停止時觸發(fā)過程的事件(OnStart事件和OnEnd事件)
  屬性:沒有內(nèi)置的屬性
  集合:即用戶自定義的屬性
    Application 對象的集合及說明:
    Contents:沒有使用OBJECT>元素定義的存儲于Application對象中的所有變量(及
      它們的值)的一個集合.包括Variant數(shù)組和Variant類型對象實例的引用
    StaticObjects:使用OBJECT>元素定義的存儲于Application對象中的所有變量
      (及它們的值)的一個集合
    對應的例子:
     設(shè)置application屬性值:
      Application("MyVar") = "Hello"
      Set Application("MyObj") = Server.CreateObject("MyComponent")
  方法:
    Contents.Remove():移去某個application集合
    Contents.Removeall():移去所有的Application集合
    Lock():阻止其他客戶修改存儲在Application對象中的變量,以確保在同一時刻僅
      有一個客戶可修改和存取 Application 變量.如果用戶沒有明確調(diào)用Unlock
      方法,則服務器將在.asp文件結(jié)束或超時后即解除對 Application 對象的鎖
      定
    Unlock():使其他客戶端可以在使用Lock方法鎖住Application對象后,修改存儲在
      該對象中的變量.如果未顯式調(diào)用該方法,Web服務器將在.asp文件結(jié)束或超時
      后解鎖Application對象
    一個綜合點的例子:
     在1.asp中:
      '設(shè)置3個application屬性值
        application("chong1")="第1個application集合項"
        application("chong2")="第2個application集合項"
        application("chong3")="第3個application集合項"
      '設(shè)置的屬性值都保留在application.contents中,基數(shù)從0開始,因此可以用
      'for循環(huán)讀出來
      '這里總結(jié)下contents集合的屬性:
        'count屬性:返回集合中所有的項數(shù),返回值是個整數(shù)
        'item屬性:用于設(shè)置或返回集合中一個特定成員的值,item屬性是
        contents
        '集合的默認屬性,因此.item(x)相當于.(x)
        'key屬性:key(x)返回對應的屬性名,如上面
        application.contents.key(1)
        '將返回chong1
        For i = 1 to Application.Contents.Count 
          Response.Write (Application.Contents.item(i)) 
        Next
      在2.asp中:
      '2.asp和1.asp共享了application對象內(nèi)容,因此可以對該集合元素進行修
      改或刪除等
        application("chong1")="我被修改了"  '修改application屬性值
        application.Contents.Remove("chong2")  '刪除application屬性值
        for each j in application.Contents  'for each形式訪問application
          response.Write(Application.Contents.item(j))
        next
  事件:至于兩個事件onstart()和onend()等總結(jié)Global.asa文件時介紹
  經(jīng)驗:通常地,當要修改某個application值時,應當先用Lock()鎖定它,然后再修改,修
    改完后再Unlock(),防止多個用戶并發(fā)訪問該對象
  常用:設(shè)置,修改和刪除application集合,結(jié)合lock和unlock方法

*-->Session對象:
  功能:Session對象存儲特定的用戶會話所需的信息.當用戶在應用程序的頁之間跳轉(zhuǎn)  
    時,存儲在Session對象中的變量不會清除,而用戶在應用程序中訪問頁面時,這些
    變量始終存在.當用戶請求來自應用程序的Web頁時,如果該用戶還沒有會話,則 
    Web 服務器將自動創(chuàng)建一個Session對象.當會話過期或被放棄后,服務器將終止該
    會話(和application差別是session不是共享的,各個用戶有各自的session,由此
    可以用來驗證用戶的身份)
  集合:和application一樣地,session具有contents和StaticObject兩個集合
  屬性:
    CodePage:讀/寫.整型.定義用于在瀏覽器中顯示頁內(nèi)容的代碼頁(Code Page).代碼
      頁是字符集的數(shù)字值,不同的語言和場所可能使用不同的代碼頁.例如,650001
      是UTF-8,936為GB2312
    LCID:讀/寫.整型.定義發(fā)送給瀏覽器的頁面地區(qū)標識(LCID).LCID是唯一地標識地
      區(qū)的一個國際標準縮寫,例如,2057定義當前地區(qū)的貨幣符號是'£'.LCID也可
      用于FormatCurrency等語句中,只要其中有一個可選的LCID參數(shù).LCID也可在
      ASP處理指令%...%>中設(shè)置,并優(yōu)先于會話的LCID屬性中的設(shè)置.
    SessionID:只讀.長整型.返回這個會話的會話標識符.SessionID屬性返回用戶的
      會話標識.在創(chuàng)建會話時,服務器會為每一個會話生成一個單獨的標識.會話標
      識以長整形數(shù)據(jù)類型返回.在很多情況下 SessionID 可以用于 WEB 頁面注冊
      統(tǒng)計
    Timeout:讀/寫.整型.為這個會話定義以分鐘為單位的超時周期.如果用戶在超時周
      期內(nèi)沒有進行刷新或請求一個網(wǎng)頁,該會話結(jié)束.在各網(wǎng)頁中根據(jù)需要可以修
      改.缺省值是20min,在使用率高的站點上該時間應更短
  方法:
    Abandon():Abandon方法刪除所有存儲在Session對象中的對象并釋放這些對象的
      源.如果您未明確地調(diào)用Abandon方法,一旦會話超時,服務器將刪除這些對象.
      當服務器處理完當前頁時,下面示例將釋放會話狀態(tài)
      另外,session和application一樣,具有contents.remove()和
      contents.removeall()方法
  事件:至于兩個事件onstart()和onend()等總結(jié)Global.asa文件時介紹
  常用:設(shè)置,修改,刪除session,另外timeout也是常用的,記住一點,session依賴cookies,當瀏覽器關(guān)閉或者不
    支持cookie時將不能訪問到session

*-->request對象:
  功能:Request對象在HTTP請求期間,檢索客戶端瀏覽器傳遞給服務器的值
  集合:
    ClientCertificate:當客戶端訪問一個頁面或其他資源時,用來向服務器表明身份
      的客戶證書的所有字段或條目的數(shù)值集合,每個成員均是只
      讀.ClientCertificate集合從Web瀏覽器發(fā)布請求中獲取驗證字段(由X.509
      標準指定).如果Web瀏覽器使用SSL3.0/PCT1協(xié)議(也就是說,它使用以
      https://開頭的URL,而不是http://)連接服務器及服務器請求驗證,則瀏覽器
      將發(fā)送驗證字段.如果沒有發(fā)送驗證,ClientCertificate集合將返回EMPTY.必
      須先將Web服務器配置為要求客戶端驗證,然后才能使用ClientCertificate
      集合.
    Cookies:根據(jù)用戶的請求,用戶系統(tǒng)發(fā)出的所有cookie的值的集合,這些Cookie僅
      對相應的域有效,每個成員均為只讀,cookies也具有count,item,key三個屬
      性,用法可以類比上面提到的application中提到的.另外,cookies還有個屬性
      haskeys,指明cookie是多值還是單值的,多值返回true,單值返回false
    Form:的屬性值為POST時,所有作為請求提交的FORM>段中的HTML控件單元的值的
      集合,每個成員均為只讀,form也具有count,item,key三個屬性
    QueryString:依附于用戶請求的URL后面的名稱/數(shù)值對或者作為請求提交的且
      METHOD屬性值為GET(或者省略其屬性)的,字符串由問號(?)后的值指定,或
      FORM>中所有HTML控件單元的值,每個成員均為只讀,Querystring也具有
      count,item,key三個屬性
      ServerVariables:隨同客戶端請求發(fā)出的HTTP報頭值,以及Web服務器的幾種
      環(huán)境變量的值的集合,每個成員均為只讀,ServerVariables也具有
      count,item,key三個屬性servervariables參數(shù)我打印在了"servervariables
      參數(shù)集"文檔里了
  屬性:
    TotalBytes:指定客戶端在請求正文中發(fā)送的總字節(jié)數(shù).該屬性只允許讀
  方法:
    BinaryRead():獲取作為POST請求的一部分而從客戶端傳送到服務器的數(shù)據(jù).此方
    法獲取來自客戶端的數(shù)據(jù)并將其儲存在SafeArray中.SafeArray是一個數(shù)組,其中
    包含維數(shù)和邊界信息,通俗地說,安全數(shù)組就時維數(shù)以及維數(shù)的上下限都確定的數(shù)組
    BinaryRead方法用于讀取作為POST請求的一部分從客戶端發(fā)出的未加工數(shù)據(jù).此方
    法用于在底層訪問數(shù)據(jù),與此相反,Request.Form集合用于查看在公告請求中發(fā)送
    的表格數(shù)據(jù).一旦調(diào)用了BinaryRead,則引用Request.Form集合中的任何變量都將
    導致錯誤發(fā)生.反之,一旦引用了Request.Form集合中的一個變量,則調(diào)用
    BinaryWrite也將導致錯誤發(fā)生.請記住,如果在訪問Request集合中的變量時未指
    定該變量屬于哪一個子集,將搜索Request.Form集合并強制使用上述規(guī)則.
  常用:對于表單的提交或者是頁面之間的參數(shù)傳遞,request起著重要的作用,區(qū)分好
    Form和QueryString兩個區(qū)別,
    當而只用request,省略這兩個集合時,asp會自動調(diào)整,但這樣做是不好的.對于表
    單,通常request是通過
    表單元素的name來獲得表單元素的值(value)
   另外,在無組件上傳文件時,TotalBytes用來獲取上傳文件的大小,BinaryRead()
    用來獲取上傳表單的所有內(nèi)容.
   當然,如果想獲得文件內(nèi)容,需要進行對BinaryRead()獲得的內(nèi)容進行分析截取

*-->response對象:
  功能:將輸出發(fā)送到客戶端,剛好和request相對
  集合:
    cookies:在當前響應中,發(fā)回客戶端的所有cookie的值,這個集合為只寫
    例子:
     'Expires設(shè)置過期事件,時間格式#英文月單詞 數(shù)字日期,4位年份#
      response.cookies("name")="草履蟲"
      response.cookies("name").Expires=#May 11,2007#
     '至于讀就要用request.cookies了
      name=request.cookies("name")  '這樣name就獲得了"草履蟲"
     '利用cookies可以做免密碼登錄,判斷用戶是否登錄過以及由這些觸發(fā)的事件等
      等
    'cookie也有count,item和key屬性
    '單個cookie屬性還有dimain,haskeys,path,secure屬性,具體的等用到時候再查

  屬性:
    Buffer=True|False:讀/寫,布爾型,表明由一個ASP頁所創(chuàng)建的輸出是否一直存放
      在IIS緩沖區(qū),直到當前頁面的所有服務器腳本處理完畢或Flush、End方法被
      調(diào)用.在任何輸出(包括HTTP報頭信息)送往IIS之前這個屬性必須設(shè)置.因此
      在.asp文件中,這個設(shè)置應該在%@ LANGUAGE=...%>語句后面的第一行.ASP3.0
      缺省設(shè)置緩沖為開(True),而在早期版本中缺省為關(guān)(False)
    CacheControl:讀/寫,字符型,設(shè)置這個屬性為"Public"允許代理服務器緩存頁面,
      如為"Private"則禁止代理服務器緩存的發(fā)生.
    Charset:讀/寫,字符型,在由服務器為每個響應創(chuàng)建的HTTP Content-Type報頭中附
      上所用的字符集名稱(例如:ISO-LATIN-7)
    Content Type="MIME-type":讀/寫,字符型,指明響應的HTTP內(nèi)容類型,標準的MIME
      類型(例如"text/xml"或者"Image/gif").假如省略,表示使用MIME類型
      "text/html",內(nèi)容類型告訴瀏覽器所期望內(nèi)容的類型,關(guān)于MIME列表,打印在
      MIME參考文檔里,需要時可以去參考
    Expires:讀/寫,數(shù)值型,指明頁面有效的以分鐘計算的時間長度,假如用戶請求其有
      效期滿之前的相同頁面,將直接讀取顯示緩沖中的內(nèi)容,這個有效期間過后,頁
      面將不再保留在私有(用戶)或公用(代理服務器)緩沖中.如果希望一個文件立
      即終止,可以將該屬性值設(shè)置為一個非常大的負數(shù).一個文件內(nèi)多次設(shè)置了
      expires屬性將使用最早的時間/日期為該文件的終止時間(是一個相對時間)
    ExpiresAbsolute:讀/寫,日期/時間型,指明當一個頁面過期和不再有效時的絕對日
      期和時間.在未到期之前,若用戶返回到該頁,該緩存的頁就顯示.如果未指定時
      間,該主頁在當天午夜到期.如果未指定日期,則該主頁在腳本運行當天的指定
      時間到期
    IsClientConnected:只讀,布爾型,返回客戶是否仍然連接和下載頁面的狀態(tài)標志.
      在當前的頁面已執(zhí)行完畢之前,假如一個客戶轉(zhuǎn)移到另一個頁面,這個標志可用
      來中止處理(使用Response.End方法)
    PICS:只寫,字符型,創(chuàng)建一個PICS報頭并將之加到響應中的HTTP報頭中,PICS報頭
      定義頁面內(nèi)容中的詞匯等級,如暴力、性、不良語言等
    Status:讀/寫,字符型,指明發(fā)回客戶的響應的HTTP報頭中表明錯誤或頁面處理是
      否成功的狀態(tài)值和信息.例如"200 OK"和"404 Not Found"
  方法:
    AddHeader "name","content":通過使用name和Content值,創(chuàng)建一個定制的HTTP
      報頭,并增加到響應之中.不能替換現(xiàn)有的相同名稱的報頭.一旦已經(jīng)增加了一
      個報頭就不能被刪除.這個方法必須在任何頁面內(nèi)容(即text和HTML)被發(fā)往客
      戶端前使用
    AppendToLog("string"):當使用"W3C Extended Log File Format"文件格式時,對于
      用戶請求的Web服務器的日志文件增加一個條目.至少要求在包含頁面的站點
      的"Extended Properties"頁中選擇"URI Stem".string為要添加到日志文件中
      的文本.由于IIS日志中的字段由逗號分隔,所以該字符串中不能包含逗號 
      (,).字符串最大長度為 80 個字符
    BinaryWrite():在當前的HTTP輸出流中寫入Variant類型的SafeArray,而不經(jīng)過
      任何字符轉(zhuǎn)換.對于寫入非字符串的信息,例如定制的應用程序請求的二進制數(shù)
      據(jù)或組成圖像文件的二進制字節(jié),是非常有用的
    Clear():當Response.Buffer為True時,從IIS響應緩沖中刪除現(xiàn)存的緩沖頁面內(nèi)
      容.但不刪除HTTP響應的報頭,可用來放棄部分完成的頁面
    End():讓ASP結(jié)束處理頁面的腳本,并返回當前已創(chuàng)建的內(nèi)容,然后放棄頁面的任何
      進一步處理
    Flush():發(fā)送IIS緩沖中所有當前緩沖頁給客戶端(立即發(fā)送緩沖區(qū)中的輸出).當
      Response.buffer為True時,可以用來發(fā)送較大頁面的部分內(nèi)容給個別的用戶.
      如果未將Response.Buffer設(shè)置為TRUE,則該方法將導致運行時錯誤
      Redirect("url")通過在響應中發(fā)送一個"302 Object Moved" HTTP報頭,指示
      瀏覽器根據(jù)字符串url下載相應地址的頁面,瀏覽器重定向到URL. 
    Write("string"):在當前的HTTP響應信息流和IIS緩沖區(qū)寫入指定的字符,使之成
      為返回頁面的一部分.該值不能包括字符組合%>,如果需要,可用轉(zhuǎn)義序列%\&;代
      替.Web服務器在處理腳本時,將轉(zhuǎn)換這一轉(zhuǎn)義序列還有一種格式輸
      出:%=...%>,但這要在asp和html之間轉(zhuǎn)換,速度減慢,最好的辦法是一行
      response.write(),字符串用連接常用:cookies,buffer,content type,
      expires,status,binarywrite,clear,end,flush,redirect,write這些都是很
      常用的和瀏覽器交互的重要成分,cookies用于客戶身份方面,和它相關(guān)的有
      expires;buffer以及和buffer相關(guān)的clear,flush,end這些用于緩存
      的控制;content type最常用于xml和圖像內(nèi)容的輸出;stutas用于判斷狀態(tài),
      特別在xmlhttp中;write用于輸出;redirect用于轉(zhuǎn)接內(nèi)容;binarywrite一般
      用于接收上傳的文件內(nèi)容

*-->server對象:
  功能:提供對服務器上的方法和屬性的訪問.其中大多數(shù)方法和屬性是作為實用程序的功
    能服務的
  屬性:
    ScriptTimeout:整型,缺省值為90秒,設(shè)置或返回頁面的腳本在服務器退出執(zhí)行和
      報告一個錯誤之前可以執(zhí)行的時間(秒數(shù)).達到該值后將自動停止頁面的執(zhí)行,
      并從內(nèi)存中刪除包含可能進入死循環(huán)的錯誤的頁面或者是那些長時間等待其他
      資源的網(wǎng)頁.這會防止服務器因存在錯誤的頁面而過載.對于運行時間較長的頁
      面需要增大這個值
  方法:
    CreateObject("identifier"):創(chuàng)建由identifier標識的對象(一個組件、應用程序
      或腳本對象)的一個實例,返回可以在代碼中使用的一個引用.可以用于一個虛
      擬應用程序(global.asa頁)創(chuàng)建會話層或應用程序?qū)臃秶鷥?nèi)的對象.該對象可
      以用其ClassID來標識,如"{clsid:BD96C556-65A3...37A9}"或一個ProgID串
      來標識,如"ADODB.Connection",通常我們使用ProgID
      注意下面幾點:
      1.默認情況下,由Server.CreateObject方法創(chuàng)建的對象具有頁作用域.這就是
        說,在當前ASP頁處理完成之后,服務器將自動破壞這些對象
      2.可以通過將變量設(shè)置為 Nothing 或新的值來破壞對象
      3.不能創(chuàng)建與內(nèi)建對象同名的對象實例
    Execute("url"):停止當前頁面的執(zhí)行,把控制轉(zhuǎn)到在url中指定的網(wǎng)頁.用戶的當
      前環(huán)境(即會話狀態(tài)和當前事務狀態(tài))也傳遞到新的網(wǎng)頁.在該頁面執(zhí)行完成后,
      控制傳遞回原先的頁面,并繼續(xù)執(zhí)行Execute方法后面的語句
    GetLastError():返回ASP ASPError對象的一個引用,這個對象包含該頁面在ASP
      處理過程中發(fā)生的最近一次錯誤的詳細數(shù)據(jù).這些由ASPError對象給出的信息
      包含文件名、行號、錯誤代碼等等HTMLEncode("string"):返回一個字符串,該
      串是輸入值string的拷貝,但去掉了所有非法的HTML字符,
      常見不合法HTML字符及其轉(zhuǎn)換字符有:
       對應 
      > 對應 >
       對應 
      " 對應 "
       對應  (空格)
      ? 對應 ©(版權(quán))
      ? 對應 ®(注冊商標)
      ×對應 ×(乘號)
      ÷對應 ÷(除號)

    MapPath("url"):返回在url中指定的文件或資源的完整物理路徑和文件名
    Transfer("url"):停止當前頁面的執(zhí)行,把控制轉(zhuǎn)到url中指定的頁面.用戶的當前      環(huán)境(即會話狀態(tài)和當前事務狀態(tài))也傳遞到新的頁面.與Execute方法不同,當
      新頁面執(zhí)行完成時,不回到原來的頁面,而是結(jié)束執(zhí)行過程
    URLEncode("string"):返回一個字符串,該串是輸入值string的拷貝,但是在URL
      中無效的所有字符,
      常見不合法的URL字符及其轉(zhuǎn)換字符有:
      #  用來標志特定的文檔位置  %23 
      %  對特殊字符進行編碼  %25 
        分隔不同的變量值對  %26 
      +  在變量值中表示空格  %2B 
      /  表示目錄路徑    %2F
      \&; 表示目錄路徑    %5C
      =  用來連接鍵和值    %3D 
      ?  表示查詢字符串的開始  %3F
         空格      %20
      .  句號      %2E
      :  冒號      %3A

*-->ASPError對象:
  由于錯誤機制IIS已經(jīng)能識別定位,暫時略過不深入了

*-->ObjectContext對象:
  功能:控制ASP的事務處理.事務處理由Microsoft Transaction Server (MTS)管理
  事件:
    OnTransactionAbort:由放棄的事務處理事件激發(fā),在腳本完成處理后發(fā)生
    OnTransactionCommit:由成功的事務處理事件激發(fā),在腳本完成處理后發(fā)生
  方法:
    SetAbort:顯式的放棄一次事務處理
    SetComplete:覆蓋前面任何調(diào)用ObjectContext.SetAbort方法的調(diào)用
      由于沒有涉及,等涉及時深入,暫時了解即可

標簽:大理 棗莊 蚌埠 江蘇 萍鄉(xiāng) 衢州 衡水 廣元

巨人網(wǎng)絡通訊聲明:本文標題《ASP七大對象說明分析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    普安县| 彰化县| 黑河市| 象山县| 龙门县| 拉孜县| 弋阳县| 新干县| 乐亭县| 潜江市| 张家川| 胶州市| 鄯善县| 郓城县| 四会市| 开江县| 大兴区| 安化县| 西畴县| 海林市| 阿拉善右旗| 肇庆市| 镇巴县| 顺义区| 江油市| 余干县| 大石桥市| 岳阳市| 旌德县| 格尔木市| 张掖市| 济阳县| 瓦房店市| 西充县| 夏津县| 和政县| 宁国市| 甘德县| 芷江| 太原市| 浙江省|