全面解析Server對(duì)象
發(fā)布時(shí)間:2008-06-03 閱讀數(shù): 次 來源:網(wǎng)樂原科技
Server對(duì)象提供對(duì)服務(wù)器上訪問的方法和屬性.大多數(shù)方法和屬性是作為實(shí)用程序的功能提供的。
語法:
Server.property|method
屬性(property)
Server對(duì)象只有一個(gè)屬性:ScriptTimeout 程序能夠運(yùn)行的最大時(shí)間
方法(Methods)
CreateObject 建立一個(gè)對(duì)象實(shí)例.
Execute 執(zhí)行一個(gè)asp文件
GetLastError 返回一個(gè)錯(cuò)誤代碼
HTMLEncode 對(duì)指定的HTML代碼進(jìn)行轉(zhuǎn)換.
MapPath 將一個(gè)相對(duì)路徑轉(zhuǎn)化為一個(gè)絕對(duì)路徑.
Transfer 將當(dāng)前的所有狀態(tài)信息發(fā)送給另一個(gè)asp文件
URLEncode 以URL形式轉(zhuǎn)化指定的代碼,包括空格
Server對(duì)象的方法詳細(xì)說明
CreateObject
語法
Server.CreateObject( progID )
參數(shù)
progID
指定要?jiǎng)?chuàng)建的組件名稱,格式如下: [Vendor.]Component[.Version].
要點(diǎn):
一般來說,用由Server.CreateObject方法創(chuàng)建的對(duì)象擁有頁面的范圍.這就說,當(dāng)這頁的asp程序執(zhí)行完后,這種對(duì)象會(huì)自動(dòng)地消失.
為了創(chuàng)建一個(gè)擁有Session或Application范圍的對(duì)象,你可以在Global.asa文件中使用
Execute
Execute 方法呼叫一個(gè)ASP文件并且執(zhí)行它就像這個(gè)呼叫的ASP文件存在這個(gè)ASP文件中一樣。這很像許多語言中的類的調(diào)用。
語法
Server.Execute( Path )
參數(shù)
Path
指定執(zhí)行的那個(gè)asp文件的路徑。如是它是一個(gè)絕對(duì)路徑,那么它必須是一個(gè)在這個(gè)ASP應(yīng)用程序相同的地方(目錄)。
講解
Server.Execute 方法提供了一種將一個(gè)復(fù)雜ASP應(yīng)用程序分化為小塊單位來執(zhí)行的方法。通過這種方法,你能夠建一個(gè)ASP圖書館,你能夠隨便在你需要時(shí)調(diào)用你圖書館中的ASP文件。這個(gè)就有點(diǎn)像SSI了!嘿嘿!
當(dāng)IIS根據(jù)指定的ASP文件路徑執(zhí)行完這個(gè)ASP文件之后,就會(huì)自動(dòng)返回以前的ASP文件。這個(gè)剛剛執(zhí)行完的ASP文件有可能改變了HTTP head.但是和其它的ASP文件一樣,當(dāng)程序試圖改變http head時(shí),就會(huì)報(bào)錯(cuò)!
這個(gè)path參數(shù)可以包括一個(gè)詢問信息。
如果在被呼叫和呼叫的ASP文件中都含有相同的子函數(shù),那么這些子函數(shù)只在本ASP文件中起作用。舉個(gè)例子,如果在下面的ASP1和ASP2兩個(gè)文件中都含有放棄程序的子函數(shù)。首先ASP1呼叫ASP2,那么ASP2中的的OnTransactionAbort開始執(zhí)行,當(dāng)ASP2執(zhí)行完畢,ASP1中的OnTransactionAbort才開始執(zhí)行。
ASP1:
< %@ Transaction=Required%>
< %
Server.Execute ("Page22.asp")
Sub OnTransactionAbort
Sub OnTransactionCommit
%>
Asp2.asp:
< %@
Transaction=Required
Sub OnTransactionAbort
Sub OnTransactionCommit
%>
Example
ASP1
< % Response.Write("I am going to execute ASP2 ")
Server.Execute("/myasps/asp2.asp")
%>
ASP2
< % Response.Write("Here I am")%>
GetLastError
GetLastError 方法返回一個(gè)ASPError Object 來描述一個(gè)錯(cuò)誤信息.這個(gè)方法只適用于在asp文件發(fā)送任何內(nèi)容給用戶機(jī)之前.
語法
Server.GetLastError ()
要點(diǎn)
如果一個(gè)500;100 用戶錯(cuò)誤已經(jīng)被定義在一個(gè)asp應(yīng)用程序中,它是指的一個(gè)以.asp為后綴的文件。這種情況下,在這個(gè)程序運(yùn)行時(shí)當(dāng)一個(gè)錯(cuò)誤發(fā)生時(shí),服務(wù)器就會(huì)自動(dòng)的以Server.Transfer這種方式傳送到這個(gè)正在執(zhí)行的ASP頁面。ASP應(yīng)用程序就會(huì)將有效的處理這個(gè)錯(cuò)誤。另外,這個(gè)ASPError Object一定要有效,這樣你就能夠看到服務(wù)器提供給你的錯(cuò)誤信息來改這個(gè)文件了!
一般的Web Site 都是根據(jù)文件\iishelp\common\500-100.asp來構(gòu)造的。你能夠用它來執(zhí)行一個(gè)asp錯(cuò)誤,當(dāng)然你能夠自己定義了!。如果你想改變?yōu)榱硗庖粋€(gè)asp文件的來執(zhí)行這些用戶錯(cuò)誤。那么你可以用IIS中的snap-in.
注意:當(dāng)IIS發(fā)現(xiàn)了一個(gè)asp文件或者global.asa文件中的一個(gè)錯(cuò)誤,那么一個(gè)500;100用戶錯(cuò)誤產(chǎn)生。以下的程序?qū)⒉荒軋?zhí)行!
Example
下面的三個(gè)例子證明不同的錯(cuò)誤會(huì)產(chǎn)生的用戶錯(cuò)誤。三個(gè)錯(cuò)誤是:
編譯錯(cuò)誤
運(yùn)行錯(cuò)誤
邏輯錯(cuò)誤
第一個(gè)例子證明了一個(gè)編譯錯(cuò)誤,就是當(dāng)IIS試圖包含一個(gè)文件時(shí)產(chǎn)生的。這個(gè)錯(cuò)誤會(huì)產(chǎn)生是因?yàn)樵谶@個(gè)包含文件中沒有定義所需的參數(shù)。第二個(gè)例子顯示的是一個(gè)運(yùn)行錯(cuò)誤,這個(gè)程序中斷的原因是程序中沒有“next".第三個(gè)例子顯示的是一個(gè)邏輯錯(cuò)誤,因?yàn)檫@個(gè)程序試圖除以一個(gè)0. 不行啦!
Example 1
< %
response.write "hello"
%>
Example 2
< %
dim I
for i=1 to 1
nxt
%>
Example 3
< %
dim i,j
dim sum
sum=0
j=0
for i=1 to 10
sum=sum+1
next
sum=sum/j
%>
HTMLEncode
HTMLEncode方法對(duì)指定的字符串進(jìn)行HTML編碼.
語法
Server.HTMLEncode( string )
參數(shù)
string 要進(jìn)行編碼的字符
例子
下面的程序:
?。?%= Server.HTMLEncode("The paragraph tag: ") %>
輸出為:
The paragraph tag:
注意 程序執(zhí)行后在瀏覽器中看到的是:
The paragraph tag:
但是如果你用"查看源文件"看一下的話,源代碼就不是了.
MapPath
MapPath 方法將相對(duì)路徑轉(zhuǎn)化為服務(wù)器上的物理路徑
語法
Server.MapPath( Path )
參數(shù)
Path
相對(duì)路徑。這個(gè)路徑是以"/"或"\"開頭的路徑,如果這個(gè)路徑中沒有"\",那么MapPath方法就會(huì)返回以當(dāng)前目錄為基礎(chǔ)的路徑。
講解
MapPath 方法不能檢查路徑在這個(gè)服務(wù)器下是否存在。因?yàn)?MapPath 轉(zhuǎn)化路徑時(shí)是不管這個(gè)路徑是否在這個(gè)服務(wù)器下存在的。
你能夠用它來將一個(gè)相對(duì)路徑轉(zhuǎn)化為一個(gè)物理路徑,然后再在這個(gè)路徑下進(jìn)行各種操作。
Example
在下面的例子中,data.txt文件存在 C:\Inetpub\Wwwroot\Script 目錄中,而且一個(gè)test.asp 文件包括下面的代碼。C:\Inetpub\Wwwroot 是該服務(wù)器的主目錄 。
下面的例子中,首先用環(huán)境變量"PATH_INFO"獲得當(dāng)前文件的物理路徑。
下面是Script 代碼:
?。?%= server.mappath(Request.ServerVariables("PATH_INFO"))%>
顯示為:
c:\inetpub\wwwroot\script\test.asp
因?yàn)橄旅娴睦又新窂絽?shù)沒有以"/"開頭,所以它是以當(dāng)前目錄轉(zhuǎn)化的,asp文件是放在C:\Inetpub\Wwwroot\Script中的.以下是 scripts的內(nèi)容:
< %= server.mappath("data.txt")%>
?。?%= server.mappath("script/data.txt")%>
顯示為:
c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script\script\data.txt
以下的兩個(gè)例子是以"/"開頭的.以下是scripts的內(nèi)容:
< %= server.mappath("\script")%>
顯示為:
c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script
直接用"/"或"\"就會(huì)得到服務(wù)器的主目錄:
?。?%= server.mappath("\")%>
顯示為:
c:\inetpub\wwwroot
c:\inetpub\wwwroot
Transfer
transfer 方法會(huì)把一個(gè)正在執(zhí)行的asp文件的所有信息傳給另外一人asp文件。
語法
Server.Transfer (path)
參數(shù)
Path
將要接收信息的asp文件的位置。
要點(diǎn)
當(dāng)你調(diào)用Server.Transfer時(shí),所有內(nèi)建對(duì)象的狀態(tài)信息都會(huì)包含在這次傳送之中。這就是說,所有在保存在Session或Application中的信息都會(huì)被傳送,而且,所有當(dāng)前請(qǐng)求的信息都會(huì)被接收信息的asp文件所接受。
Example
下面的例子示范了從一個(gè)asp文件傳送到另一個(gè)asp文件例子!
ASP1
< % Dim sessvar1 Response.Write Session.SessionID
Response.Write ("")
Response.Write("I am going to ASP2 ")
Server.Transfer("/Myasps/ASP2.asp")
% >
ASP2
< % Response.Write Session.SessionID %>
URLEncode
URLEncode 方法可以將指定字符串進(jìn)行URL編碼。
語法
Server.URLEncode( string )
參數(shù)
string 指定要轉(zhuǎn)化的字符串
Example
下面是代碼:
?。?% Respones.Write(Server.URLEncode("http://www.microsoft.com")) % >
顯示為:
http%3A%2F%2Fwww%2Emicrosoft%2Ecom
屬性:ScriptTimeout
ScriptTimeout 屬性規(guī)定了程序的最大運(yùn)行時(shí)間。
語法
Server.ScriptTimeout = NumSeconds
參數(shù)
NumSeconds
規(guī)定了程序的最大的運(yùn)行時(shí)間(以秒計(jì)算)。缺省值是90秒
Remarks
一個(gè)缺省的Scritpt Timeout的值會(huì)能過ASPScriptTimeOUT屬性來設(shè)置在Web sertvic 或 Web server上。在程序中,ScriptTimeout屬性的值不能小于這個(gè)缺省值。舉個(gè)例子吧,如果NumSeconds我們?cè)O(shè)置為10秒,而缺省值為90秒,那么程序就會(huì)中止在90秒以后,而不是10秒以后的。同樣,如果我們?cè)O(shè)置ScriptTimeout的值為100秒,那么,程序就會(huì)在100秒之后中止,而不是90秒。
Example
下面的例了中程序?qū)⒈辉O(shè)置為100秒后自動(dòng)中止。
< % Server.ScriptTimeout = 100 %>
下面的例子中將重新得到ScriptTimeout的值,然后把它存在Timout變量中
?。?% TimeOut = Server.ScriptTimeout %>