標題標題  顯示論壇會員列表名單  搜索論壇搜索  HelpHelp
  注冊注冊  登入登入
ASP教學區
 DoReMe : ASP教學區
主題 話題: ASP六大對像介紹 回復發表新主題
作者
貼子內容 << Prev Topic下一個主題 >>
bababa
Groupie
Groupie


加入: 2004/5月/29
Online Status: Offline
回復: 46
Posted: 2004/5月/29 3:30下午 | IP記錄 引用 bababa

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>"
%>

Back to Top 查看 bababa's 資料 搜索其他貼子 bababa 訪問 bababa's
 

如果你想回復的話你必須首先 login
如果你還沒有注冊的話你必須首先 注冊

  回復發表新主題
顯示可打印的頁面 顯示可打印的頁面

論壇跳轉
不能 張貼新論題在這個討論版
不能 回應論題在這個討論版
不能 刪除你的發言在這個討論版
不能 編輯你的發言在這個討論版
不能 新增投票標題在這個討論版
不能 在這個討論版投票

Edit by doreme Forums version 2004
Welcome ©2001-2004 doreme Guide

This page was generated in 0.5430 seconds.

 
保養品
保養品, Skin Care
www.elady.tw
Makeups Wholesale
Wholesale Cosmetics SkinCares
lungjyi.com
保養品批發
名牌保養品、保養品批發
www.perfume.com.tw/skincare
Wholesale Perfumes
Fragrances Perfumes Wholesale
lungjyi.net