五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 2.1 常用ASP內(nèi)置對(duì)象

2.1 常用ASP內(nèi)置對(duì)象

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):3851    更新時(shí)間:2009-07-15 14:34   參與評(píng)論

本章介紹ASP開(kāi)發(fā)中常用到的一些基本知識(shí),包括對(duì)7個(gè)ASP內(nèi)置對(duì)象的介紹,以及在它們的使用過(guò)程中應(yīng)當(dāng)注意的問(wèn)題,使用ADO連接數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)以及ADO連接不同數(shù)據(jù)庫(kù)的方法,常用SQL語(yǔ)句的使用方法,最后給出了在開(kāi)發(fā)中常用的一些模塊,使用這些模塊可以大大增強(qiáng)程序功能和加快開(kāi)發(fā)速度。本章作為開(kāi)發(fā)ASP時(shí)的一個(gè)參考,目的是提供一些比較全面和系統(tǒng)的知識(shí),以便讀者在開(kāi)發(fā)時(shí)可以隨時(shí)查閱。

2.1  常用ASP內(nèi)置對(duì)象

ASP內(nèi)置對(duì)象是ASP的核心,ASP的主要功能都建立在些內(nèi)置對(duì)象的基礎(chǔ)之上。關(guān)于ASP內(nèi)置對(duì)象的介紹有很多資料,下面僅就與開(kāi)發(fā)關(guān)系最密切的知識(shí)做一重點(diǎn)介紹,并對(duì)在使用過(guò)程中容易出錯(cuò)的知識(shí)點(diǎn)給出詳細(xì)的解釋和說(shuō)明。讀者在開(kāi)發(fā)時(shí),最方便的參考資料還是IIS自帶的文檔或MSDN,因?yàn)閬?lái)自那里的信息才最權(quán)威,最真實(shí)。

下面分別介紹在IIS 5.1的文檔中,提到的ASP的7個(gè)內(nèi)置對(duì)象的功能。

2.1.1  7個(gè)ASP內(nèi)置對(duì)象介紹

1.Application對(duì)象——應(yīng)用程序內(nèi)共享信息

可以使用 Application 對(duì)象在應(yīng)用程序的所有訪問(wèn)者間共享信息,此處的應(yīng)用程序與在IIS中所創(chuàng)建的一個(gè)應(yīng)用程序所對(duì)應(yīng)(如何創(chuàng)建應(yīng)用程序請(qǐng)參見(jiàn)第1章)。

2.Request對(duì)象——獲取客戶端傳入信息

可以使用 Request 對(duì)象來(lái)獲取客戶端傳來(lái)的任何信息。包括通過(guò) POST 方法或 GET 方法、cookies 以及客戶端證書(shū)從 HTML 表單傳遞的參數(shù)。通過(guò) Request 對(duì)象也可以訪問(wèn)發(fā)送到服務(wù)器的二進(jìn)制數(shù)據(jù),如文件上載。

3.Response對(duì)象——向客戶端發(fā)送信息

可以使用 Response 對(duì)象來(lái)控制發(fā)送給客戶端的信息。這包括直接發(fā)送信息到瀏覽器、重定向?yàn)g覽器到其他URL或設(shè)置cookie值。

4.Server對(duì)象——服務(wù)器本地操作

通過(guò)Server對(duì)象可以訪問(wèn)服務(wù)器上的方法和屬性。最常用的方法就是用來(lái)創(chuàng)建COM組件的Server.CreateObject方法。其他方法可對(duì)字符串應(yīng)用URL或HTML編碼、將虛擬目錄映射到物理路徑,以及設(shè)置腳本超時(shí)期間等。

5.Session對(duì)象——存儲(chǔ)單個(gè)用戶會(huì)話信息

可以使用Session對(duì)象來(lái)存儲(chǔ)特定會(huì)話(Session)所需的信息,當(dāng)一個(gè)客戶端訪問(wèn)服務(wù)器時(shí),就會(huì)建立一個(gè)會(huì)話。當(dāng)用戶在應(yīng)用程序不同頁(yè)面間跳轉(zhuǎn)時(shí),不會(huì)丟棄存儲(chǔ)在 Session 對(duì)象中的變量,這些變量在用戶訪問(wèn)應(yīng)用程序頁(yè)的整個(gè)期間都會(huì)保留??梢允褂?Session 對(duì)象來(lái)顯式結(jié)束會(huì)話并設(shè)置閑置會(huì)話的超時(shí)時(shí)限。

