明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP內(nèi)建對(duì)象Request

[摘要]在正式開(kāi)始學(xué)習(xí) ASP 的內(nèi)建對(duì)象和組件之前,先讓我們來(lái)認(rèn)識(shí)一些基本概念,這將對(duì)各位今后的學(xué)習(xí)大有幫助。請(qǐng)看下表 : Active Server 隨 Windows NT 交付的服務(wù)器方技術(shù)的集合。這些 技術(shù)為組件應(yīng)用程序管理、數(shù)據(jù)庫(kù)訪問(wèn)、事務(wù)和消息 提供一致的服務(wù)器方組件、腳本模型和一套集成的系...

在正式開(kāi)始學(xué)習(xí) ASP 的內(nèi)建對(duì)象和組件之前,先讓我們來(lái)認(rèn)識(shí)一些基本概念,這將對(duì)各位今后的學(xué)習(xí)大有幫助。請(qǐng)看下表 :

Active Server 隨 Windows NT 交付的服務(wù)器方技術(shù)的集合。這些 技術(shù)為組件應(yīng)用程序管理、數(shù)據(jù)庫(kù)訪問(wèn)、事務(wù)和消息 提供一致的服務(wù)器方組件、腳本模型和一套集成的系 統(tǒng)服務(wù)。
Active Server Pages (ASP) 在服務(wù)器上運(yùn)行 ActiveX 腳本和 ActiveX 組件的服 務(wù)器方腳本環(huán)境。開(kāi)發(fā)人員可以將腳本和組件結(jié)合在 一起創(chuàng)建基于 Web 的應(yīng)用程序。
ActiveX 允許開(kāi)發(fā)人員為 World Wide Web 創(chuàng)建交互式組件的 內(nèi)涵豐富的Microsoft 技術(shù)術(shù)語(yǔ)。允許用不同語(yǔ)言編寫(xiě)的軟 件組件在網(wǎng)絡(luò)環(huán)境中一起工作的一組不依賴語(yǔ)言的 互操作技術(shù)。ActiveX 的關(guān)鍵元素是組件對(duì)象模型 (COM) 和 分布組件對(duì)象模型 (DCOM)。這些技術(shù)已得到開(kāi)放組織的 許可,已移植到許多平臺(tái)上。
ADO Active 數(shù)據(jù)對(duì)象。為基于 Internet 以數(shù)據(jù)為中心的 應(yīng)用程序而優(yōu)化的一組基于對(duì)象的數(shù)據(jù)訪問(wèn)接口。ADO 基于已發(fā)布的規(guī)范并且隨帶在Microsoft Internet Information Server 和 Microsoft Visual InterDev 中。
DSN 數(shù)據(jù)源名稱。開(kāi)放式數(shù)據(jù)庫(kù)接口 (ODBC)用于引 用訪問(wèn)數(shù)據(jù)所需的驅(qū)動(dòng)程序或其他信息的邏輯名稱。Internet信 息服務(wù)器用于連接到 ODBC 數(shù)據(jù)源(如 SQL Server 數(shù)據(jù)庫(kù))的 名稱。
event: 事件 由用戶或 ActiveX 控件產(chǎn)生的程序響應(yīng)的任何 操作。一般事件包括按鍵盤(pán)鍵、通過(guò)使用鼠標(biāo)單擊選 擇按鈕和其他鼠標(biāo)操作。編程人員編寫(xiě)響應(yīng)這些操作 的代碼。
object: 對(duì)象 在面向?qū)ο缶幊讨,由?dāng)作完整實(shí)體的操作 和數(shù)據(jù)組成的變量。對(duì)象是基于特定模型的,在對(duì)象 中客戶使用對(duì)象的服務(wù)通過(guò)由一組方法或相關(guān)函數(shù) 的接口訪問(wèn)對(duì)象的數(shù)據(jù)。然后客戶端可以調(diào)用這些方 法執(zhí)行某中操作。
ODBC 開(kāi)放式數(shù)據(jù)庫(kù)接口。允許應(yīng)用程序從各種跨 平臺(tái)數(shù)據(jù)訪問(wèn)的已有數(shù)據(jù)源標(biāo)準(zhǔn)規(guī)格中訪問(wèn)數(shù)據(jù)的 應(yīng)用程序編程接口。
SQL 結(jié)構(gòu)化查詢語(yǔ)言 Structured Query Language。定義和訪 問(wèn)關(guān)系型數(shù)據(jù)庫(kù)的國(guó)際標(biāo)準(zhǔn)。

