欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

ASP內(nèi)置對(duì)象Request和Response的詳解_ASP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:ASP技巧:提高使用Request集合的效率
訪問(wèn)一個(gè)ASP集合來(lái)提取一個(gè)值是費(fèi)時(shí)的、占用計(jì)算資源的過(guò)程。因?yàn)檫@個(gè)操作包含了一系列對(duì)相關(guān)集合的搜索,這比訪問(wèn)一個(gè)局部變量要慢得多。因此,如果打算在頁(yè)面中多次使用Request集合中的一個(gè)值

Request和Response這兩個(gè)對(duì)象是ASP所提供的內(nèi)置對(duì)象中最常用的兩個(gè)。在瀏覽器(或其他用戶(hù)代理)和Web服務(wù)器之間,請(qǐng)求與響應(yīng)中發(fā)生的信息交流可以通過(guò)ASP中的兩個(gè)內(nèi)置對(duì)象來(lái)進(jìn)行訪問(wèn)和管理,這兩個(gè)對(duì)象稱(chēng)為Request和Response對(duì)象。

在ASP頁(yè)中所要進(jìn)行的工作幾乎都要訪問(wèn)這兩個(gè)對(duì)象,使用這兩個(gè)對(duì)象的方式將影響頁(yè)面的效率及可靠性。當(dāng)然,它們的主要用途是訪問(wèn)用戶(hù)發(fā)回到服務(wù)器的值,即從HTML頁(yè)的<FORM>段獲得或附在URL后面作為查詢(xún)字符串,并創(chuàng)建合適的輸出返回給用戶(hù),且它們可以共享很多相同的因素。例如兩個(gè)對(duì)象都可以使用存儲(chǔ)在客戶(hù)端計(jì)算機(jī)上的cookie。

因此,我們把內(nèi)容分成兩個(gè)獨(dú)立的部分(每個(gè)對(duì)象一部分),并且首先從客戶(hù)端與服務(wù)器這間的信息交流入手,然后再研究每一個(gè)對(duì)象。

研究的內(nèi)容是:

· 客戶(hù)端與服務(wù)器如何交流以傳遞Web或其他資源。

· Request和Response對(duì)象的細(xì)節(jié),以及它們之間的共同點(diǎn)。

· 如何通過(guò)一個(gè)窗體和查詢(xún)字符串訪問(wèn)相應(yīng)的值。

· 如何讀入或創(chuàng)建cookie并存放在客戶(hù)端的計(jì)算機(jī)上。

· 服務(wù)器的變量是什么?如何訪問(wèn)和修改HTTP報(bào)頭。

· 說(shuō)明其他相關(guān)條目的變化,如客戶(hù)的證書(shū)使用。

客戶(hù)端和服務(wù)器的交流

為節(jié)省篇幅,后面的內(nèi)容中使用“瀏覽器”(browser)一詞。但需要記住的是,能夠訪問(wèn)Web頁(yè)面的應(yīng)用程序絕不僅只有瀏覽器,有許多特殊的應(yīng)用程序從站點(diǎn)上下載網(wǎng)頁(yè),如為那些視力有缺陷用戶(hù)設(shè)計(jì)的特殊的客戶(hù)端程序或者是用通常的瀏覽器有其他困難的人。最顯而易見(jiàn)的例子是搜索引擎用來(lái)訪問(wèn)Web上的站點(diǎn)的robot。全面考慮這些因素,包括普通的Web瀏覽器,準(zhǔn)確的詞匯應(yīng)該是用戶(hù)代理(user agent)。

頁(yè)面請(qǐng)求的對(duì)話(huà)

當(dāng)一個(gè)瀏覽器向Web站點(diǎn)提出頁(yè)面請(qǐng)求時(shí),顯然必須告訴服務(wù)器,其請(qǐng)求的是哪一個(gè)頁(yè)面。首先要做的是通過(guò)域名與服務(wù)器建立連接,然后提供所請(qǐng)求的頁(yè)面的全路徑和名稱(chēng)。為什么要全路徑和名稱(chēng)?Web是一個(gè)無(wú)國(guó)界的環(huán)境,所以必須創(chuàng)造一個(gè)會(huì)話(huà)標(biāo)識(shí)每個(gè)客戶(hù)(將在以后介紹ASP如何做到這點(diǎn))。