準(zhǔn)確地說(shuō),是服務(wù)器會(huì)對(duì)每一個(gè)獨(dú)立的瀏覽器建立一個(gè)會(huì)話,當(dāng)你分別啟動(dòng)兩個(gè)瀏覽器訪問(wèn)同一網(wǎng)址時(shí),就會(huì)在服務(wù)器端創(chuàng)建兩個(gè)不同的會(huì)話,但使用window.open等方法新開(kāi)的瀏覽器子窗口與其父窗口共享一個(gè)會(huì)話。

6.ObjectContext對(duì)象——事務(wù)處理

可以使用ObjectContext對(duì)象來(lái)提交或中止由ASP腳本啟動(dòng)的事務(wù)。

7.ASPError對(duì)象——錯(cuò)誤信息

可以使用 ASPError 對(duì)象來(lái)捕捉 ASP 錯(cuò)誤并向用戶返回詳細(xì)的信息描述。

下面分別介紹每個(gè)對(duì)象的成員及其使用方法。

[NextPage]

 

2.1.2  Application對(duì)象

Application對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能。

l          存儲(chǔ)應(yīng)用程序級(jí)全局變量。

l          鎖定與解鎖全局變量。

l          網(wǎng)站計(jì)數(shù)器。

下面來(lái)看實(shí)現(xiàn)這些功能的具體方法。

1.成員說(shuō)明

Application對(duì)象包含的集合、方法和事件見(jiàn)表2-1。

表2-1  Application對(duì)象包含的集合、方法和事件

類    型

名    稱

說(shuō)    明

集合

Contents

沒(méi)有使用<OBJECT>元素定義的存儲(chǔ)于Application 對(duì)象中的所有變量的集合。可以省略Contents直接訪問(wèn),如:Application("NumVisits")

StaticObjects

使用<OBJECT>元素定義的存儲(chǔ)于Application對(duì)象中的所有變量的集合

方法

Contents.Remove

通過(guò)傳入變量名來(lái)刪除指定的存儲(chǔ)于Contents中的變量

Contents.RemoveAll

刪除全部存于Contents中的變量

Lock

鎖定在Application中存儲(chǔ)的變量,不允許其他客戶端修改,調(diào)用Unlock或本頁(yè)面執(zhí)行完畢后解鎖

Unlock

手動(dòng)解除對(duì)Application變量的鎖定

事件

Application_OnStart

聲明于global.asa中,應(yīng)用程序首次執(zhí)行時(shí)觸發(fā)

Application_OnEnd

聲明于global.asa中,應(yīng)用程序結(jié)束時(shí)觸發(fā)

(1)在Application對(duì)象中存儲(chǔ)對(duì)象時(shí),仍要用Set關(guān)鍵字,使用時(shí)可以直接用Application對(duì)象調(diào)用其方法。如:

Set Application("myObj") = Server.CreateObject("MyComponent")

Application("myObj").myMethod

(2)調(diào)用Lock方法的效果是累計(jì)的,即調(diào)用幾次Lock方法,需要對(duì)應(yīng)調(diào)用幾次Unlock方法來(lái)解鎖,如果調(diào)用UnLock方法次數(shù)小于Lock方法次數(shù),則存儲(chǔ)于Application對(duì)象中的變量仍處于鎖定狀態(tài),當(dāng)然,當(dāng)此頁(yè)面執(zhí)行完畢后,會(huì)自行解鎖。

2.應(yīng)用范例

Application對(duì)象的應(yīng)用比較簡(jiǎn)單,在程序設(shè)計(jì)時(shí)使用得也相對(duì)比較少,關(guān)于它的使用方法參見(jiàn)例程2-1。

例程2-1  Application對(duì)象的使用范例