什么是對(duì)象?它可不是指你戀愛(ài)的男伴或女伴。在面向?qū)ο缶幊讨校瑢?duì)象就是指由當(dāng)作完整實(shí)體的操作和數(shù)據(jù)組成的變量。對(duì)象是基于特定模型的,在對(duì)象中客戶使用對(duì)象的服務(wù)通過(guò)由一組方法或相關(guān)函數(shù)的接口訪問(wèn)對(duì)象的數(shù)據(jù),然后客戶端可以調(diào)用這些方法執(zhí)行某中操作。ActiveX 組件是建立 Web 應(yīng)用程序的關(guān)鍵,組件提供了在腳本中執(zhí)行任務(wù)的對(duì)象。ActiveX 組件是一個(gè)文件,該文件包含執(zhí)行某項(xiàng)或一組任務(wù)的代碼,由于組件可以執(zhí)行公用任務(wù),這樣程序員們就不必自己去創(chuàng)建執(zhí)行這些任務(wù)的代碼?梢岳媒M件作為腳本和基于 Web 應(yīng)用程序的基本構(gòu)造塊。只要知道如何訪問(wèn)組件提供的對(duì)象,即使是位編寫(xiě)腳本的新手,也可以在不了解組件運(yùn)作方式的情況下編寫(xiě)腳本?傊M件使您不用學(xué)習(xí)編程就能夠編寫(xiě)強(qiáng)大的腳本。組件是包含在動(dòng)態(tài)鏈接庫(kù) .dll 或可執(zhí)行文件 .exe 中的可執(zhí)行代碼。組件可以提供一個(gè)或多個(gè)對(duì)象以及對(duì)象的方法和屬性。要使用組件提供的對(duì)象,請(qǐng)創(chuàng)建對(duì)象的實(shí)例并將這個(gè)新的實(shí)例分配變量名。使用 ASP 的 Server.CreateObject 方法可以創(chuàng)建對(duì)象的實(shí)例,使用腳本語(yǔ)言的變量分配指令可以為對(duì)象實(shí)例命名。如下例:

Set db=Server.CreateObject("ADODB.Connection")

這里的變量 db 就是 ASP 程序創(chuàng)建的訪問(wèn)數(shù)據(jù)庫(kù)的對(duì)象實(shí)例。

Active Server Pages 提供了可在腳本中使用的內(nèi)建對(duì)象。這些對(duì)象使用戶更容易收集通過(guò)瀏覽器請(qǐng)求發(fā)送的信息、響應(yīng)瀏覽器以及存儲(chǔ)用戶信息 , 從而使對(duì)象開(kāi)發(fā)者擺脫了很多煩瑣的工作。目前的 ASP 版本總共提供了六個(gè)內(nèi)建對(duì)象,下面讓我們將通過(guò)實(shí)例分別來(lái)進(jìn)行學(xué)習(xí)。

一、Request 對(duì)象

可以使用 Request 對(duì)象訪問(wèn)任何基于 HTTP 請(qǐng)求傳遞的所有信息,包括從 HTML 表格用 POST 方法或 GET 方法傳遞的參數(shù)、cookie 和用戶認(rèn)證。Request 對(duì)象使您能夠訪問(wèn)客戶端發(fā)送給服務(wù)器的二進(jìn)制數(shù)據(jù)。