這就意味著每當(dāng)服務(wù)器完成向客戶(hù)發(fā)送頁(yè)面后,服務(wù)器就徹底忘記了這個(gè)客戶(hù)。因此,當(dāng)客戶(hù)請(qǐng)求下一個(gè)頁(yè)面時(shí),與一個(gè)新的訪問(wèn)者是完全相同的。服務(wù)器無(wú)法記住這個(gè)客戶(hù),相應(yīng)的,也就無(wú)法判斷它們上次請(qǐng)求的頁(yè)面是哪一個(gè)。因?yàn)椋荒苁褂孟鄬?duì)路徑來(lái)提供一個(gè)頁(yè)面,即使頁(yè)面包含一個(gè)相對(duì)的鏈接也不行,例如:

<A HREF=http://www.mb5ucom/”Download.asp”>Next Page</A>

瀏覽器將自動(dòng)建立完整的新頁(yè)面的URL,方法是使用當(dāng)前頁(yè)的域和路徑;或使用頁(yè)面<HEAD>段中的<BASE>元素,告訴瀏覽器一個(gè)頁(yè)面中所有鏈接的其URL是什么。例如:

<BASE HERF=http://m.dounai2.com>
  當(dāng)把鼠標(biāo)指向一個(gè)頁(yè)面的鏈接時(shí),可在瀏覽器的狀態(tài)欄中看到。當(dāng)前頁(yè)面的路徑和當(dāng)前域名或基域名或基路徑已經(jīng)與請(qǐng)求的頁(yè)面名結(jié)合在一起了。

1、客戶(hù)請(qǐng)求的細(xì)節(jié)

所請(qǐng)求頁(yè)面的全路徑和名稱(chēng)的組合是瀏覽器請(qǐng)求頁(yè)面時(shí)發(fā)住服務(wù)器的唯一住處瀏覽器的請(qǐng)求也能包含瀏覽器宿主的住處和客戶(hù)端運(yùn)行的操作系統(tǒng)。實(shí)際的信息內(nèi)容將隨著瀏覽器的不同而有相應(yīng)的變化,只有很少一部分能夠由其他的應(yīng)用程序如搜索引擎robot提供。為了更清楚地了解該信息,下面是從IE 5.0發(fā)出的一個(gè)對(duì)頁(yè)面


Download.asp的請(qǐng)求信息:

7/8/99 10:27:16 Sent GET /Store/Download.asp HTTP/1.1
Accept: application/msword, application/vnd.ms-execl, application/vnd.ms-
powerpoint, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-
comet, */*
Accept-Language: en-us
Encoding: gzip, deflate
Referer: http://ww.wrox.com/main_menu.asp
Cookie: VisitCount=2&LASTDATE=6/4/99 10:10:13 AM
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)
Host: 212.250.238.67
Connection: Keep-Alive

從中可以看出,這些信息中有關(guān)于用戶(hù)代理和用戶(hù)連接的細(xì)節(jié)(如缺省的語(yǔ)言),也有能夠接受的文件或應(yīng)用程序的類(lèi)型列表,這些都是MIME類(lèi)型的,在后面將會(huì)見(jiàn)到更多。瀏覽器能夠接受幾種圖像文件及多種Microsoft Office文件類(lèi)型。“標(biāo)準(zhǔn)”的文件類(lèi)型,如tesx/html和text/text沒(méi)有列在其中。文件列表中*/*表示可向?yàn)g覽器發(fā)回任何類(lèi)型的文件,由瀏覽器解釋或通過(guò)一個(gè)插件(plug-in)應(yīng)用程序來(lái)進(jìn)行解釋。

