ASP的對象結構
前面我們學習了ASP的基礎應用,現在我們要系統地瞭解一下ASP的對象結構,然後,大家就可以舉一反三,不用我過多解釋每一個例子了。這一部分,可能有些困難,不過,要學習東西,是不能怕的,是不是?
Request對象
Response對象
Application對象
Session對象
Server對象
一、Request
Request對象把客戶資訊儲存在幾個集合中,供ASP應用使用。通用的存取方法為:
Request.Collection("membername")
當你不指定集合名時,以(1)QueryString,(2)Form,(3)Cookie和(4)ServerVariable
的順序搜尋所有集合,當發現第一個匹配的變數時,就認定他是要引用的成員。當然,為了提高效率,你最好顯式指定是那個集合中的成員。
QueryString集合
當HTML表單使用GET方法向ASP檔案傳遞資料時,資料被儲存在集合QueryString中。其成員可以具有與之相關的多個值,也就是說,同一個表單中,多個元素可以有相同的名字,下面的代碼訪問這些資料:
<%For each item in Request.QueryString("Name")
Response.write Item &"<br>"
Next %>
Form集合
當表單用POST方法時,資料被儲存在Form集合中。
ServerVariable集合
儲存了隨HTTP請求一起傳送HTTP頭的資訊,可以通過他擷取有關瀏覽器的資訊,主要成員有:
REMOTE_ADDR 遠程主機IP地址
REMOTE_HOST 遠程主機名稱
REMOTE_USER 客戶名稱
REQUEST_METHOD 要求方法(如POST,GET,HEAD)
SERVER_NAME 伺服器名
SERVER_PROTOCOL 伺服器版本號碼(如HTTP/1。0)
二、Response對象
用來控制向客戶返回的HTML的內容,有若干屬性和方法。下面介紹我認為重要的:
Buffer屬性
如果為True,則Response的內容要寫入緩衝區,當指令碼處理完時再發給客戶。
Status屬性
傳遞HTTP Response報文的狀態。伺服器返回的狀態碼由三位元字組成,可以用於測試階段和轉換控制到其他網站(即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方法
如果設Buffer屬性為True,則Clear方法清楚所有緩衝區內容。
Flush方法
將緩衝內容立即發送給客戶。
End方法
當Active Server遇到該方法時,立即停止處理ASP檔案,如果有緩衝,立即發送內容到客戶。
BinaryWrite方法
輸出位元據
三、Request對象和Response對象的Cookies集合
1.寫入Cookies
Response.Cookies("Cookie名稱")[("鍵名稱").屬性]=值
如果該Cookie已經存在,則值被新值替代,否則,建立該cookie
例如:
<% Response.Cookies("NewCookie")="New Cookie Value" %>
2.讀取Cookies
如:
<%=Request.Cookies("NewCookie")%>
Cookie還有一些屬性,請參見有關資料。
四、Application對象
Active Server應用程式是虛擬目錄及其子目錄下的所有檔案,即一個WEB。可以使用Application對象在應用軟體的所有使用者中共用資訊,並可以在伺服器運行期間持久地儲存資料。他有一些控制訪問應用程式層資料的方法和事件。
Application本身沒有內建屬性,可以有使用者定義:
Application("屬性名稱")=值
儲存在Application對象中的資料可以被Application的所有使用者讀取。如用來做訪問記數:
Application("aVisits")=Application("aVisits")+1
方法有兩個:
Lock:
當使用者調用Lock時,只有目前使用者能夠編輯或增加Application對象的屬性。
Unlock:
一定要記住,調用了Lock,完成時一定要調用Unlock.
事件也有兩個:
Application_OnStart事件:應用程式啟動時調用。
Application_OnStart事件:應用程式終止時調用。
這兩個事件再加上Session的兩個事件的處理常式都放在檔案Global.asp中,一個Web應用只有一個Global.asa檔案,且放在該應用的根目錄下。一個Global.asp檔案的例子如下:
<Script Language="VBScript" Runat="Server">
Sub Application_OnStart
Dim laChats(15)
Application("gaChats")=maChats
Application("giCounter")=0
End Sub
五、Session對象
Active Server使用會話設定為使用應用程式的單個使用者持久保持資料。當使用者請求Active Server應用程式中ASP檔案的URL時,要啟動Session。在預設情況下,如果沒有使用者請求,則伺服器只保留Session20分鐘。使用者也可以通過設Session的屬性TimeOut來改變。或顯示地調用Session.Abandon方法來釋放Session對象。
SessionID屬性
唯一標識一個會話的標識符。
TimeOut屬性
定義Session保留的時限,單位為分鐘,如
Session.TimeOut=10
像Application一樣,Session也可由使用者來定義屬性。
Session的唯一方法是Abandon,用來取消使用者的Session對象,並釋放其佔用的伺服器資源。如:
<%Session.Abandon%>
事件有Session_OnStart和Session_OnEnd,其處理常式應放在檔案Glabal.asa中。
六、Server對象
1.HTMLEncode方法
對特定的字串進行HTML編碼,如你本來要顯示下列內容:
The Underline tag(<u></u>) is used to underline the surrounded text.
但很可能實際顯示成:
The Underline tag() is used to underline the surrounded text.
為了避免這種情況,可以調用Server對象的HTMLEncode方法,如:
<%
Response.Write Server.HTMLEncode("The Underline tag(<U></U>) is used to underline the surrounded text.")
%>
2.URLEncode方法
根據URL規則對字串進行編碼。當字串資料以URL格式傳遞到伺服器時,串中間不能有空格,不能有特殊字元,這時,你就必須用URL編碼。
3.CreateObject方法
用於建立登入到伺服器機器上的ActiveX組件常式,這恐怕是最重要的一個方法了:-)
句法如下:
Server.CreateObject("ComponentName")
可以作為常式啟動的組件可以是ActiveX能夠使用的所有內建群組件,實際上是存在於伺服器上的任何ActiveX組件。比如,要使用金融計算,步驟如下:
1.建立對象
<%
set x=server.createobject("extend.financial");
%>
2.調用對象的方法
<%
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對象可用於建立對檔案系統的訪問,並提供順序訪問檔案的機制。FileSystem沒有屬性,只有兩個方法,第一個方法是CreateTextFile方法,可以在宿主機上建立新的文字檔,並返回TextStream對象以提供對新建立檔案的訪問機制。第二個是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:如果檔案當前字元處在行的末尾則返回true
AtEndOfScreen:如果當前字元在檔案的末尾則返回true
Column:返回當前字元的列號
Line:返回當前字元的行號
TextStream對象的方法為:
Close:關閉並釋放TextStream對象
Read:從一個檔案中讀取給定個數的字元到一個變數中
ReadAll:讀取檔案的全部內容到一個變數中
ReadLine:讀取給定行號的內容到一個變數中
Skip:跳過給定個數的字元
SkipLine:跳過給頂的行書
Write:寫如字串
WriteLine:寫入以換行結束的字串
WriteBlankLines:寫入給頂數量的空格