Request 的語(yǔ)法 :

Request[. 集合 屬性 方法 ]( 變量 )

在這里作者將挑選一些常用的對(duì)象語(yǔ)法進(jìn)行分析

1、Form

Form 集合通過(guò)使用 POST 方法的表格檢索郵送到 HTTP 請(qǐng)求正文中的表格元素的值。

語(yǔ)法

Request.Form(element)[(index) .Count]

參數(shù)

element 指定集合要檢索的表格元素的名稱。

index 可選參數(shù),使用該參數(shù)可以訪問(wèn)某參數(shù)中多個(gè)值中的一個(gè)。它可以是 1 到 Request.Form(parameter).Count 之間的任意整數(shù)。

Count 集合中元素的個(gè)數(shù)

Form 集合按請(qǐng)求正文中參數(shù)的名稱來(lái)索引。Request.Form(element) 的值是請(qǐng)求正文中所有 element 值的數(shù)組。通過(guò)調(diào)用 Request.Form(element).Count 來(lái)確定參數(shù)中值的個(gè)數(shù)。如果參數(shù)未關(guān)聯(lián)多個(gè)值,則計(jì)數(shù)為 1。如果找不到參數(shù),計(jì)數(shù)為 0。要引用有多個(gè)值的表格元素中的單個(gè)值,必須指定 index 值。Index 參數(shù)可以是從 1到Request.Form(element).Count 中的任意數(shù)字。如果引用多個(gè)表格參數(shù)中的一個(gè),而未指定 index 值,返回的數(shù)據(jù)將是以逗號(hào)分隔的字符串。

可以使用重述符來(lái)顯示表格請(qǐng)求中的所有數(shù)據(jù)值。例如,用戶通過(guò)指定幾個(gè)值填寫(xiě)表格,見(jiàn)下圖。



對(duì)于 hobby 參數(shù),您可以使用下面的腳本檢索這些值。< html> < head>< title>< /title>< /head> < body> < p> 請(qǐng)?zhí)顚?xiě)你的愛(ài)好 < /p> < form method="POST" action="form.asp"> < p>< input type="text" name="hobby" size="20">< br> < input type="checkbox" name="hobby" value=" 足球 "> 足球 < input type="checkbox" name="hobby" value=" 乒乓球 "> 乒乓球 < /p> < p>< input type="submit" value=" 發(fā)送 " name="B1">< input type="reset" value=" 重填 " name="B2">< /p> < /form> < % For Each I In Request.Form("hobby") Response.Write I & "< BR>" Next %> < /body>< /html>

將以上代碼剪貼到記事簿中(注意將“< ”后面的空格去掉),保存為 form.asp 文件并運(yùn)行,request 對(duì)象可以根據(jù)你在 form 中填入或選擇元素內(nèi)容的不同將元素逐個(gè)顯示出來(lái)。

當(dāng)然使用 For...Next 循環(huán)也可以生成同樣的輸出,如下所示 :

< %

For I = 1 To Request.Form("hobby").Count

Response.Write Request.Form("hobby")(I) & "< BR>"Next

%>

2、QueryString

QueryString 集合檢索 HTTP 查詢字符串中變量的值 ,HTTP 查詢字符串由問(wèn)號(hào) (?) 后的值指定。如:

< A HREF= "example.asp?string=this is a sample">string sample< /A>

生成值為 "this is a sample" 的變量名字符串。通過(guò)發(fā)送表格或由用戶在其瀏覽器的地址框中鍵入查詢也可以生成查詢字符串。

語(yǔ)法

Request.QueryString(variable)[(index) .Count]

QueryString 集合可以讓您以名稱檢索 QUERY_STRING 變量。Request.QueryString( 參數(shù) ) 的值是出現(xiàn)在 QUERY_STRING 中所有參數(shù)的值的數(shù)組。通過(guò)調(diào)用Request.QueryString(parameter).Count 可以確定參數(shù)有多少個(gè)值。