cookie: 條目包含的cookie存放在客戶(hù)端的計(jì)算機(jī)上,并僅對(duì)該域有效。假如請(qǐng)求是點(diǎn)擊鏈接的結(jié)果,而不是在瀏覽器的地址欄直接輸入U(xiǎn)RL,則Referer:條目被顯示出來(lái),它包含了鏈接頁(yè)面的完整的URL。

Host:條目包含客戶(hù)計(jì)算機(jī)的IP地址或名稱(chēng)。然而,這還不足以準(zhǔn)確辨別客戶(hù)機(jī)。因?yàn)樗鼈兺ㄟ^(guò)ISP連接時(shí),IP地址是動(dòng)態(tài)分配的,或者通過(guò)一個(gè)代理服務(wù)器連接時(shí),IP地址是代理機(jī)的而不是實(shí)際的客戶(hù)機(jī)的。

2、服務(wù)器響應(yīng)的細(xì)節(jié)信息

為響應(yīng)上述的請(qǐng)求,并對(duì)匿名的瀏覽器(即用戶(hù)不必提供用戶(hù)名和訪問(wèn)口令)提供請(qǐng)求的頁(yè)面,下面的內(nèi)容是從服務(wù)器發(fā)往客戶(hù)機(jī)的:

7/8/99 10:27:16 Received HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Connection: Keep-Alive
Date: Thu, 8 Jul 1999 10:27:16 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 2946
Last-Modified: Thu, 8 Jul 1999 10:27:16 GMT
Cookie: VisitCount=3&LASTDATE=7/8/99 10:27:16 AM
<HTML>
… rest of page …
</HTML>

可以看出服務(wù)器向客戶(hù)端說(shuō)明自己所用的軟件及版本,第一行表明所使用的是HTTP協(xié)議,及返回碼的狀態(tài)。信息“200 OK”表示請(qǐng)求被接受并得到了滿(mǎn)足。后面的信息是被返回的頁(yè)面的細(xì)節(jié),包括MIME類(lèi)型(Content-Length:)、大小(字節(jié))、最近更改時(shí)間,和返回客戶(hù)端存儲(chǔ)的cookie。響應(yīng)中的其他信息是頁(yè)面內(nèi)容的信息流。

在某些情況下,服務(wù)器響應(yīng)一個(gè)請(qǐng)求后,不能返回一個(gè)頁(yè)面,也許因?yàn)轫?yè)面不存在,或都客戶(hù)沒(méi)有相應(yīng)的權(quán)限來(lái)訪問(wèn)它。我們將在后面討論安全問(wèn)題。現(xiàn)在,對(duì)于請(qǐng)求頁(yè)面不存在的情況(例如用戶(hù)在瀏覽器的地址欄輸入了錯(cuò)誤的URL),返回的信息開(kāi)頭為:

7/8/99 14:27:16 Received HTTP/1.1 404 Not Found
Server: Microsoft-IIS/5.0

這里,狀態(tài)碼和信息表明客戶(hù)請(qǐng)求的頁(yè)面無(wú)法找到。瀏覽器可使用這個(gè)信息向用戶(hù)顯示相應(yīng)的信息(這種情況在IE 5.0中不顯示服務(wù)器的響應(yīng)信息,而顯示相應(yīng)“幫助性”的錯(cuò)誤提示頁(yè)面),也可顯示服務(wù)器創(chuàng)建的缺省頁(yè)面(依賴(lài)服務(wù)器的設(shè)置)。 Request和Response對(duì)象
從ASP中能夠應(yīng)用客戶(hù)請(qǐng)求和服務(wù)器響應(yīng)的細(xì)節(jié)是通過(guò)ASP內(nèi)置的Request和Response對(duì)象來(lái)實(shí)現(xiàn)的。