<%

         '在Application對(duì)象中存儲(chǔ)字符串和數(shù)字

         Application("greeting") = "Welcome to My Web World!"

         Application("num") = 25

         '在Application對(duì)象中存儲(chǔ)數(shù)組及使用方法

         Dim MyArray(5)

         MyArray(0) = "hello"

         MyArray(1) = "some other string"

         Application("StoredArray") = MyArray

         '使用數(shù)組,需要先取出來(lái)后,再用下標(biāo)引用

         LocalArray = Application("StoredArray")

         LocalArray(1) = " there"

         '在Application中存儲(chǔ)對(duì)象(MyComponent對(duì)象為虛構(gòu)對(duì)象)

         Set Application("myObj") = Server.CreateObject("MyComponent")

         '直接用Application對(duì)象調(diào)用某一對(duì)象的方法

         Application("myObj").myMethod

         '取出對(duì)象后再調(diào)用其方法

         Set MyLocalObj = Application("myObj")

         MyLocalObj.myMethod

         '對(duì)Application中變量的鎖定與解鎖

         Application.Lock

         Application("NumVisits") = Application("NumVisits") + 1

         Application("datLastVisited") = Now()

         Application.Unlock

%>

3.典型錯(cuò)誤用法

Application對(duì)象雖然使用簡(jiǎn)單,但在使用時(shí),仍要注意一些常犯的錯(cuò)誤,下面列舉幾種比較典型的錯(cuò)誤使用方法。

1)在Application對(duì)象中不能存儲(chǔ)ASP內(nèi)置對(duì)象

如下語(yǔ)句是錯(cuò)誤的:

<%

         Set Application("var1") = Session

         Set Application("var2") = Request

         ……

%>

2)不能通過(guò)下標(biāo)直接來(lái)引用存儲(chǔ)于Application中的數(shù)組

如下語(yǔ)句是錯(cuò)誤的:

<% Application("StoredArray")(3) = "new value" %>

3)不要將數(shù)據(jù)庫(kù)連接對(duì)象存儲(chǔ)于Application中

在沒(méi)有講ADO的使用時(shí),談這個(gè)似乎有些過(guò)早,而且這樣做也不會(huì)導(dǎo)致編譯和執(zhí)行錯(cuò)誤,但卻對(duì)數(shù)據(jù)庫(kù)操作的效率有十分有害的影響。因?yàn)樽尪鄠€(gè)客戶端共用一個(gè)數(shù)據(jù)庫(kù)連接,固然節(jié)省了資源,但當(dāng)用戶數(shù)稍多之后數(shù)據(jù)庫(kù)連接必然會(huì)成為整個(gè)應(yīng)用程序的瓶頸,比較好的解決辦法是使用數(shù)據(jù)庫(kù)連接池來(lái)實(shí)現(xiàn),詳細(xì)方法參見(jiàn)關(guān)于ADO的介紹和對(duì)數(shù)據(jù)庫(kù)連接優(yōu)化的部分。

[NextPage]

 

2.1.3  Request對(duì)象

Request對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能。

l          讀取網(wǎng)址參數(shù)。

l          讀取表單傳遞的數(shù)據(jù)。

l          讀取Cookie的數(shù)據(jù)。

l          讀取服務(wù)器環(huán)境變量。

l          上傳文件。

下面來(lái)看實(shí)現(xiàn)這些功能的具體方法。

1.成員說(shuō)明

Request對(duì)象包含的集合、屬性和方法見(jiàn)表2-2。

表2-2  Request對(duì)象包含的集合、屬性和方法

 

類    型

名    稱

說(shuō)    明

 

集合

ClientCertificate

客戶證書(shū)集合

 

Cookies

客戶發(fā)送的所有Cookies值的集合

 

Form

客戶提交的表單(Form)元素的值,變量名與表單中元素的name屬性一致

 

QueryString

URL參數(shù)中的值,如果Form的Method屬性設(shè)為“GET”,則會(huì)把所有的Form元素名稱和值自動(dòng)添加到URL參數(shù)中

 

ServerVariables

預(yù)定義的服務(wù)器變量

 

屬性

TotalBytes

客戶端發(fā)送的HTTP請(qǐng)求中Body部分的總字節(jié)數(shù)

方法

BinaryRead(count)

