ASP的對象結(jié)構(gòu)
現(xiàn)在我們要系統(tǒng)地了解一下ASP的對象結(jié)構(gòu),然后,大家就可以舉一反三,不用我過多解釋每一個例子了。這一部分,可能有些困難。
一、Request
Request對象把客戶信息保存在幾個集合中,供ASP應(yīng)用使用。通用的訪問方法為:Request.Collection("membername")
當(dāng)你不指定集合名時,以(1)QueryString,(2)Form,(3)Cookie和(4)ServerVariable
的順序搜索所有集合,當(dāng)發(fā)現(xiàn)第一個匹配的變量時,就認(rèn)定他是要引用的成員。當(dāng)然,為了提高效率,你最好顯式指定是那個集合中的成員。
QueryString集合
當(dāng)HTML表單使用GET方法向ASP文件傳遞數(shù)據(jù)時,數(shù)據(jù)被保存在集合QueryString中。其成員可以具有與之相關(guān)的多個值,也就是說,同一個表單中,多個元素可以有相同的名字,下面的代碼訪問這些數(shù)據(jù):
<%For each item in Request.QueryString("Name")
Response.write Item &"<br>"
Next %>
Form集合
當(dāng)表單用POST方法時,數(shù)據(jù)被保存在Form集合中。
ServerVariable集合
保存了隨HTTP請求一起傳送HTTP頭的信息,可以通過他獲取有關(guān)瀏覽器的信息,主要成員有:
REMOTE_ADDR 遠(yuǎn)程主機IP地址
REMOTE_HOST 遠(yuǎn)程主機名稱
REMOTE_USER 客戶名稱
REQUEST_METHOD 請求方法(如POST,GET,HEAD)
SERVER_NAME 服務(wù)器名
SERVER_PROTOCOL 服務(wù)器版本號(如HTTP/1。0)
二、Response對象
用來控制向客戶返回的HTML的內(nèi)容,有若干屬性和方法。下面介紹我認(rèn)為重要的:
Buffer屬性
如果為True,則Response的內(nèi)容要寫入緩沖區(qū),當(dāng)腳本處理完時再發(fā)給客戶。
Status屬性
傳遞HTTP Response報文的狀態(tài)。服務(wù)器返回的狀態(tài)代碼由三位數(shù)字組成,可以用于測試階段和轉(zhuǎn)換控制到其他站點(即Forward)
Write方法
向客戶輸出HTML,可以是任何合法的HTML腳本。
Redirect方法
使瀏覽器重新定向到另外一個URL上,如:
<%browsetype=Request.ServerVariables("HTTP_USER_AGENT")
IF Left(browsetype,11)="Mozilla/2.0" then
Response.Redirect "FancyStart.asp"
Else
Response.Redirect "OldStart.asp"
End if%>
Clear方法
如果設(shè)Buffer屬性為True,則Clear方法清楚所有緩沖區(qū)內(nèi)容。
Flush方法
將緩沖內(nèi)容立即發(fā)送給客戶。
End方法
當(dāng)Active Server遇到該方法時,立即停止處理ASP文件,如果有緩沖,立即發(fā)送內(nèi)容到客戶。
BinaryWrite方法
輸出二進制數(shù)據(jù)
三、Request對象和Response對象的Cookies集合
1.寫入Cookies
Response.Cookies("Cookie名稱")[("鍵名稱").屬性]=值
如果該Cookie已經(jīng)存在,則值被新值替代,否則,創(chuàng)建該cookie
例如:
<% Response.Cookies("NewCookie")="New Cookie Value" %>
2.讀取Cookies
如:
<%=Request.Cookies("NewCookie")%>
Cookie還有一些屬性,請參見有關(guān)資料。
四、Application對象
Active Server應(yīng)用程序是虛擬目錄及其子目錄下的所有文件,即一個WEB?梢允褂肁pplication對象在應(yīng)用軟件的所有用戶中共享信息,并可以在服務(wù)器運行期間持久地保存數(shù)據(jù)。他有一些控制訪問應(yīng)用層數(shù)據(jù)的方法和事件。
Application本身沒有內(nèi)置屬性,可以有用戶定義:Application("屬性名")=值
保存在Application對象中的數(shù)據(jù)可以被Application的所有用戶讀取。如用來做訪問記數(shù):Application("aVisits")=Application("aVisits")+1
方法有兩個:
Lock:
當(dāng)用戶調(diào)用Lock時,只有當(dāng)前用戶能夠編輯或增加Application對象的屬性。
Unlock:
一定要記住,調(diào)用了Lock,完成時一定要調(diào)用Unlock.
事件也有兩個:
Application_OnStart事件:應(yīng)用程序啟動時調(diào)用。
Application_OnStart事件:應(yīng)用程序終止時調(diào)用。
這兩個事件再加上Session的兩個事件的處理程序都放在文件Global.asp中,一個Web應(yīng)用只有一個Global.asa文件,且放在該應(yīng)用的根目錄下。一個Global.asp文件的例子如下:
<Script Language="VBScript" Runat="Server">
Sub Application_OnStart
Dim laChats(15)
Application("gaChats")=maChats
Application("giCounter")=0
End Sub
五、Session對象
Active Server使用會話設(shè)置為使用應(yīng)用程序的單個用戶持久保持?jǐn)?shù)據(jù)。當(dāng)用戶請求Active Server應(yīng)用程序中ASP文件的URL時,要啟動Session。在缺省情況下,如果沒有用戶請求,則服務(wù)器只保留Session20分鐘。用戶也可以通過設(shè)Session的屬性TimeOut來改變。或顯示地調(diào)用Session.Abandon方法來釋放Session對象。
SessionID屬性
唯一標(biāo)識一個會話的標(biāo)識符。
TimeOut屬性
定義Session保留的時限,單位為分鐘,如Session.TimeOut=10
像Application一樣,Session也可由用戶來定義屬性。
Session的唯一方法是Abandon,用來取消用戶的Session對象,并釋放其占用的服務(wù)器資源。如:<%Session.Abandon%>
事件有Session_OnStart和Session_OnEnd,其處理程序應(yīng)放在文件Glabal.asa中。
六、Server對象
1.HTMLEncode方法
對特定的字符串進行HTML編碼,如你本來要顯示下列內(nèi)容:
The Underline tag(<u></u>) is used to underline the surrounded text.
但很可能實際顯示成:
The Underline tag() is used to underline the surrounded text.
為了避免這種情況,可以調(diào)用Server對象的HTMLEncode方法,如:
<%
Response.Write Server.HTMLEncode("The Underline tag(<U></U>)
is used to underline the surrounded text.")
%>
2.URLEncode方法
根據(jù)URL規(guī)則對字符串進行編碼。當(dāng)字符串?dāng)?shù)據(jù)以URL格式傳遞到服務(wù)器時,串中間不能有空格,不能有特殊字符,這時,你就必須用URL編碼。
3.CreateObject方法
用于創(chuàng)建已注冊到服務(wù)器機器上的ActiveX組件例程,這恐怕是最重要的一個方法了:
句法如下:
Server.CreateObject("ComponentName")
可以作為例程啟動的組件可以是ActiveX能夠使用的所有內(nèi)置組件,實際上是存在于服務(wù)器上的任何ActiveX組件。比如,要使用金融計算,步驟如下:
1.創(chuàng)建對象
<%
set x=server.createobject("extend.financial");
%>
2.調(diào)用對象的方法
<%
set x=server.createobject("extend.financial")
response.write Format(x.futval(.07/12,200,-500),"###,###,##0.00")
%>
3.釋放例程
<%
set x=Nothing
%>
七、FileSystem和TextStream對象
FileSystem和TextStream對象可用于建立對文件系統(tǒng)的訪問,并提供順序訪問文件的機制。FileSystem沒有屬性,只有兩個方法,第一個方法是CreateTextFile方法,可以在宿主機上創(chuàng)建新的文本文件,并返回TextStream對象以提供對新創(chuàng)建文件的訪問機制。第二個是OpenTextFile方法,用于打開文本文件供順序訪問并返回一個TextStream對象。如:
<%
set fsFilesys=CreateObject("Scripting.FileSystemObject")
set tsCoffee=fsFilesys.CreateTextFile("c:\coffe.txt",True)
tsCoffee.WriteLine("Man,I Could use some coffee.")
tsCoffee.Close
%>
TextStream對象的使用有:
AtEndOfLine:如果文件當(dāng)前字符處在行的末尾則返回true
AtEndOfScreen:如果當(dāng)前字符在文件的末尾則返回true
Column:返回當(dāng)前字符的列號
Line:返回當(dāng)前字符的行號
TextStream對象的方法為:
Close:關(guān)閉并釋放TextStream對象
Read:從一個文件中讀取給定個數(shù)的字符到一個變量中
ReadAll:讀取文件的全部內(nèi)容到一個變量中
ReadLine:讀取給定行號的內(nèi)容到一個變量中
Skip:跳過給定個數(shù)的字符
SkipLine:跳過給頂?shù)男袝?br>
Write:寫如字符串
WriteLine:寫入以換行結(jié)束的字符串
WriteBlankLines:寫入給頂數(shù)量的空格