· Request對(duì)象:為腳本提供了當(dāng)客戶(hù)端請(qǐng)求一個(gè)頁(yè)面或者傳遞一個(gè)窗體時(shí),客戶(hù)端提供的全部信息。這包括能指明瀏覽器和用戶(hù)的HTTP變量,在這個(gè)域名下存放在瀏覽器中的cookie,任何作為查詢(xún)字符串而附于URL后面的字符串或頁(yè)面的<FORM>段中的HTML控件的值。也提供使用Secure Socket Layer(SSL)或其他加密通信協(xié)議的授權(quán)訪問(wèn),及有助于對(duì)連接進(jìn)行管理的屬性。

· Response對(duì)象:用來(lái)訪問(wèn)服務(wù)器端所創(chuàng)建的并發(fā)回到客戶(hù)端的響應(yīng)信息。為腳本提供HTTP變量,指明服務(wù)器和服務(wù)器的功能和關(guān)于發(fā)回瀏覽器的內(nèi)容的信息,以及任何將為這個(gè)域而存放在瀏覽器里新的cookie。它也提供了一系列的方法用來(lái)創(chuàng)建輸出,例如無(wú)處不在的Response.Write方法。

1、 Request對(duì)象成員的概述

  a) Request對(duì)象的集合

  Request對(duì)象提供了5個(gè)集合,可以用來(lái)訪問(wèn)客戶(hù)端對(duì)Web服務(wù)器請(qǐng)求的各類(lèi)信息,這些集合如下表:

  Request對(duì)象的集合及說(shuō)明

集合名稱(chēng) 說(shuō)明
ClientCertificate 當(dāng)客戶(hù)端訪問(wèn)一個(gè)頁(yè)面或其他資源時(shí),用來(lái)向服務(wù)器表明身份的客戶(hù)證書(shū)的所有字段或條目的數(shù)值集合,每個(gè)成員均是只讀
Cookies 根據(jù)用戶(hù)的請(qǐng)求,用戶(hù)系統(tǒng)發(fā)出的所有cookie的值的集合,這些cookie僅對(duì)相應(yīng)的域有效,每個(gè)成員均為只讀
Form METHOD的屬性值為POST時(shí),所有作為請(qǐng)求提交的<FORM>段中的HTML控件單元的值的集合,每個(gè)成員均為只讀
QueryString 依附于用戶(hù)請(qǐng)求的URL后面的名稱(chēng)/數(shù)值對(duì)或者作為請(qǐng)求提交的且METHOD屬性為GET(或者省略其屬性)的,或<FORM>中所有HTML控件單元的值,每個(gè)成員均為只讀
ServerVariables 隨同客戶(hù)端請(qǐng)求發(fā)出的HTTP報(bào)頭值,以及Web服務(wù)器的幾種環(huán)境變量的值的集合,每個(gè)成員均為只讀

  b) Request對(duì)象的屬性

  Request對(duì)象唯一的屬性及說(shuō)明如下表所示,它提供用戶(hù)請(qǐng)求的字節(jié)數(shù)量的信息,它很少用于ASP頁(yè),我們通常關(guān)注指定值而不是整個(gè)請(qǐng)求字符串。

屬性 說(shuō)明
TotlBytes 只讀,返回由客戶(hù)端發(fā)出的請(qǐng)求的整個(gè)字節(jié)數(shù)量

  c) Request對(duì)象的方法

  Request對(duì)象唯一的方法及說(shuō)明如下表所示,它允許訪問(wèn)從一個(gè)<FORM>段中傳遞給服務(wù)器的用戶(hù)請(qǐng)求部分的完整內(nèi)容。

  Request對(duì)象的方法及說(shuō)明

方法 說(shuō)明
BinaryRead(count) 當(dāng)數(shù)據(jù)作為POST請(qǐng)求的一部分發(fā)往服務(wù)器時(shí),從客戶(hù)請(qǐng)求中獲得count字節(jié)的數(shù)據(jù),返回一個(gè)Variant數(shù)組(或者SafeArray)。如果ASP代碼已經(jīng)引用了Request.Form集合,這個(gè)方法就不能用。同時(shí),如果用了BinaryRead方法,就不能訪問(wèn)Request.Form集合

  2、 Response對(duì)象成員概述

  a) Response對(duì)象的集合

  Response對(duì)象只有一個(gè)集合,如下表所示,該集合設(shè)置希望放置在客戶(hù)系統(tǒng)上的cookie的值,它直接等同于Request.Cookies集合。

  Response對(duì)象的集合及說(shuō)明