從客戶端提交的數(shù)據(jù)中獲取count字節(jié)的數(shù)據(jù),返回一個(gè)無(wú)符號(hào)型的數(shù)組

(1)如果要查詢的變量在以上5個(gè)集合中都不存在,則返回空(EMPTY)。

(2)在以上5個(gè)集合中查找變量值時(shí),雖然可以省略集合名,直接用Request(variable)來(lái)獲取變量值,但MS以及其他專業(yè)人士強(qiáng)烈反對(duì)這種做法,因?yàn)檫@會(huì)使查詢效率降低,而且會(huì)由于變量重名而帶來(lái)讓人費(fèi)神的邏輯錯(cuò)誤,建議在查詢時(shí)指明集合名稱。例如:

推薦:

Request.Form ("username")

反對(duì):

Request.(" username")

如果非要使用省略集合名稱的方法,當(dāng)一個(gè)變量在不止一個(gè)集合中存在時(shí),那么服務(wù)器要找到并返回這個(gè)變量就要在全部集合中檢索,對(duì)于集合的自動(dòng)檢索順序是:

l          QueryString

l          Form

l          Cookies

l          ClientCertificate

l          ServerVariables

(3)使用Request.Form時(shí)有兩個(gè)局限性:其一是只能接收小數(shù)據(jù)量的數(shù)據(jù),具體為當(dāng)由Form提交的數(shù)據(jù)字節(jié)數(shù)大于100KB時(shí),便無(wú)法使用Request.Form了;其二是Request.Form與Request.BinaryRead不能同時(shí)使用,否則會(huì)發(fā)生錯(cuò)誤。

2.應(yīng)用范例

關(guān)于Reguest對(duì)象的使用方法參見(jiàn)例程2-2。

例程2-2  Reguest對(duì)象的使用范例

<%

         '使用ClientCertificate的范例,注:由于ClientCertificate使用較少,

         '而且內(nèi)容比較煩瑣,在此只做簡(jiǎn)單介紹,讀者可以參考IIS 5.1文檔,查看其具體用法

         strIssuer = Request.ClientCertificate("Issuer")

         strSubject = Request.ClientCertificate("Subject")

         'Cookeis的簡(jiǎn)單使用方法

         strMyCookie = Request.Cookies("myCookie")

         '例如對(duì)這樣的URL:http://localhost/login.ASP?username=admin&key=AKgHmOLU

         '使用Request.QueryString方法

         strUserName = Request.QueryString("username")

         strKey = Request.QueryString("key")

         '例如對(duì)這樣的URL:http://localhost/login.ASP,該URL沒(méi)有參數(shù)

         '使用Request.Form方法

         strUserName = Request.Form("username")

         strPassword = Request.Form("password")

         strKey = Request.Form("key")

         'Request.ServerVariables的參數(shù)有幾十個(gè)服務(wù)器環(huán)境變量可以使用,

         '下面用REMOTE_ADDR來(lái)獲得客戶端的IP

         strIP = Request.ServerVariables(REMOTE_ADDR)

%>

3.典型錯(cuò)誤用法

Request對(duì)象使用時(shí)一般出現(xiàn)語(yǔ)法性錯(cuò)誤的情況比較少,更多的情況是如何合理使用它來(lái)提高應(yīng)用程序效率。在MSDN中的一篇名為“25+ ASP Tips to Improve Performance and Style”的文章中,給出了28條優(yōu)化ASP性能的建議,其中有一條是關(guān)于Request對(duì)象優(yōu)化的,大致思想如下。

(1)盡量不要使用服務(wù)器變量。

訪問(wèn)服務(wù)器變量會(huì)使 Web 站點(diǎn)向服務(wù)器發(fā)出一個(gè)特殊請(qǐng)求,并收集所有服務(wù)器變量,而不只是所請(qǐng)求的那個(gè)變量。所以第一次請(qǐng)求服務(wù)器變量時(shí),就會(huì)使性能受到影響。后面再對(duì)其他服務(wù)器變量的請(qǐng)求,則不會(huì)對(duì)性能產(chǎn)生影響。

(2)避免使用非限定的Request對(duì)象。

這個(gè)前面已經(jīng)提到,建議使用集合名稱來(lái)查詢對(duì)象,而不要使用類似Request("Data")的形式。

