Posted: 2004/5月/29 3:30下午 | IP記錄
|
|
|
Application對像
Application對象是個應用程式級的對象,用來在所有使用者間共享訊息,並可以在Web應用程式執行期間持久地保持 資料。 Application的屬性: 方法如下: Application對像沒有內置的屬性,但是我們可以自行創建其屬性。 <% Application("屬性名")=值 %> 其實大部分Application變量都 存放在Contents集合中,當你創建一個新的Application變量時, 其實就是在Contents集合中增加了一項。下面兩個指令碼是等效的: <% Application("greeting")="hello!" %> 或 <% Application.contents("greeting")="hello!"由於Application變量存在集合 裡,所以如果想要全部顯示,其方法我們已經多次使用,例如For Each循環。 <% For Each item IN Application.Contents Response.write("<br>"&item&Application.Content s(item)) next %> Application的方法: Application的方法只有兩個方法:一個是Lock,另一個是Unlock。其中Lock方法用於保證同一時刻只能 一個使用者對Application操作。Unlock則用於取消Lock方法的限制。如: <% Application.Lock Application("visitor_num")=Application("visitor_num")+1 Application.Unlock %> Application的事件: 1、Application_OnStart() 當事件應用程式啟動時觸發。 2、Application_OnEnd() 此事件應用程式結束時觸發。 這兩個事件過程都是必須定義在Global.asp文件中,一般把連接資料的函數定義在這兩個事件,然後放在Global. asp中。例如: Sub Application_OnStart Application("tt18_ConnectionString") = "driver={SQL Server};server=jeff;uid=sa;pwd=;database=test" End Sub 一個數組能夠被定義成Application對象,不過這個數組只能作為一個對像保存,而不能用Application(0 )取出其值。可以定義一個臨時數組實現這種功能。如: <% dim Array() Array=Application("array") for i = 0 to ubound(array) Response.write Array(i) next i %> 同樣要修改這個Application對象也可以定義一個臨時數組,把Application對像賦給數組,然後修改這個數 組的元素,最後把數組賦回Application對象。如: <% dim Array() Array=Application("array") Array(0)="jeff" Array(1)="zhu" Application.lock Application("array")=Array Application.unlock %> ObjectContext對像
該對像用於控制Active Server Pages的事務處理。事務處理由Microsoft Transaction Server (MTS)管理。
事件
ObjectContext.OnTransactionAbort
由放棄的事務處理事件激發,在指令碼完成處理後發生。
ObjectContext.OnTransactionCommit
由成功的事務處理事件激發,在指令碼完成處理後發生。
方法
ObjectContext.SetAbort
顯式的放棄一次事務處理。
ObjectContext.SetComplete
覆蓋前面任何調用ObjectContext.SetAbort方法的調用。 Request對像 Request對像用於接受所有從瀏覽器發往你的服務器的請求內的所有訊息。
集合
Request.ClientCertificate(key[SubField])
所有客戶證書的訊息的集合。對於Key,該集合具有如下的關鍵字:
Subject 證書的主題。包含所有關於證書收據的訊息。能和所有的子域後綴一起使用。
Issuer 證書的發行人。包含所有關於證書驗證的訊息。除了CN外,能和所有的子域後綴一起使用。
VadidFrom 證書發行的日期。使用VBScript格式。
ValidUntil 該證書不在有效的時間。
SerialNumber 包含該證書的序列號。
Certificate 包含整個證書內容的二進制流,使用ASN.1格式。
對於SubField,Subject和Issuer關鍵字可以具有如下的子域後綴:(比如:SubjectOU或Issuer L)
C 起源國家。
O 公司或組織名稱。
OU 組織單元。
CN 使用者的常規名稱。
L 局部。
S 州(或省)。
T 個人或公司的標題。
GN 給定名稱。
I 初始。
當文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通過使用#INCLUD E導向包含在你的Active Server Page裡時,下面兩個標誌可以使用:
ceCertPresent 指明客戶證書是否存在,其值為TRUE或FALSE。
ceUnrecongnizedIssure 指明在該鏈表中的最後的證書的發行者是否未知,其值為TRUE或FALSE。
Request.Cookies(Cookie[(key).Attribute])
Cookie的集合。允許獲得瀏覽器的Cookie。Cookie指明返回那一個Cookie。Key用於從Cookie字典中 返回具有某一關鍵字的Cookie值。對於Attribute,你能使用屬性HasKeys來確定某一Cookie是否具有子關 鍵字。HasKeys的值為TRUE或FALSE。
Request.Form(Parameter)[(Index).Count]
填寫在HTML的表單中所有的資料的集合。Parameter是在HTML表單中某一元素的名稱。當某一參數具有不止一個值(比 如,當在<SELECT>中使用MULTIPLE屬性時)時,使用Index。當某一參數具有多值時,Count指 明多值個數。
Request.QueryString(Varible)[(Index).Count]
查詢文字串的所有值的集合。Varible是在查詢文字串某一變量的名稱。當某一變量具有多於一個值時,使用Index。當某一 參數具有多值時,Count指明值的個數。
Request.ServerVaribles(Server Environment Variable)
環境變量的集合。允許讀取HTTP頭。你可以通過使用HTTP_前綴來讀取任何頭訊息。比如,HTTP_USER_AGENT接 受客戶代理HTTP頭(瀏覽器類型)。除此外,你可以使用下表所示的變量獲得任何環境訊息。
ALL_HTTP 客戶端發送的所有HTTP標頭,他的結果都有前綴HTTP_。
ALL_RAW 客戶端發送的所有HTTP標頭,其結果和客戶端發送時一樣,沒有前綴HTTP_
APPL_MD_PATH 應用程式的元資料庫路徑。
APPL_PHYSICAL_PATH 與應用程式元資料庫路徑相應的物理路徑。
AUTH_PASSWORD 當使用基本驗證模式時,客戶在密碼對話框中輸入的密碼。
AUTH_TYPE 這是使用者訪問受保護的指令碼時,服務器用於檢驗使用者的驗證方法。
AUTH_USER 代驗證的使用者名。
CERT_COOKIE 唯一的客戶證書ID號。
CERT_FLAG 客戶證書標誌,如有客戶端證書,則bit0為0。如果客戶端證書驗證無效,bit1被設置為1。
CERT_ISSUER 使用者證書中的發行者字段。
CERT_KEYSIZE 安全套接字層連接關鍵字的位數,如128。
CERT_SECRETKEYSIZE 服務器驗證私人關鍵字的位數。如1024。
CERT_SERIALNUMBER 客戶證書的序列號字段。
CERT_SERVER_ISSUER 服務器證書的發行者字段
CERT_SERVER_SUBJECT 服務器證書的主題字段。
CERT_SUBJECT 客戶端證書的主題字段。
CONTENT_LENGTH 客戶端發出內容的長度。
CONTENT_TYPE 客戶發送的form內容或HTTP PUT的資料類型。
GATEWAY_INTERFACE 服務器使用的網關界面。
HTTPS 如果請求穿過安全通道(SSL),則返回ON。如果請求來自非安全通道,則返回OFF。
HTTPS_KEYSIZE 安全套接字層連接關鍵字的位數,如128。
HTTPS_SECRETKEYSIZE 服務器驗證私人關鍵字的位數。如1024。
HTTPS_SERVER_ISSUER 服務器證書的發行者字段。
HTTPS_SERVER_SUBJECT 服務器證書的主題字段。
INSTANCE_ID IIS實例的ID號。
INSTANCE_META_PATH 響應請求的IIS實例的元資料庫路徑。
LOCAL_ADDR 返回接受請求的服務器地址。
LOGON_USER 使用者登錄Windows NT的帳號
PATH_INFO 客戶端提供的路徑訊息。
PATH_TRANSLATED 通過由虛擬至物理的映射後得到的路徑。
QUERY_STRING 查詢文字串內容。
REMOTE_ADDR 發出請求的遠程主機的IP地址。
REMOTE_HOST 發出請求的遠程主機名稱。
REQUEST_METHOD 提出請求的方法。比如GET、HEAD、POST等等。
SCRIPT_NAME 執行指令碼的名稱。
SERVER_NAME 服務器的主機名、DNS地址或IP地址。
SERVER_PORT 接受請求的服務器端口號。
SERVER_PORT_SECURE 如果接受請求的服務器端口為安全端口時,則為1,否則為0。
SERVER_PROTOCOL 服務器使用的協議的名稱和版本。
SERVER_SOFTWARE 應答請求並執行網關的服務器軟體的名稱和版本。
URL 提供URL的基本部分。
方法
Request.BinaryRead(Count)
接收一個HTML表單的未經過處理的內容。當調用此方法時,Count指明要接收多少字節。在調用此方法後,Count指明實際 上接收到多少個字節。
屬性
Request.TotalBytes
查詢體的長度,以字節為單位 Response對象,
Response對像用於向客戶端瀏覽器發送資料,使用者可以使用該對像將服務器的資料以HTML的格式發送到使用者端的瀏 覽器,它與Request組成了一對接收、發送資料的對象,這也是實現動態的基礎。下面介紹它常用的屬性和方法。
1、Buffer屬性 該屬性用於指定網頁輸出時是否要用到緩衝區,默認值為False。當它為True時,直到整個Active Server Page執行結束後才會將結果輸出到瀏覽器上。如: <%Response.Buffer=True%> <html> <Head> <title>Buffer示例</title> </head> <body> <% for i=1 to 500 response.write(i & "<br>") next %> </body> </html> 這頁執行時,整個首頁的所有內容會同時顯示在瀏覽器上,這個首頁會存在快取區中直到指令碼執行結束。
2、Expires屬性 該屬性用於設置瀏覽器快取網頁的時間長度(單位為分),必須在服務器端重整。通過如下設置: <%Response.Expires=0%> 通過在ASP文件中加入這一行程式碼,要求每次請求是重整網頁,因為Response一收到網頁就會過期。
3、Write方法 該方法把資料發送到客戶端瀏覽器,如: <%Response.write "Hello,world!"%>
4、Redirect方法 該方法使瀏覽器可以重新定位到另一個URL上,這樣,當客戶發出Web請求時,客戶端的瀏覽器類型已經確定,客戶被重新定位 到相應的網頁。如: <html> <head> <title>Redirect示例</title> </head> <body> <form aciton="formjump.asp" method="post"> <select name="wheretogo"> <option selected value="fun">Fun</option> <option value="news">News</option> <option value="sample">Sample</option> </select> <input type=submit name="jump" value="Jump"> </form> </body> </html> 以上是提交的表單,下面是處理表單的文件formjump.asp: <%response.buff=true%> <html> <head> <title>Redirect示例</title> </head> <body> <% thisurl="http://www.tinyu.com/"; where=Request.form("wheretogo") Select Case where case "fun" response.redirect thisurl & "/fun/default.asp" case "news" response.redirect thisurl & "/news/default.asp" case "sample" response.redirect thisurl & "/sample/default.asp" End Select %> </body> <html> 這個例子當使用者選擇了以後,按"Jump"按鈕提交表單,服務器接到申請後調用formjump.asp判斷後定位到相應 的URL。不過這裡有一點要注意,HTTP標題已經寫入到客戶瀏覽器,任何HTTP標題的修改必須在寫入頁內容之前,遇到這種問 題時,可以如下做: 在文件的開始<@ Language=..>後寫: Response.Buffer=True 在結尾定: Response.Flush 這裡Flush是Response的一個方法,它必須是Buffer屬性設置為True時才能使用,否則會產生一個執行模式 錯誤。另外一個Clear方法也是用於清除被快取的網頁,同樣要Buffer屬性設置為True時才能使用。
5、End方法 該方法用於告知Active Server當遇到該方法時停止處理ASP文件。如果Response對象的Buffer屬性設置為True,這時End方法即 把快取中的內容發送到客戶並清除沖區。所以要取消所有向客戶的輸出民,可以先清除緩衝區,然後利用End方法。如: <% Response.buffer=true On error resume next Err.clear if Err.number<>0 then Response.Clear Response.End end if %> Server 對像:
Server 對像提供對服務器上的方法和屬性的訪問。其中大多數方法和屬性是作為實用程式的功能服務的。
語法
Server.property|method
屬性
ScriptTimeout: ScriptTimeout 屬性指定指令碼在結束前最大可執行多長時間。 當處理服務器元件時,超時限制將不再生效。
語法 Server.ScriptTimeout = NumSeconds
參數 NumSeconds 指定指令碼在被服務器結束前最大可執行的秒數。默認值為 90 秒。
註釋 通過使用元資料庫中的AspScriptTimeout屬性可以為 Web 服務或 Web 服務器設置缺省的ScriptTimeout值。ScriptTimeout屬性不能設置為小於在元資料庫中指定的值。例如,如 果NumSeconds設置為10,而元資料庫設置包含了默認值90秒,則指令碼在90秒後超時。但如果NumSeconds設 置為100,則指令碼在100秒後超時。
關於使用元資料庫的詳細訊息,參閱 關於元資料庫。
示例 以下示例中,如果服務器處理指令碼超過 100 秒,將使之超時。 <% Server.ScriptTimeout = 100 %> 以下示例獲取 ScriptTimeout 屬性目前值,並將其儲存在變量 TimeOut 中。 <% TimeOut = Server.ScriptTimeout %>
方法
CreateObject CreateObject 方法創建服務器元件的實例。如果該元件執行了 OnStartPage 和 OnEndPage 方法,則此時就會調用 OnStartPage 方法。有關服務器元件的詳細訊息,請參閱 可安裝的 ASP 元件 。
語法 Server.CreateObject( progID )
參數 progID 指定要創建的對象的類型。progID 的格式為 [Vendor.] component[.Version]。
註釋 默認情況下,由 Server.CreateObject 方法創建的對象具有頁作用域。這就是說,再目前 ASP 頁處理完成之後,服務器將自動破壞這些對象。要創建有會話或應用程式作用域的對象,可以使用 <OBJECT> 標記並設置 SESSION 或 APPLICATION 的 SCOPE 屬性,也可以在對話及應用程式變量中儲存該對象。 例如,在如下所示的指令碼中,當 Session 對像被破壞,即當對話超時時或 Abandon 方法被調用時,儲存在會話變量中的對象也將被破壞。 <% Set Session("ad") = Server.CreateObject("MSWC.AdRotator")%> 可以通過將變量設置為 Nothing 或新的值來破壞對象,如下所示。第一個例子釋放 ad 對象,第二個例子用字串代替 ad 。 <% Session ("ad") = Nothing %> <% Session ("ad") = " Other Valum " %> 不能創建與內建對像同名的對象實例。 例如,下列指令碼將返回錯誤。 <% Set Response = Server.CreateObject("Response") %>
示例 <% Set MyAd = Server.CreateObject("MSWC.AdRotator") %> 上面的例子創建一個名為 MyAd 的 MSWC.AdRotator 服務器元件,MSWC.AdRotator 元件可用於在 Web 頁上的自動輪換廣告。像 關於服務器元件的詳細訊息, 請參閱 Creating Components for ASP.
HTMLEncode HTMLEncode方法對指定的文字串應用 HTML 編碼。
語法 Server.HTMLEncode( string )
參數 string 指定要編碼的文字串。
示例指令碼 <%= Server.HTMLEncode("The paragraph tag: <P>") %>
輸出 The paragraph tag: <P>
注意 以上輸出將被 Web 瀏覽器顯示為The paragraph tag: <P>如果查看一下源文件或以文本方式打開一個 Web 頁,您就可以看到已編碼的 HTML。
MapPath MapPath 方法將指定的相對或虛擬路徑映射到服務器上相應的物理目錄上。
語法 Server.MapPath( Path )
參數 Path 指定要映射物理目錄的相對或虛擬路徑。若 Path 以一個正斜槓 (/) 或反斜槓 (\) 開始,則 MapPath 方法返回路徑時將 Path 視為完整的虛擬路徑。若 Path 不是以斜槓開始,則 MapPath 方法返回同 .asp 文件中已有的路徑相對的路徑。 註釋 MapPath 方法不支持相對路徑語法 (.) 或 (..)。例如,下列相對路徑 ../MyDir/MyFile.txt 返回一個錯誤。
MapPath 方法不檢查返回的路徑是否正確或在服務器上是否存在。
因為 MapPath 方法只映射路徑而不管指定的目錄是否存在,所以,您可以先用 MapPath 方法映射物理目錄結構的路徑,然後將其傳遞給在服務器上創建指定目錄或文件的元件。
示例 對於下列示例,文件data.txt和包含下列指令碼的test.asp文件都位於目錄C:\Inetpub\Wwwroot\ Script下。C:\Inetpub\Wwwroot目錄被設置為服務器的宿主目錄。
下列示例使用服務器變量 PATH_INFO 映射目前文件的物理路徑。指令碼 <%= server.mappath(Request.ServerVariables("PATH_INFO"))%>< ;BR>
輸出 c:\inetpub\wwwroot\script\test.asp<BR>
由於下列示例中的路徑參數不是以斜槓文字開始的,所以它們被相對映射到目前目錄,此處是 C:\Inetpub\Wwwroot\Script。指令碼 <%= server.mappath("data.txt")%><BR> <%= server.mappath("script/data.txt")%><BR>
輸出 c:\inetpub\wwwroot\script\data.txt<BR> c:\inetpub\wwwroot\script\script\data.txt<BR>
接下來的兩個示例使用斜槓文字指定返回的路徑應被視為在服務器的完整虛擬路徑。指令碼 <%= server.mappath("/script/data.txt")%><BR> <%= server.mappath("\script")%><BR>
輸出 c:\inetpub\script\data.txt<BR> c:\inetpub\script<BR>
下列示例演示如何使用正斜槓 (/) 或反斜槓 (\) 返回宿主目錄的物理路徑。指令碼 <%= server.mappath("/")%><BR> <%= server.mappath("\")%><BR>
輸出 c:\inetpub\wwwroot<BR> c:\inetpub\wwwroot<BR>
URLEncode URLEncode 方法將 URL 編碼規則,包括轉義文字,應用到指定的文字串。
語法 Server.URLEncode( string ) 參數 String 指定要編碼的文字串。 示例 指令碼 <%Response.Write(Server.URLEncode("http://www.tinyu.com";)) %>
輸出 http%3A%2F%2Fwww%2Etinyu%2Ecom Session對像
Session其實指的就是訪問者從到達某個特定首頁到離開為止的那段時間。每一訪問者都會單獨獲得一個Session。在 Web應用程式中,當一個使用者訪問該應用時,Session類型的變量可以供這個使用者在該Web應用的所有網頁中共享資料; 如果另一個使用者也同時訪問該Web應用,他也擁有自己的Session變量,但兩個使用者之間無法通過Session變量共享 訊息,而Application類型的變更則可以實現網站多個使用者之間在所有網頁中共享訊息。
1、SessionID屬性 該屬性返回目前會話的唯一標誌,為每一個Session分配不同的編號。 我曾在開發過程中就遇到對使用者的控制問題。它要實現的功能就是,針對某個網站的一個模塊,當一個會員登錄後正在看此模塊時 ,另一個人用同樣的會員名登錄,就不能瀏覽這個模塊。也就是說一個會員名同時只能一個人瀏覽此模塊。我通過用會員名(假設為Us erID,唯一)和SessionID來實現了控制。當會員登錄時,給這個會員一個Session記錄登錄狀態如:Sessio n("Status")="Logged",同時把這個會員的Session.SessionID寫入資料庫。當他要瀏覽此模塊 時,先判斷其是否登錄,若已經登錄再判斷它的SessionID是否與資料庫記錄的相同,如果不同則不能訪問。這樣,當另一個使 用者用相同的會員名登錄時,那麼資料庫中記錄的就是新的SessionID,前者訪問此模塊時就不能通過檢查。這就實現了一個會 員名同時只能一個人瀏覽某個模塊。這個功能在一些收費網站有很有特別作用,它防止了一個會員名給多個人瀏覽的問題,為公司保障了 利益。
2、TimeOut屬性 該屬性用來定義使用者Session對象的時限。如果使用者在規定的時間內沒有重整網頁,則Session對象就會終止。一 般默認為20分鐘。
3、Abandon方法 該方法是Session對象的唯一方法,可以清除Session對象,用來消除使用者的Session對象並釋放其所佔的資 源。如: <% Session.Abandon %> 4、Session_OnStart和Session_OnEnd事件 和Application一樣,當對象的例程每一次啟動時觸發Session_OnStart事件,然後執行Session _Onstart事件的處理過程。也就是說,當服務器接收到應用程式中的URL的HTTP請求時,觸發此事件,並建立一個Ses sion對象。同理,這個事件也必須定在Global.asa文件中。 當調用Session.Abandon方法時或者在TimeOut的時間內沒有重整,這會觸發Session_OnEnd事 件,然後執行裡面的指令碼。Session變量與特定的使用者相聯絡,針對某一個使用者賦值的Session變量是和其他使用者 的Session變量完全獨立的,不會存在相互影響。 Session應用一列: 與Application一樣,一個被定義為Session類型的數組只能將整個數組作為一個對象,使用者不能直接改變Se ssion數組中某個元素的值。為了創建一個Session數組,需先定義一個普通的數組,並對它的每一個元素賦初值,最後把它 定義為一個Session數組。如: <% dim array() array=array("李","明","男") Session("info")=array Response.write Session("info")(0) &"-" Response.write Session("info")(1) &"-" Response.write Session("info")(2) &"<br>" %> <hr> <% array(0)="天" array(1)="宇" array(2)="男" Session("info")=array Response.write Session("info")(0) & "-" Response.write Session("info")(1) & "-" Response.write Session("info")(2) & "<br>" %>
|