集合名稱(chēng) 說(shuō)明
Cookies 在當(dāng)前響應(yīng)中,發(fā)回客戶(hù)端的所有cookie的值,這個(gè)集合為只寫(xiě)

  b) Response對(duì)象的屬性

  Response對(duì)象也提供一系列的屬性,可以讀取(多數(shù)情況下)和修改,使響應(yīng)能夠適應(yīng)請(qǐng)求。這些由服務(wù)器設(shè)置,我們不需要設(shè)置它們。需要注意的是,當(dāng)設(shè)置某些屬性時(shí),使用的語(yǔ)法可能與通常所使用的有一定的差異。

  Response對(duì)象的屬性及說(shuō)明

屬性 說(shuō)明
Buuffer=True|False 讀/寫(xiě),布爾型,表明由一個(gè)ASP頁(yè)所創(chuàng)建的輸出是否一直存放在IIS緩沖區(qū),直到當(dāng)前頁(yè)面的所有服務(wù)器腳本處理完畢或Flush、End方法被調(diào)用。在任何輸出(包括HTTP報(bào)送信息)送住IIS之前這個(gè)屬性必須設(shè)置。因此在.asp文件中,這個(gè)設(shè)置應(yīng)該在<%@LANGUAGE=…%>語(yǔ)句后面的第一行。ASP 3.0缺省設(shè)置緩沖為開(kāi)(True),而在早期版本中缺省為關(guān)(False)
CacheControl”setting” 讀/寫(xiě),字符型,設(shè)置這個(gè)屬性為“Public”允許代理服務(wù)器緩存頁(yè)面,如為“Private”則禁止代理服務(wù)器緩存的發(fā)生
Charset=”value” 讀/寫(xiě),字符型,在由服務(wù)器為每個(gè)響應(yīng)創(chuàng)建的HTTP Content-Type報(bào)頭中附上所用的字符集名稱(chēng)(例如:ISO-LATIN-7)
Content Type=”MIME-type” 讀/寫(xiě),字符型,指明響應(yīng)的HTTP內(nèi)容類(lèi)型,標(biāo)準(zhǔn)的MIME類(lèi)型(例如“text/xml”或者“Image/gif”)。假如缺省,表示使用MIME類(lèi)型“text/html”,內(nèi)容類(lèi)型告訴瀏覽器所期望內(nèi)容的類(lèi)型
Expires minutes 讀/寫(xiě),數(shù)值型,指明頁(yè)面有效的以分鐘計(jì)算的時(shí)間長(zhǎng)度,假如用戶(hù)請(qǐng)求其有效期滿(mǎn)之前的相同頁(yè)面,將直接讀取顯示緩沖中的內(nèi)容,這個(gè)有效期間過(guò)后,頁(yè)面將不再保留在私有(用戶(hù))或公用(代理服務(wù)器)緩沖中
Expires Absolute #date [time]# 讀/寫(xiě),日期/時(shí)間型,指明當(dāng)一個(gè)頁(yè)面過(guò)期和不再有效時(shí)的絕對(duì)日期和時(shí)間
IsClientConnected 只讀,布爾型,返回客戶(hù)是否仍然連接和下載頁(yè)面的狀態(tài)標(biāo)志。在當(dāng)前的頁(yè)面已執(zhí)行完畢之前,假如一個(gè)客戶(hù)轉(zhuǎn)移到別一個(gè)頁(yè)面,這個(gè)標(biāo)志可用來(lái)中止處理(使用Response.End方法)
PICS(“PICS-Label-string”) 只寫(xiě),字符型,創(chuàng)建一個(gè)PICS報(bào)頭定義頁(yè)面內(nèi)容中的詞匯等級(jí),如暴力、性、不良語(yǔ)言等
Status=”Code message” 讀/寫(xiě),字符型,指明發(fā)回客戶(hù)的響應(yīng)的HTTP報(bào)頭中表明錯(cuò)誤或頁(yè)面處理是否成功的狀態(tài)值和信息。例如“200 OK”和“404 Not Found”

  c) Response對(duì)象的方法

  Response對(duì)象提供一系列的方法,如下表所示,允許直接處理為返回給客戶(hù)端而創(chuàng)建的頁(yè)面內(nèi)容。

  Response對(duì)象的方法及說(shuō)明