[NextPage]

 

2.1.4  Response 對(duì)象

Response對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能。

l          輸出內(nèi)容到網(wǎng)頁(yè)(客戶端)。

l          網(wǎng)頁(yè)重定向(盡量使用Server.Transfer代替它)。

l          寫入Cookie。

l          下載文件。

下面來(lái)看實(shí)現(xiàn)這些功能的具體方法。

1.成員說(shuō)明

Response對(duì)象包含的集合、屬性和方法見(jiàn)表2-3。

表2-3  Response對(duì)象包含的集合、屬性和方法

類    型

名    稱

說(shuō)    明

集合

Cookies

設(shè)置客戶端Cookie的值,如果指定名稱不存在,則創(chuàng)建之,如果存在,則更新它的值

(續(xù)表)

類    型

名    稱

說(shuō)    明

屬性

Buffer

是否啟用緩存,此句必須放在ASP文件的第一行。啟用Buffer之后,只有所有腳本執(zhí)行完畢后才會(huì)向客戶端輸出

CacheControl

設(shè)置代理服務(wù)器是否可以緩存ASP,以及緩存的級(jí)別

Charset

設(shè)置字符集,如簡(jiǎn)體中文為“gb2312”,與在網(wǎng)頁(yè)中的meta段寫charset=gb2312具有相同作用

CodePage

表示消息正文所使用的代碼頁(yè),例如簡(jiǎn)體中文是936

ContentType

設(shè)置HTTP內(nèi)容類型,如“text/html”

Expires

設(shè)置或返回一個(gè)頁(yè)面緩存在瀏覽器中的有效時(shí)限,以分鐘計(jì)算

ExpiresAbsolute

設(shè)置頁(yè)面緩存在瀏覽器中到期的絕對(duì)時(shí)間

IsClientConnected

判斷客戶端是否已經(jīng)斷開(kāi)連接

LCID

設(shè)定或獲取日期、時(shí)間或貨幣的顯示格式

Status

設(shè)置服務(wù)器的返回狀態(tài),以一個(gè)三位數(shù)加簡(jiǎn)要說(shuō)明的格式,

如Response.Status = "401 Unauthorized"

方法

AddHeader(HeaderName, HeaderValue)

向HTTP頭中加入額外的信息,其中HeaderName可以重復(fù),信息一但加入,無(wú)法刪除

AppendToLog

向Web 服務(wù)器手動(dòng)加入一條日志

BinaryWrite

向HTTP輸出流中寫入不經(jīng)過(guò)任何字符轉(zhuǎn)換的數(shù)據(jù),用于各客戶端傳送圖片或下載文件

Clear

清空緩存

End

停止處理ASP文件,直接向客戶端輸入現(xiàn)在的結(jié)果

Flush

向客戶端立即發(fā)送緩存中的內(nèi)容

Redirect

向?yàn)g覽器發(fā)送一個(gè)重定向的消息,瀏覽器接收到此消息后重定向到指定頁(yè)

Write

向HTTP輸出流中寫入一個(gè)字符串

(1)為讓網(wǎng)站國(guó)際化,建議顯式設(shè)置Codepage屬性。系統(tǒng)查找CodePage的順序是:

l          Response.CodePage。

l          Session.CodePage。

l          頁(yè)面@CodePage指令。

l          虛擬目錄設(shè)置Metabase屬性AspCodePage。

l          以上都沒(méi)有設(shè)置時(shí),取默認(rèn)值A(chǔ)NSI。

(2)在調(diào)用Response.End時(shí),會(huì)自動(dòng)調(diào)用Response.Flush,將緩存中現(xiàn)有內(nèi)容向客戶端發(fā)送,如果不希望這樣做,可以先調(diào)用Response.Clear清空緩存。

(3)注意Response.Redirect只是向?yàn)g覽器發(fā)送一個(gè)重定向的消息,瀏覽器根據(jù)消息中的URL再次向服務(wù)器發(fā)出新的請(qǐng)求,因此瀏覽器與服務(wù)器之間存在兩次往返,降低了效率并加長(zhǎng)了用戶的等待時(shí)間,建議使用Server.Transfer,它的功能是直接將處理移交到另一頁(yè),而不需要瀏覽器再次發(fā)送請(qǐng)求。