我們也可以使用 QueryString 來(lái)達(dá)到與前一個(gè)范例相同的功能。只需要將 request.form 部分替換如下:

< %

For Each I In Request.querystring("hobby")

Response.Write I & "< BR>"

Next

%>

3、Cookies

什么是 Cookie?Cookie 其實(shí)是一個(gè)標(biāo)簽,當(dāng)你訪問(wèn)一個(gè)需要唯一標(biāo)識(shí)你的站址的 WEB 站點(diǎn)時(shí),它會(huì)在你的硬盤(pán)上留下一個(gè)標(biāo)記,下一次你訪問(wèn)同一個(gè)站點(diǎn)時(shí),站點(diǎn)的頁(yè)面會(huì)查找這個(gè)標(biāo)記。每個(gè) WEB 站點(diǎn)都有自己的標(biāo)記,標(biāo)記的內(nèi)容可以隨時(shí)讀取,但只能由該站點(diǎn)的頁(yè)面完成。每個(gè)站點(diǎn)的 Cookie 與其他所有站點(diǎn)的 Cookie 存在同一文件夾中的不同文件內(nèi)(你可以在 Windows 的目錄下的 Cookie 文件夾中找到它們)。一個(gè) Cookie 就是一個(gè)唯一標(biāo)識(shí)客戶的標(biāo)記,Cookie 可以包含在一個(gè)對(duì)話期或幾個(gè)對(duì)話期之間某個(gè) WEB 站點(diǎn)的所有頁(yè)面共享的信息,使用 Cookie 還可以在頁(yè)面之間交換信息。Request 提供的 Cookies 集合允許用戶檢索在 HTTP 請(qǐng)求中發(fā)送的 cookie 的值。這項(xiàng)功能經(jīng)常被使用在要求認(rèn)證客戶密碼以及電子公告板、WEB 聊天室等 ASP 程序中。

語(yǔ)法

Request.Cookies(cookie)[(key) .attribute]

參數(shù)

cookie 指定要檢索其值的 cookie。

key 可選參數(shù),用于從 cookie 字典中檢索子關(guān)鍵字的值。

attribe 指定 cookie 自身的有關(guān)信息。如:HasKeys 只讀,指定 cookie 是否包含關(guān)鍵字。

可以通過(guò)包含一個(gè) key 值來(lái)訪問(wèn) cookie 字典的子關(guān)鍵字。如果訪問(wèn) cookie 字典時(shí)未指定 key,則所有關(guān)鍵字都會(huì)作為單個(gè)查詢字符串返回。例如,如果 MyCookie 有兩個(gè)關(guān)鍵字 ,First 和Second,而在調(diào)用 Request.Cookies 時(shí)并未指定其中任何一個(gè)關(guān)鍵字,那么將返回下列字符串。

First=firstkeyvalue&Second=secondkeyvalue

如果客戶端瀏覽器發(fā)送了兩個(gè)同名的 cookie,那么 Request.Cookie 將返回其中路徑結(jié)構(gòu)較深的一個(gè)。例如,如果有兩個(gè)同名的的 cookie,但其中一個(gè)的路徑屬性為 /www/ 而另一個(gè)為 /www/home/,客戶端瀏覽器同時(shí)將兩個(gè) cookie 都發(fā)送到 /www/home/ 目錄中,那么 Request.Cookie 將只返回第二個(gè) cookie。

要確定某個(gè) cookie 是不是 cookie 字典(cookie 有否有關(guān)鍵字),可使用下列腳本。

< %= Request.Cookies("myCookie").HasKeys %>

如果 myCookie 是一個(gè) cookie 字典,則前面的賦值為 TRUE。否則,為 FALSE。下面我們來(lái)看看一個(gè) cookie 的應(yīng)用實(shí)例:

< %