方法 說(shuō)明
AddHeader(“name”,”content”) 通過(guò)使用name和Content值,創(chuàng)建一個(gè)定制的HTTP報(bào)頭,并增加到響應(yīng)之中。不能替換現(xiàn)有的相同名稱(chēng)的報(bào)頭。一旦已經(jīng)增加了一個(gè)報(bào)頭就不能被刪除。這個(gè)方法必須在任何頁(yè)面內(nèi)容(即text和HTML)被發(fā)住客戶(hù)端前使用
AppendToLog(“string”) 當(dāng)使用“W3C Extended Log File Format”文件格式時(shí),對(duì)于用戶(hù)請(qǐng)求的Web服務(wù)器的日志文件增加一個(gè)條目。至少要求在包含頁(yè)面的站點(diǎn)的“Extended Properties”頁(yè)中選擇“URL Stem”
BinaryWrite(safeArray) 在當(dāng)前的HTTP輸出流中寫(xiě)入Variant類(lèi)型的SafeArray,而不經(jīng)過(guò)任何字符轉(zhuǎn)換。對(duì)于寫(xiě)入非字符串的信息,例如定制的應(yīng)用程序請(qǐng)求的二進(jìn)制數(shù)據(jù)或組成圖像文件的二進(jìn)制字節(jié),是非常有用的
Clear() 當(dāng)Response.Buffer為T(mén)rue時(shí),從IIS響應(yīng)緩沖中刪除現(xiàn)存的緩沖頁(yè)面內(nèi)容。但不刪除HTTP響應(yīng)的報(bào)頭,可用來(lái)放棄部分完成的頁(yè)面
End() 讓ASP結(jié)束處理頁(yè)面的腳本,并返回當(dāng)前已創(chuàng)建的內(nèi)容,然后放棄頁(yè)面的任何進(jìn)一步處理
Flush() 發(fā)送IIS緩沖中所有當(dāng)前緩沖頁(yè)給客戶(hù)端。當(dāng)Response.Buffer為T(mén)rue時(shí),可以用來(lái)發(fā)送較大頁(yè)面的部分內(nèi)容給個(gè)別的用戶(hù)
Redirect(“url”) 通過(guò)在響應(yīng)中發(fā)送一個(gè)“302 Object Moved”HTTP報(bào)頭,指示瀏覽器根據(jù)字符串url下載相應(yīng)地址的頁(yè)面
Write(“string”) 在當(dāng)前的HTTP響應(yīng)信息流和IIS緩沖區(qū)寫(xiě)入指定的字符,使之成為返回頁(yè)面的一部分

分享:ASP開(kāi)發(fā)中存儲(chǔ)過(guò)程應(yīng)用全接觸
ASP與存儲(chǔ)過(guò)程(Stored Procedures)的文章不少,但是我懷疑作者們是否真正實(shí)踐過(guò)。我在初學(xué)時(shí)查閱過(guò)大量相關(guān)資料,發(fā)現(xiàn)其中提供的很多方法實(shí)際操作起來(lái)并不是那么回事。對(duì)于簡(jiǎn)單的應(yīng)用,這些資料

來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):ASP教程/更新時(shí)間:2008-08-22
相關(guān)ASP教程