2.應(yīng)用范例

Response對(duì)象的屬性和方法較多,但最常使用的卻比較集中,下面僅就其中使用率最高的幾個(gè)屬性和方法做簡(jiǎn)要示范,如例程2-3所示。

例程2-3  Response對(duì)象的使用范例

<%

         '使用緩存

         Response.Buffer = True

         '設(shè)置字符集

         Response.CharSet = "gb2312"

         '設(shè)置代碼頁(yè)

         Response.CodePage = 936

         '設(shè)置文檔類型

         Response.ContentType = "text/HTML"

         '設(shè)置緩存過(guò)期時(shí)間,如果設(shè)為-1,則立即過(guò)期

         Response.Expires = -1

         '用IsClientConnected判斷客戶端是否仍連接

         If Response.IsClientConnected Then

                  '獲取SessionID

             SessionID = Session.SessionID

             Response.Write "SessionID=" & SessionID & "<br>"

         End If

         '向客戶端輸入信息

         Response.Write "這是一個(gè)演示Respose對(duì)象用法的例程式"

         '注意:?jiǎn)⒂孟旅鎯删浜罂蛻舳藢⒌貌坏饺魏涡畔?/P>

         'Response.Clear()

         'Response.End()

%>

3.典型錯(cuò)誤用法與注意事項(xiàng)

Response對(duì)象的屬性和方法雖然很多,但在使用時(shí)一般不容易出錯(cuò),而涉及更多的是如何優(yōu)化的問(wèn)題。下面就初學(xué)者常犯的錯(cuò)誤與注意事項(xiàng)加以說(shuō)明,詳細(xì)的優(yōu)化方法請(qǐng)參考本書(shū)第3章“創(chuàng)建高性能的ASP應(yīng)用程序”中的內(nèi)容。

(1)在向客戶端輸出部分內(nèi)容后不能再調(diào)用Response.Redirect方法。

在IIS 5.0中雖然默認(rèn)緩沖是打開(kāi)的,但如果在這之前執(zhí)行了Response. Buffer =False或Response.Flush語(yǔ)句之后,再調(diào)用Response.Redirect方法,將會(huì)出錯(cuò),因?yàn)镽esponse.Flush會(huì)將緩沖中的現(xiàn)有數(shù)據(jù)向客戶端輸出。

(2)當(dāng)輸出較多時(shí),適時(shí)使用Flush方法。

因?yàn)殡m然緩沖可以在整體上加快ASP處理速度,但在緩沖內(nèi)容輸出之前,也會(huì)造成客戶端沒(méi)有任何跡象的等待,當(dāng)輸出內(nèi)容較多時(shí)此問(wèn)題尤為嚴(yán)重,所以在適當(dāng)?shù)臅r(shí)候向客戶端輸出一些內(nèi)容是有必要的。

(3)盡可能使用Server.Transfer代替Response.Redirect。

這個(gè)原因前面已經(jīng)說(shuō)過(guò)了,請(qǐng)參見(jiàn)Response對(duì)象。

(4)使用CodePage使你的網(wǎng)站走向國(guó)際化。

[NextPage]

 

2.1.5  Server對(duì)象

Server對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能。

l          創(chuàng)建組件實(shí)例。

l          獲取服務(wù)器的物理路徑。

l          對(duì)字符串進(jìn)行HTML編碼。

l          轉(zhuǎn)向執(zhí)行其他ASP文件。

下面來(lái)看實(shí)現(xiàn)這些功能的具體方法。Server對(duì)象包含的屬性和方法見(jiàn)表2-4。

表2-4  Server對(duì)象包含的屬性和方法

類    型

名    稱

說(shuō)    明

屬性

ScriptTimeout

設(shè)置腳本超時(shí)。當(dāng)一個(gè)ASP頁(yè)面在一個(gè)腳本超時(shí)期限之內(nèi)仍沒(méi)有執(zhí)行完畢,ASP將終止執(zhí)行并顯示超時(shí)錯(cuò)誤

方法

CreateObject

