在正式開始學(xué)習(xí) ASP 的內(nèi)建對(duì)象和組件之前,先讓我們來認(rèn)識(shí)一些基本概念,這將對(duì)各位今后的學(xué)習(xí)大有幫助。請(qǐng)看下表 :
Active Server | 隨 Windows NT 交付的服務(wù)器方技術(shù)的集合。這些 技術(shù)為組件應(yīng)用程序管理、數(shù)據(jù)庫訪問、事務(wù)和消息 提供一致的服務(wù)器方組件、腳本模型和一套集成的系 統(tǒng)服務(wù)?! ?/td> |
Active Server Pages (ASP) | 在服務(wù)器上運(yùn)行 ActiveX 腳本和 ActiveX 組件的服 務(wù)器方腳本環(huán)境。開發(fā)人員可以將腳本和組件結(jié)合在 一起創(chuàng)建基于 Web 的應(yīng)用程序。 |
ActiveX | 允許開發(fā)人員為 World Wide Web 創(chuàng)建交互式組件的 內(nèi)涵豐富的Microsoft 技術(shù)術(shù)語。允許用不同語言編寫的軟 件組件在網(wǎng)絡(luò)環(huán)境中一起工作的一組不依賴語言的 互操作技術(shù)。ActiveX 的關(guān)鍵元素是組件對(duì)象模型 (COM) 和 分布組件對(duì)象模型 (DCOM)。這些技術(shù)已得到開放組織的 許可,已移植到許多平臺(tái)上。 |
ADO | Active 數(shù)據(jù)對(duì)象。為基于 Internet 以數(shù)據(jù)為中心的 應(yīng)用程序而優(yōu)化的一組基于對(duì)象的數(shù)據(jù)訪問接口。ADO 基于已發(fā)布的規(guī)范并且隨帶在Microsoft Internet Information Server 和 Microsoft Visual InterDev 中。 |
DSN | 數(shù)據(jù)源名稱。開放式數(shù)據(jù)庫接口 (ODBC)用于引 用訪問數(shù)據(jù)所需的驅(qū)動(dòng)程序或其他信息的邏輯名稱。Internet信 息服務(wù)器用于連接到 ODBC 數(shù)據(jù)源(如 SQL Server 數(shù)據(jù)庫)的 名稱。 |
event: 事件 | 由用戶或 ActiveX 控件產(chǎn)生的程序響應(yīng)的任何 操作。一般事件包括按鍵盤鍵、通過使用鼠標(biāo)單擊選 擇按鈕和其他鼠標(biāo)操作。編程人員編寫響應(yīng)這些操作 的代碼。 |
object: 對(duì)象 | 在面向?qū)ο缶幊讨?,由?dāng)作完整實(shí)體的操作 和數(shù)據(jù)組成的變量。對(duì)象是基于特定模型的,在對(duì)象 中客戶使用對(duì)象的服務(wù)通過由一組方法或相關(guān)函數(shù) 的接口訪問對(duì)象的數(shù)據(jù)。然后客戶端可以調(diào)用這些方 法執(zhí)行某中操作。 |
ODBC | 開放式數(shù)據(jù)庫接口。允許應(yīng)用程序從各種跨 平臺(tái)數(shù)據(jù)訪問的已有數(shù)據(jù)源標(biāo)準(zhǔn)規(guī)格中訪問數(shù)據(jù)的 應(yīng)用程序編程接口。 |
SQL | 結(jié)構(gòu)化查詢語言 Structured Query Language。定義和訪 問關(guān)系型數(shù)據(jù)庫的國(guó)際標(biāo)準(zhǔn)?! ?br> |
什么是對(duì)象?它可不是指你戀愛的男伴或女伴。在面向?qū)ο缶幊讨?,?duì)象就是指由當(dāng)作完整實(shí)體的操作和數(shù)據(jù)組成的變量。對(duì)象是基于特定模型的,在對(duì)象中客戶使用對(duì)象的服務(wù)通過由一組方法或相關(guān)函數(shù)的接口訪問對(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ù)的代碼。可以利用組件作為腳本和基于 Web 應(yīng)用程序的基本構(gòu)造塊。只要知道如何訪問組件提供的對(duì)象,即使是位編寫腳本的新手,也可以在不了解組件運(yùn)作方式的情況下編寫腳本??傊?,組件使您不用學(xué)習(xí)編程就能夠編寫強(qiáng)大的腳本。組件是包含在動(dòng)態(tài)鏈接庫 .dll 或可執(zhí)行文件 .exe 中的可執(zhí)行代碼。組件可以提供一個(gè)或多個(gè)對(duì)象以及對(duì)象的方法和屬性。要使用組件提供的對(duì)象,請(qǐng)創(chuàng)建對(duì)象的實(shí)例并將這個(gè)新的實(shí)例分配變量名。使用 ASP 的 Server.CreateObject 方法可以創(chuàng)建對(duì)象的實(shí)例,使用腳本語言的變量分配指令可以為對(duì)象實(shí)例命名。如下例:
Set db=Server.CreateObject("ADODB.Connection")
這里的變量 db 就是 ASP 程序創(chuàng)建的訪問數(shù)據(jù)庫的對(duì)象實(shí)例。
Active Server Pages 提供了可在腳本中使用的內(nèi)建對(duì)象。這些對(duì)象使用戶更容易收集通過瀏覽器請(qǐng)求發(fā)送的信息、響應(yīng)瀏覽器以及存儲(chǔ)用戶信息 , 從而使對(duì)象開發(fā)者擺脫了很多煩瑣的工作。目前的 ASP 版本總共提供了六個(gè)內(nèi)建對(duì)象,下面讓我們將通過實(shí)例分別來進(jìn)行學(xué)習(xí)。
一、Request 對(duì)象
可以使用 Request 對(duì)象訪問任何基于 HTTP 請(qǐng)求傳遞的所有信息,包括從 HTML 表格用 POST 方法或 GET 方法傳遞的參數(shù)、cookie 和用戶認(rèn)證。Request 對(duì)象使您能夠訪問客戶端發(fā)送給服務(wù)器的二進(jìn)制數(shù)據(jù)。
Request 的語法 :
Request[. 集合 屬性 方法 ]( 變量 )
在這里作者將挑選一些常用的對(duì)象語法進(jìn)行分析
1、Form
Form 集合通過使用 POST 方法的表格檢索郵送到 HTTP 請(qǐng)求正文中的表格元素的值。
語法
Request.Form(element)[(index) .Count]
參數(shù)
element 指定集合要檢索的表格元素的名稱。
index 可選參數(shù),使用該參數(shù)可以訪問某參數(shù)中多個(gè)值中的一個(gè)。它可以是 1 到 Request.Form(parameter).Count 之間的任意整數(shù)。
Count 集合中元素的個(gè)數(shù)
Form 集合按請(qǐng)求正文中參數(shù)的名稱來索引。Request.Form(element) 的值是請(qǐng)求正文中所有 element 值的數(shù)組。通過調(diào)用 Request.Form(element).Count 來確定參數(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)分隔的字符串。
可以使用重述符來顯示表格請(qǐng)求中的所有數(shù)據(jù)值。例如,用戶通過指定幾個(gè)值填寫表格,見下圖。
對(duì)于 hobby 參數(shù),您可以使用下面的腳本檢索這些值?! ? html> < head>< title>< /title>< /head> < body> < p> 請(qǐng)?zhí)顚懩愕膼酆?< /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è)顯示出來。
當(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 查詢字符串由問號(hào) (?) 后的值指定。如:
< A HREF= "example.asp?string=this is a sample">string sample< /A>
生成值為 "this is a sample" 的變量名字符串。通過發(fā)送表格或由用戶在其瀏覽器的地址框中鍵入查詢也可以生成查詢字符串。
語法
Request.QueryString(variable)[(index) .Count]
QueryString 集合可以讓您以名稱檢索 QUERY_STRING 變量。Request.QueryString( 參數(shù) ) 的值是出現(xiàn)在 QUERY_STRING 中所有參數(shù)的值的數(shù)組。通過調(diào)用Request.QueryString(parameter).Count 可以確定參數(shù)有多少個(gè)值。
我們也可以使用 QueryString 來達(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)你訪問一個(gè)需要唯一標(biāo)識(shí)你的站址的 WEB 站點(diǎn)時(shí),它會(huì)在你的硬盤上留下一個(gè)標(biāo)記,下一次你訪問同一個(gè)站點(diǎn)時(shí),站點(diǎn)的頁面會(huì)查找這個(gè)標(biāo)記。每個(gè) WEB 站點(diǎn)都有自己的標(biāo)記,標(biāo)記的內(nèi)容可以隨時(shí)讀取,但只能由該站點(diǎn)的頁面完成。每個(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)的所有頁面共享的信息,使用 Cookie 還可以在頁面之間交換信息。Request 提供的 Cookies 集合允許用戶檢索在 HTTP 請(qǐng)求中發(fā)送的 cookie 的值。這項(xiàng)功能經(jīng)常被使用在要求認(rèn)證客戶密碼以及電子公告板、WEB 聊天室等 ASP 程序中。
語法
Request.Cookies(cookie)[(key) .attribute]
參數(shù)
cookie 指定要檢索其值的 cookie。
key 可選參數(shù),用于從 cookie 字典中檢索子關(guān)鍵字的值。
attribe 指定 cookie 自身的有關(guān)信息。如:HasKeys 只讀,指定 cookie 是否包含關(guān)鍵字。
可以通過包含一個(gè) key 值來訪問 cookie 字典的子關(guān)鍵字。如果訪問 cookie 字典時(shí)未指定 key,則所有關(guān)鍵字都會(huì)作為單個(gè)查詢字符串返回。例如,如果 MyCookie 有兩個(gè)關(guān)鍵字 , First 和 Second,而在調(diào)用 Request.Cookies 時(shí)并未指定其中任何一個(gè)關(guān)鍵字,那么將返回下列字符串。
First=firstkeyvalueSecond=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。下面我們來看看一個(gè) cookie 的應(yīng)用實(shí)例:
< %
nickname=request.form("nick")response.cookies("nick")=nickname
' 用 response 對(duì)象將用戶名寫入 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 程序中常用的手法,它將用戶在起始頁面上填入的姓名保存在 cookie 中,這樣后面的程序就可以很容易地調(diào)用該用戶的 nick 了。
4、ServerVariables
大家都知道在瀏覽器中瀏覽網(wǎng)頁的時(shí)候使用的傳輸協(xié)議是 HTTP,在 HTTP 的標(biāo)題文件中會(huì)記錄一些客戶端的信息,如 : 客戶的 IP 地址等等,有時(shí)服務(wù)器端需要根據(jù)不同的客戶端信息做出不同的反映,這時(shí)候就需要用 ServerVariables 集合獲取所需信息。
語法
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)求中問號(hào)(?)后的信息。 |
REMOTE_ADDR | 發(fā)出請(qǐng)求的遠(yuǎn)程主機(jī) (client) 的 IP 地址。 |
REMOTE_HOST | 發(fā)出請(qǐng)求的主機(jī) (client) 名稱。如果服務(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í)踐。