在正式開始學(xué)習(xí) ASP 的內(nèi)建對象和組件之前,先讓我們來認(rèn)識一些基本概念,這將對各位今后的學(xué)習(xí)大有幫助。請看下表 :
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)鍵元素是組件對象模型 (COM) 和 分布組件對象模型 (DCOM)。這些技術(shù)已得到開放組織的 許可,已移植到許多平臺上。 |
ADO | Active 數(shù)據(jù)對象。為基于 Internet 以數(shù)據(jù)為中心的 應(yīng)用程序而優(yōu)化的一組基于對象的數(shù)據(jù)訪問接口。ADO 基于已發(fā)布的規(guī)范并且隨帶在Microsoft Internet Information Server 和 Microsoft Visual InterDev 中。 |
DSN | 數(shù)據(jù)源名稱。開放式數(shù)據(jù)庫接口 (ODBC)用于引 用訪問數(shù)據(jù)所需的驅(qū)動程序或其他信息的邏輯名稱。Internet信 息服務(wù)器用于連接到 ODBC 數(shù)據(jù)源(如 SQL Server 數(shù)據(jù)庫)的 名稱。 |
event: 事件 | 由用戶或 ActiveX 控件產(chǎn)生的程序響應(yīng)的任何 操作。一般事件包括按鍵盤鍵、通過使用鼠標(biāo)單擊選 擇按鈕和其他鼠標(biāo)操作。編程人員編寫響應(yīng)這些操作 的代碼?! ?/td> |
object: 對象 | 在面向?qū)ο缶幊讨?,由?dāng)作完整實體的操作 和數(shù)據(jù)組成的變量。對象是基于特定模型的,在對象 中客戶使用對象的服務(wù)通過由一組方法或相關(guān)函數(shù) 的接口訪問對象的數(shù)據(jù)。然后客戶端可以調(diào)用這些方 法執(zhí)行某中操作。 |
ODBC | 開放式數(shù)據(jù)庫接口。允許應(yīng)用程序從各種跨 平臺數(shù)據(jù)訪問的已有數(shù)據(jù)源標(biāo)準(zhǔn)規(guī)格中訪問數(shù)據(jù)的 應(yīng)用程序編程接口?! ?/td> |
SQL | 結(jié)構(gòu)化查詢語言 Structured Query Language。定義和訪 問關(guān)系型數(shù)據(jù)庫的國際標(biāo)準(zhǔn)?! ?br> |
什么是對象?它可不是指你戀愛的男伴或女伴。在面向?qū)ο缶幊讨?,對象就是指由?dāng)作完整實體的操作和數(shù)據(jù)組成的變量。對象是基于特定模型的,在對象中客戶使用對象的服務(wù)通過由一組方法或相關(guān)函數(shù)的接口訪問對象的數(shù)據(jù),然后客戶端可以調(diào)用這些方法執(zhí)行某中操作。ActiveX 組件是建立 Web 應(yīng)用程序的關(guān)鍵,組件提供了在腳本中執(zhí)行任務(wù)的對象。ActiveX 組件是一個文件,該文件包含執(zhí)行某項或一組任務(wù)的代碼,由于組件可以執(zhí)行公用任務(wù),這樣程序員們就不必自己去創(chuàng)建執(zhí)行這些任務(wù)的代碼??梢岳媒M件作為腳本和基于 Web 應(yīng)用程序的基本構(gòu)造塊。只要知道如何訪問組件提供的對象,即使是位編寫腳本的新手,也可以在不了解組件運(yùn)作方式的情況下編寫腳本??傊?,組件使您不用學(xué)習(xí)編程就能夠編寫強(qiáng)大的腳本。組件是包含在動態(tài)鏈接庫 .dll 或可執(zhí)行文件 .exe 中的可執(zhí)行代碼。組件可以提供一個或多個對象以及對象的方法和屬性。要使用組件提供的對象,請創(chuàng)建對象的實例并將這個新的實例分配變量名。使用 ASP 的 Server.CreateObject 方法可以創(chuàng)建對象的實例,使用腳本語言的變量分配指令可以為對象實例命名。如下例:
Set db=Server.CreateObject("ADODB.Connection")
這里的變量 db 就是 ASP 程序創(chuàng)建的訪問數(shù)據(jù)庫的對象實例。
Active Server Pages 提供了可在腳本中使用的內(nèi)建對象。這些對象使用戶更容易收集通過瀏覽器請求發(fā)送的信息、響應(yīng)瀏覽器以及存儲用戶信息 , 從而使對象開發(fā)者擺脫了很多煩瑣的工作。目前的 ASP 版本總共提供了六個內(nèi)建對象,下面讓我們將通過實例分別來進(jìn)行學(xué)習(xí)。
一、Request 對象
可以使用 Request 對象訪問任何基于 HTTP 請求傳遞的所有信息,包括從 HTML 表格用 POST 方法或 GET 方法傳遞的參數(shù)、cookie 和用戶認(rèn)證。Request 對象使您能夠訪問客戶端發(fā)送給服務(wù)器的二進(jìn)制數(shù)據(jù)。
Request 的語法 :
Request[. 集合 屬性 方法 ]( 變量 )
在這里作者將挑選一些常用的對象語法進(jìn)行分析
1、Form
Form 集合通過使用 POST 方法的表格檢索郵送到 HTTP 請求正文中的表格元素的值。
語法
Request.Form(element)[(index) .Count]
參數(shù)
element 指定集合要檢索的表格元素的名稱。
index 可選參數(shù),使用該參數(shù)可以訪問某參數(shù)中多個值中的一個。它可以是 1 到 Request.Form(parameter).Count 之間的任意整數(shù)。
Count 集合中元素的個數(shù)
Form 集合按請求正文中參數(shù)的名稱來索引。Request.Form(element) 的值是請求正文中所有 element 值的數(shù)組。通過調(diào)用 Request.Form(element).Count 來確定參數(shù)中值的個數(shù)。如果參數(shù)未關(guān)聯(lián)多個值,則計數(shù)為 1。如果找不到參數(shù),計數(shù)為 0。要引用有多個值的表格元素中的單個值,必須指定 index 值。index 參數(shù)可以是從 1 到 Request.Form(element).Count 中的任意數(shù)字。如果引用多個表格參數(shù)中的一個,而未指定 index 值,返回的數(shù)據(jù)將是以逗號分隔的字符串。
可以使用重述符來顯示表格請求中的所有數(shù)據(jù)值。例如,用戶通過指定幾個值填寫表格,見下圖。
對于 hobby 參數(shù),您可以使用下面的腳本檢索這些值?! ? html> < head>< title>< /title>< /head> < body> < p> 請?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 對象可以根據(jù)你在 form 中填入或選擇元素內(nè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 查詢字符串由問號 (?) 后的值指定。如:
< 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ù)有多少個值。
我們也可以使用 QueryString 來達(dá)到與前一個范例相同的功能。只需要將 request.form 部分替換如下:
< %
For Each i In Request.querystring("hobby")
Response.Write i & "< BR>"
Next
%>
3、Cookies
什么是 Cookie?Cookie 其實是一個標(biāo)簽,當(dāng)你訪問一個需要唯一標(biāo)識你的站址的 WEB 站點時,它會在你的硬盤上留下一個標(biāo)記,下一次你訪問同一個站點時,站點的頁面會查找這個標(biāo)記。每個 WEB 站點都有自己的標(biāo)記,標(biāo)記的內(nèi)容可以隨時讀取,但只能由該站點的頁面完成。每個站點的 Cookie 與其他所有站點的 Cookie 存在同一文件夾中的不同文件內(nèi)(你可以在 Windows 的目錄下的 Cookie 文件夾中找到它們)。一個 Cookie 就是一個唯一標(biāo)識客戶的標(biāo)記,Cookie 可以包含在一個對話期或幾個對話期之間某個 WEB 站點的所有頁面共享的信息,使用 Cookie 還可以在頁面之間交換信息。Request 提供的 Cookies 集合允許用戶檢索在 HTTP 請求中發(fā)送的 cookie 的值。這項功能經(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)鍵字。
可以通過包含一個 key 值來訪問 cookie 字典的子關(guān)鍵字。如果訪問 cookie 字典時未指定 key,則所有關(guān)鍵字都會作為單個查詢字符串返回。例如,如果 MyCookie 有兩個關(guān)鍵字 , First 和 Second,而在調(diào)用 Request.Cookies 時并未指定其中任何一個關(guān)鍵字,那么將返回下列字符串。
First=firstkeyvalueSecond=secondkeyvalue
如果客戶端瀏覽器發(fā)送了兩個同名的 cookie,那么 Request.Cookie 將返回其中路徑結(jié)構(gòu)較深的一個。例如,如果有兩個同名的的 cookie,但其中一個的路徑屬性為 /www/ 而另一個為 /www/home/,客戶端瀏覽器同時將兩個 cookie 都發(fā)送到 /www/home/ 目錄中,那么 Request.Cookie 將只返回第二個 cookie。
要確定某個 cookie 是不是 cookie 字典(cookie 有否有關(guān)鍵字),可使用下列腳本。
< %= Request.Cookies("myCookie").HasKeys %>
如果 myCookie 是一個 cookie 字典,則前面的賦值為 TRUE。否則,為 FALSE。下面我們來看看一個 cookie 的應(yīng)用實例:
< %
nickname=request.form("nick")response.cookies("nick")=nickname
' 用 response 對象將用戶名寫入 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>
這其實是一個在基于 WEB 的 BBS 或 CHAT 的 ASP 程序中常用的手法,它將用戶在起始頁面上填入的姓名保存在 cookie 中,這樣后面的程序就可以很容易地調(diào)用該用戶的 nick 了。
4、ServerVariables
大家都知道在瀏覽器中瀏覽網(wǎng)頁的時候使用的傳輸協(xié)議是 HTTP,在 HTTP 的標(biāo)題文件中會記錄一些客戶端的信息,如 : 客戶的 IP 地址等等,有時服務(wù)器端需要根據(jù)不同的客戶端信息做出不同的反映,這時候就需要用 ServerVariables 集合獲取所需信息。
語法
Request.ServerVariables ( 服務(wù)器環(huán)境變量 )
由于服務(wù)器環(huán)境變量較多,作者僅將一些常用的變量在下表中列出 :
ALL_HTTP | 客戶端發(fā)送的所有 HTTP 標(biāo)題文件。 |
CONTENT_LENGTH | 客戶端發(fā)出內(nèi)容的長度。 |
CONTENT_TYPE | 內(nèi)容的數(shù)據(jù)類型。如:“text/html”。同附加信息 的查詢一起使用,如 HTTP 查詢 GET、POST 和 PUT。 |
LOCAL_ADDR | 返回接受請求的服務(wù)器地址。如果在綁定多 個 IP 地址的多宿主機(jī)器上查找請求所使用的地址 時,這條變量非常重要。 |
LOGON_USER | 用戶登錄 Windows NT 的帳號。 |
QUERY_STRING | 查詢 HTTP 請求中問號(?)后的信息。 |
REMOTE_ADDR | 發(fā)出請求的遠(yuǎn)程主機(jī) (client) 的 IP 地址。 |
REMOTE_HOST | 發(fā)出請求的主機(jī) (client) 名稱。如果服務(wù)器無此 信息,它將設(shè)置為空的 MOTE_ADDR 變量。 |
REQUEST_METHOD | 該方法用于提出請求。相當(dāng)于用于 HTTP 的 GET、HEAD、POST等 等。 |
SERVER_NAME | 出現(xiàn)在自引用 URL 中的服務(wù)器主機(jī)名、DNS 化名 或 IP 地址。 |
SERVER_PORT | 發(fā)送請求的端口號。 |
我們可以使用以下腳本打印出所有的服務(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 %>
今天我們詳細(xì)學(xué)習(xí)了 ASP 內(nèi)建對象中的 request 對象,這也是 ASP 程序中使用最頻繁的對象,希望大家在課后多多實踐。