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