創(chuàng)建一個(gè)服務(wù)器組件的實(shí)例,如果此組件中實(shí)現(xiàn)了OnStartPage 和 OnEndPage方法,那么在調(diào)用CreateObject創(chuàng)建實(shí)例時(shí)將會(huì)執(zhí)行OnStartPage方法

Execute

用來(lái)執(zhí)行一個(gè)ASP文件,被執(zhí)行的ASP文件被看做是當(dāng)前調(diào)用Execute方法的ASP文件的一部分

GetLastError

返回一個(gè)ASPError對(duì)象,用來(lái)描述錯(cuò)誤的詳細(xì)信息。值得注意的是,必須向客戶端發(fā)送一些數(shù)據(jù)后這個(gè)方法才會(huì)起作用

HTMLEncode

將輸入的HTML字符串換為HTML編碼,如輸入“<p>”,輸出“&lt;P&gt;”

MapPath

將虛擬路徑映射為絕對(duì)路徑。如使用Access數(shù)據(jù)庫(kù)時(shí),為防止下載,將其放在站點(diǎn)應(yīng)用程序之外,然后通過(guò)此方法找到數(shù)據(jù)庫(kù)在服務(wù)器上的絕對(duì)路徑

Transfer

停止執(zhí)行此ASP文件,轉(zhuǎn)向執(zhí)行另外一個(gè)ASP文件。如想用此方法代替Response.Redirect方法,需要在調(diào)用Transfer方法前調(diào)用Response.Clear清空緩存

URLEncode

將輸入的字符串進(jìn)行URL編碼,如輸入“http://www.trfsoft.com”,輸出“http%3A%2F%2Fwww%2Etrfsoft%2Ecom”

(1)Execute和Transfer方法都不會(huì)清空當(dāng)前頁(yè)面向緩沖輸出的內(nèi)容而直接轉(zhuǎn)向執(zhí)行另一頁(yè),不同的是,Execute執(zhí)行完后會(huì)返回繼續(xù)執(zhí)行下面的語(yǔ)句,而Transfer會(huì)完全放棄它下面的語(yǔ)句。

(2)這里最常用的是CreateObject和MapPath兩個(gè)方法。

2.1.6  Session對(duì)象

Session對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能。

l          存儲(chǔ)與某次訪問(wèn)相關(guān)的信息。

l          設(shè)置這個(gè)訪問(wèn)的代碼頁(yè),日期格式等。

l          處理訪問(wèn)開(kāi)始與結(jié)束事件。

下面來(lái)看實(shí)現(xiàn)這些功能的具體方法。Session對(duì)象包含的集合、屬性、方法和事件見(jiàn)表2-5。

表2-5  Session對(duì)象包含的集合、屬性、方法和事件

類    型

名    稱

說(shuō)    明

集合

Contents

使用腳本命令(賦值語(yǔ)句)向Session中存儲(chǔ)的數(shù)據(jù),可以省略Contents而直接訪問(wèn),如:Session("var")

StaticObjects

使用<OBJECT>標(biāo)記定義的存儲(chǔ)于Session對(duì)象中的變量集合。運(yùn)行期間不能刪除

屬性

CodePage

設(shè)置當(dāng)前Session的代碼頁(yè),參見(jiàn)Response對(duì)象的CodePage屬性

LCID

設(shè)定當(dāng)前Session的日期、時(shí)間或貨幣的顯示格式,參見(jiàn)Response的LCID屬性

SessionID

返回Session的唯一標(biāo)識(shí)

Timeout

設(shè)置Session的超時(shí)時(shí)間,以分鐘為單位,在IIS中默認(rèn)設(shè)置為20分鐘

方法

Abandon

當(dāng)ASP文件執(zhí)行完畢時(shí)釋放Session中存儲(chǔ)的所有變量,當(dāng)下次訪問(wèn)時(shí),會(huì)重新啟動(dòng)一個(gè)Session對(duì)象。如果不顯式調(diào)用此方法,只有當(dāng)Session超時(shí)時(shí)才會(huì)自動(dòng)釋放Session中的變量

Contents.Remove

刪除Contents集合中的指定變量

Contents.RemoveAll

刪除Contents集合中的全部變量

事件