nickname=request.form("nick")response.cookies("nick")=nickname ' 用 response 對(duì)象將用戶名寫(xiě)入 Cookie 之中 response.write " 歡迎 "&request.cookies("nick")&" 光臨小站!"

%>

< html>< head>< meta http-equiv="Content-Type" content="text/html; charset=gb2312">

< title>cookie< /title>

< meta name="GENERATOR" content="Microsoft FrontPage 3.0">< /head>

< body>

< form method="POST" action="cookie.asp">

< p>< input type="text" name="nick" size="20">

< input type="submit" value=" 發(fā)送 " name="B1">< input type="reset" value=" 重填 " name="B2">< /p>< /form>

< /body>< /html>

這其實(shí)是一個(gè)在基于 WEB 的 BBS 或 CHAT 的 ASP 程序中常用的手法,它將用戶在起始頁(yè)面上填入的姓名保存在 cookie 中,這樣后面的程序就可以很容易地調(diào)用該用戶的 nick 了。

4、ServerVariables

大家都知道在瀏覽器中瀏覽網(wǎng)頁(yè)的時(shí)候使用的傳輸協(xié)議是 HTTP,在 HTTP 的標(biāo)題文件中會(huì)記錄一些客戶端的信息,如 : 客戶的 IP 地址等等,有時(shí)服務(wù)器端需要根據(jù)不同的客戶端信息做出不同的反映,這時(shí)候就需要用 ServerVariables 集合獲取所需信息。

語(yǔ)法

Request.ServerVariables ( 服務(wù)器環(huán)境變量 )

由于服務(wù)器環(huán)境變量較多,作者僅將一些常用的變量在下表中列出 :

ALL_HTTP 客戶端發(fā)送的所有 HTTP 標(biāo)題文件。
CONTENT_LENGTH 客戶端發(fā)出內(nèi)容的長(zhǎng)度。
CONTENT_TYPE 內(nèi)容的數(shù)據(jù)類型。如:“text/html”。同附加信息 的查詢一起使用,如 HTTP 查詢 GET、POST 和 PUT。
LOCAL_ADDR 返回接受請(qǐng)求的服務(wù)器地址。如果在綁定多 個(gè) IP 地址的多宿主機(jī)器上查找請(qǐng)求所使用的地址 時(shí),這條變量非常重要。
LOGON_USER 用戶登錄 Windows NT 的帳號(hào)。
QUERY_STRING 查詢 HTTP 請(qǐng)求中問(wèn)號(hào)(?)后的信息。
REMOTE_ADDR 發(fā)出請(qǐng)求的遠(yuǎn)程主機(jī) (client) 的 IP 地址。
REMOTE_HOST 發(fā)出請(qǐng)求的主機(jī) (client) 名稱。如果服務(wù)器無(wú)此 信息,它將設(shè)置為空的MOTE_ADDR 變量。
REQUEST_METHOD 該方法用于提出請(qǐng)求。相當(dāng)于用于 HTTP 的 GET、HEAD、POST等 等。
SERVER_NAME 出現(xiàn)在自引用 URL 中的服務(wù)器主機(jī)名、DNS 化名 或 IP 地址。
SERVER_PORT 發(fā)送請(qǐng)求的端口號(hào)。

我們可以使用以下腳本打印出所有的服務(wù)器環(huán)境變量。

< TABLE>

< TR>< TD>< B>Server Variable< /B>< /TD>< TD>< B>Value< /B>< /TD>< /TR>< % For Each name In Request.ServerVariables %>

< TR>< TD> < %= name %> < /TD>< TD> < %= Request.ServerVariables(name) %> < /TD>< /TR>< /TABLE>

< % Next %>

今天我們?cè)敿?xì)學(xué)習(xí)了 ASP 內(nèi)建對(duì)象中的 request 對(duì)象,這也是 ASP 程序中使用最頻繁的對(duì)象,希望大家在課后多多實(shí)踐。
(出處:熱點(diǎn)網(wǎng)絡(luò))