Session_OnEnd

聲明于global.asa中,客戶端首次訪問(wèn)時(shí)或調(diào)用Abandon后觸發(fā)

Session_OnStart

聲明于global.asa中,Session超時(shí)或者調(diào)用Abandon后觸發(fā)

(1)Session.Abandon調(diào)用后,在本ASP頁(yè)內(nèi)存儲(chǔ)于Session中的變量仍可以使用,直到下一次請(qǐng)求,即訪問(wèn)下一個(gè)ASP頁(yè)面時(shí)才會(huì)生效,此時(shí)SessionID值已改變,并且會(huì)再次執(zhí)行Session_OnStart過(guò)程。在Session.Abandon后調(diào)用Server.Execute和Server.Transfer時(shí),由于是發(fā)生在同一次請(qǐng)求中,所以Session中的變量仍有效。

(2)Contents.RemoveAll方法用于刪除Contents集合中的全部變量,它的作用效果是即時(shí)的,并且不會(huì)放棄(Abandon)當(dāng)前Session對(duì)象,即下次請(qǐng)求時(shí)SessionID不變。

(3)Session對(duì)象常使用的是變量的存取,如Session("UserName") = strName。

 

2.1.7  ObjectContext對(duì)象

ObjectContext對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能。

l          放棄一個(gè)事務(wù)。

l          接受一個(gè)事務(wù)。

下面來(lái)看實(shí)現(xiàn)這些功能的具體方法。ObjectContext對(duì)象包含的方法和事件見(jiàn)表2-6。

表2-6  ObjectContext對(duì)象包含的方法和事件

類    型

名    稱

說(shuō)    明

方法

SetAbort

放棄當(dāng)前事務(wù)

SetComplete

此方法只是說(shuō)明可以接受此事務(wù),不必放棄,并不是立刻接受此事務(wù)。只有當(dāng)前文件執(zhí)行完畢,或者所有參與此事務(wù)的組件都調(diào)用SetComplete,才接受此事務(wù)

事件

OnTransactionAbort

放棄此事務(wù)時(shí)觸發(fā)此過(guò)程

OnTransactionCommit

接受此事務(wù)時(shí)觸發(fā)此過(guò)程

(1)某個(gè)ASP頁(yè)面欲使用這種事務(wù)機(jī)制,或者說(shuō)要使用ObjectContext,需要在文件的開(kāi)頭加上<%@ Transaction = Required %>。

(2)只要調(diào)用一次ObjectContext.SetAbort,就可以放棄此事務(wù)。

(3)一般不用顯式調(diào)用SetComplete,因?yàn)锳SP默認(rèn)是如果沒(méi)有調(diào)用SetAbort,則執(zhí)行完此ASP文件即接受事務(wù)。

(4)OnTransactionAbort過(guò)程與OnTransactionCommit過(guò)程要與上述事務(wù)放在同一個(gè)文件中。

2.1.8  ASPError對(duì)象

ASPError對(duì)象通常用來(lái)實(shí)現(xiàn)以下功能:

處理ASP應(yīng)用的錯(cuò)誤。

下面來(lái)看實(shí)現(xiàn)這個(gè)功能的具體方法。ASPError對(duì)象包含的屬性見(jiàn)表2-7。

表2-7  ASPError對(duì)象包含的屬性

類    型

名    稱

說(shuō)    明

屬性

ASPCode

返回錯(cuò)誤代碼

Number

返回COM標(biāo)準(zhǔn)的錯(cuò)誤代碼

Source

返回錯(cuò)誤的源代碼,如果可以的話,還會(huì)返回它所在的行號(hào)

Category

返回一個(gè)字符串,用于表明錯(cuò)誤類型,如是IIS錯(cuò)誤、腳本錯(cuò)誤還是組件錯(cuò)誤

File

發(fā)生錯(cuò)誤的文件名

Line

發(fā)生錯(cuò)誤所在的行號(hào)

Column

發(fā)生錯(cuò)誤所在的列

Description

錯(cuò)誤描述

ASPDescription

如果這個(gè)錯(cuò)誤與ASP相關(guān)的話,可以返回更詳細(xì)的錯(cuò)誤描述

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (3851人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)