ASP6大對(duì)象說明(2)
發(fā)表時(shí)間:2024-01-24 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]1、Buffer屬性 該屬性用于指定頁面輸出時(shí)是否要用到緩沖區(qū),默認(rèn)值為False。當(dāng)它為True時(shí),直到整個(gè)Active Server Page執(zhí)行結(jié)束后才會(huì)將結(jié)果輸出到瀏覽器上。如: <%Response.Buffer=True%> <html> <Head>...
1、Buffer屬性
該屬性用于指定頁面輸出時(shí)是否要用到緩沖區(qū),默認(rèn)值為False。當(dāng)它為True時(shí),直到整個(gè)Active Server Page執(zhí)行結(jié)束后才會(huì)將結(jié)果輸出到瀏覽器上。如:
<%Response.Buffer=True%>
<html>
<Head>
<title>Buffer示例</title>
</head>
<body>
<%
for i=1 to 500
response.write(i & "<br>")
next
%>
</body>
</html>
這頁執(zhí)行時(shí),整個(gè)主頁的所有內(nèi)容會(huì)同時(shí)顯示在瀏覽器上,這個(gè)主頁會(huì)存在緩存區(qū)中直到腳本執(zhí)行結(jié)束。
2、Expires屬性
該屬性用于設(shè)置瀏覽器緩存頁面的時(shí)間長度(單位為分),必須在服務(wù)器端刷新。通過如下設(shè)置:
<%Response.Expires=0%>
通過在ASP文件中加入這一行代碼,要求每次請(qǐng)求是刷新頁面,因?yàn)镽esponse一收到頁面就會(huì)過期。
3、Write方法
該方法把數(shù)據(jù)發(fā)送到客戶端瀏覽器,如:
<%Response.write "Hello,world!"%>
4、Redirect方法
該方法使瀏覽器可以重新定位到另一個(gè)URL上,這樣,當(dāng)客戶發(fā)出Web請(qǐng)求時(shí),客戶端的瀏覽器類型已經(jīng)確定,客戶被重新定位到相應(yīng)的頁面。如:
<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>
這個(gè)例子當(dāng)用戶選擇了以后,按"Jump"按鈕提交表單,服務(wù)器接到申請(qǐng)后調(diào)用formjump.asp判斷后定位到相應(yīng)的URL。不過這里有一點(diǎn)要注意,HTTP標(biāo)題已經(jīng)寫入到客戶瀏覽器,任何HTTP標(biāo)題的修改必須在寫入頁內(nèi)容之前,遇到這種問題時(shí),可以如下做:
在文件的開始<@ Language=..>后寫:
Response.Buffer=True
在結(jié)尾定:
Response.Flush
這里Flush是Response的一個(gè)方法,它必須是Buffer屬性設(shè)置為True時(shí)才能使用,否則會(huì)產(chǎn)生一個(gè)運(yùn)行模式錯(cuò)誤。另外一個(gè)Clear方法也是用于清除被緩存的頁面,同樣要Buffer屬性設(shè)置為True時(shí)才能使用。
5、End方法
該方法用于告知Active Server當(dāng)遇到該方法時(shí)停止處理ASP文件。如果Response對(duì)象的Buffer屬性設(shè)置為True,這時(shí)End方法即把緩存中的內(nèi)容發(fā)送到客戶并清除沖區(qū)。所以要取消所有向客戶的輸出民,可以先清除緩沖區(qū),然后利用End方法。如:
<%
Response.buffer=true
On error resume next
Err.clear
if Err.number<>0 then
Response.Clear
Response.End
end if
%>
Server 對(duì)象:
Server 對(duì)象提供對(duì)服務(wù)器上的方法和屬性的訪問。其中大多數(shù)方法和屬性是作為實(shí)用程序的功能服務(wù)的。
語法
Server.property method
屬性
ScriptTimeout:
ScriptTimeout 屬性指定腳本在結(jié)束前最大可運(yùn)行多長時(shí)間。 當(dāng)處理服務(wù)器組件時(shí),超時(shí)限制將不再生效。
語法 Server.ScriptTimeout = NumSeconds
參數(shù) NumSeconds
指定腳本在被服務(wù)器結(jié)束前最大可運(yùn)行的秒數(shù)。默認(rèn)值為 90 秒。
注釋
通過使用元數(shù)據(jù)庫中的AspScriptTimeout屬性可以為 Web 服務(wù)或 Web 服務(wù)器設(shè)置缺省的ScriptTimeout值。ScriptTimeout屬性不能設(shè)置為小于在元數(shù)據(jù)庫中指定的值。例如,如果NumSeconds設(shè)置為10,而元數(shù)據(jù)庫設(shè)置包含了默認(rèn)值90秒,則腳本在90秒后超時(shí)。但如果NumSeconds設(shè)置為100,則腳本在100秒后超時(shí)。
關(guān)于使用元數(shù)據(jù)庫的詳細(xì)信息,參閱 關(guān)于元數(shù)據(jù)庫。
示例 以下示例中,如果服務(wù)器處理腳本超過 100 秒,將使之超時(shí)。
<% Server.ScriptTimeout = 100 %>
以下示例獲取 ScriptTimeout 屬性當(dāng)前值,并將其存儲(chǔ)在變量 TimeOut 中。
<% TimeOut = Server.ScriptTimeout %>
方法
CreateObject
CreateObject 方法創(chuàng)建服務(wù)器組件的實(shí)例。如果該組件執(zhí)行了 OnStartPage 和 OnEndPage 方法,則此時(shí)就會(huì)調(diào)用 OnStartPage 方法。有關(guān)服務(wù)器組件的詳細(xì)信息,請(qǐng)參閱 可安裝的 ASP 組件 。
語法 Server.CreateObject( progID )
參數(shù) progID 指定要?jiǎng)?chuàng)建的對(duì)象的類型。progID 的格式為 [Vendor.] component[.Version]。
注釋 默認(rèn)情況下,由 Server.CreateObject 方法創(chuàng)建的對(duì)象具有頁作用域。這就是說,再當(dāng)前 ASP 頁處理完成之后,服務(wù)器將自動(dòng)破壞這些對(duì)象。要?jiǎng)?chuàng)建有會(huì)話或應(yīng)用程序作用域的對(duì)象,可以使用 <OBJECT> 標(biāo)記并設(shè)置 SESSION 或 APPLICATION 的 SCOPE 屬性,也可以在對(duì)話及應(yīng)用程序變量中存儲(chǔ)該對(duì)象。
例如,在如下所示的腳本中,當(dāng) Session 對(duì)象被破壞,即當(dāng)對(duì)話超時(shí)時(shí)或 Abandon 方法被調(diào)用時(shí),存儲(chǔ)在會(huì)話變量中的對(duì)象也將被破壞。
<% Set Session("ad") = Server.CreateObject("MSWC.AdRotator")%>
可以通過將變量設(shè)置為 Nothing 或新的值來破壞對(duì)象,如下所示。第一個(gè)例子釋放 ad 對(duì)象,第二個(gè)例子用字串代替 ad 。
<% Session ("ad") = Nothing %>
<% Session ("ad") = " Other Valum " %>
不能創(chuàng)建與內(nèi)建對(duì)象同名的對(duì)象實(shí)例。 例如,下列腳本將返回錯(cuò)誤。
<% Set Response = Server.CreateObject("Response") %>
示例 <% Set MyAd = Server.CreateObject("MSWC.AdRotator") %>
上面的例子創(chuàng)建一個(gè)名為 MyAd 的 MSWC.AdRotator 服務(wù)器組件,MSWC.AdRotator 組件可用于在 Web 頁上的自動(dòng)輪換廣告。
關(guān)于服務(wù)器組件的詳細(xì)信息, 請(qǐng)參閱 Creating Components for ASP.
HTMLEncode HTMLEncode方法對(duì)指定的字符串應(yīng)用 HTML 編碼。
語法 Server.HTMLEncode( string )
參數(shù) string 指定要編碼的字符串。
示例腳本 <%= Server.HTMLEncode("The paragraph tag: <P>") %>
輸出 The paragraph tag: <P>
注意 以上輸出將被 Web 瀏覽器顯示為The paragraph tag: <P>如果查看一下源文件或以文本方式打開一個(gè) Web 頁,您就可以看到已編碼的 HTML。
MapPath
MapPath 方法將指定的相對(duì)或虛擬路徑映射到服務(wù)器上相應(yīng)的物理目錄上。
語法
Server.MapPath( Path )
參數(shù)
Path
指定要映射物理目錄的相對(duì)或虛擬路徑。若 Path 以一個(gè)正斜杠 (/) 或反斜杠 (\) 開始,則 MapPath 方法返回路徑時(shí)將 Path 視為完整的虛擬路徑。若 Path 不是以斜杠開始,則 MapPath 方法返回同 .asp 文件中已有的路徑相對(duì)的路徑。
注釋
MapPath 方法不支持相對(duì)路徑語法 (.) 或 (..)。例如,下列相對(duì)路徑 ../MyDir/MyFile.txt 返回一個(gè)錯(cuò)誤。
MapPath 方法不檢查返回的路徑是否正確或在服務(wù)器上是否存在。
因?yàn)?MapPath 方法只映射路徑而不管指定的目錄是否存在,所以,您可以先用 MapPath 方法映射物理目錄結(jié)構(gòu)的路徑,然后將其傳遞給在服務(wù)器上創(chuàng)建指定目錄或文件的組件。
示例
對(duì)于下列示例,文件data.txt和包含下列腳本的test.asp文件都位于目錄C:\Inetpub\Wwwroot\Script下。C:\Inetpub\Wwwroot目錄被設(shè)置為服務(wù)器的宿主目錄。
下列示例使用服務(wù)器變量 PATH_INFO 映射當(dāng)前文件的物理路徑。腳本
<%= server.mappath(Request.ServerVariables("PATH_INFO"))%><BR>
輸出
c:\inetpub\wwwroot\script\test.asp<BR>
由于下列示例中的路徑參數(shù)不是以斜杠字符開始的,所以它們被相對(duì)映射到當(dāng)前目錄,此處是 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>
接下來的兩個(gè)示例使用斜杠字符指定返回的路徑應(yīng)被視為在服務(wù)器的完整虛擬路徑。腳本
<%= 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 編碼規(guī)則,包括轉(zhuǎn)義字符,應(yīng)用到指定的字符串。
語法
Server.URLEncode( string )
參數(shù)
String 指定要編碼的字符串。
示例
腳本 <%Response.Write(Server.URLEncode("http://www.tinyu.com";)) %>
輸出 http%3A%2F%2Fwww%2Etinyu%2Ecom
Session對(duì)象
Session其實(shí)指的就是訪問者從到達(dá)某個(gè)特定主頁到離開為止的那段時(shí)間。每一訪問者都會(huì)單獨(dú)獲得一個(gè)Session。在Web應(yīng)用程序中,當(dāng)一個(gè)用戶訪問該應(yīng)用時(shí),Session類型的變量可以供這個(gè)用戶在該Web應(yīng)用的所有頁面中共享數(shù)據(jù);如果另一個(gè)用戶也同時(shí)訪問該Web應(yīng)用,他也擁有自己的Session變量,但兩個(gè)用戶之間無法通過Session變量共享信息,而Application類型的變更則可以實(shí)現(xiàn)站點(diǎn)多個(gè)用戶之間在所有頁面中共享信息。
1、SessionID屬性
該屬性返回當(dāng)前會(huì)話的唯一標(biāo)志,為每一個(gè)Session分配不同的編號(hào)。
我曾在開發(fā)過程中就遇到對(duì)用戶的控制問題。它要實(shí)現(xiàn)的功能就是,針對(duì)某個(gè)網(wǎng)站的一個(gè)模塊,當(dāng)一個(gè)會(huì)員登錄后正在看此模塊時(shí),另一個(gè)人用同樣的會(huì)員名登錄,就不能瀏覽這個(gè)模塊。也就是說一個(gè)會(huì)員名同時(shí)只能一個(gè)人瀏覽此模塊。我通過用會(huì)員名(假設(shè)為UserID,唯一)和SessionID來實(shí)現(xiàn)了控制。當(dāng)會(huì)員登錄時(shí),給這個(gè)會(huì)員一個(gè)Session記錄登錄狀態(tài)如:Session("Status")="Logged",同時(shí)把這個(gè)會(huì)員的Session.SessionID寫入數(shù)據(jù)庫。當(dāng)他要瀏覽此模塊時(shí),先判斷其是否登錄,若已經(jīng)登錄再判斷它的SessionID是否與數(shù)據(jù)庫記錄的相同,如果不同則不能訪問。這樣,當(dāng)另一個(gè)用戶用相同的會(huì)員名登錄時(shí),那么數(shù)據(jù)庫中記錄的就是新的SessionID,前者訪問此模塊時(shí)就不能通過檢查。這就實(shí)現(xiàn)了一個(gè)會(huì)員名同時(shí)只能一個(gè)人瀏覽某個(gè)模塊。這個(gè)功能在一些收費(fèi)網(wǎng)站有很有特別作用,它防止了一個(gè)會(huì)員名給多個(gè)人瀏覽的問題,為公司保障了利益。
2、TimeOut屬性
該屬性用來定義用戶Session對(duì)象的時(shí)限。如果用戶在規(guī)定的時(shí)間內(nèi)沒有刷新網(wǎng)頁,則Session對(duì)象就會(huì)終止。一般默認(rèn)為20分鐘。
3、Abandon方法
該方法是Session對(duì)象的唯一方法,可以清除Session對(duì)象,用來消除用戶的Session對(duì)象并釋放其所占的資源。如: <% Session.Abandon %>
4、Session_OnStart和Session_OnEnd事件
和Application一樣,當(dāng)對(duì)象的例程每一次啟動(dòng)時(shí)觸發(fā)Session_OnStart事件,然后運(yùn)行Session_Onstart事件的處理過程。也就是說,當(dāng)服務(wù)器接收到應(yīng)用程序中的URL的HTTP請(qǐng)求時(shí),觸發(fā)此事件,并建立一個(gè)Session對(duì)象。同理,這個(gè)事件也必須定在Global.asa文件中。
當(dāng)調(diào)用Session.Abandon方法時(shí)或者在TimeOut的時(shí)間內(nèi)沒有刷新,這會(huì)觸發(fā)Session_OnEnd事件,然后執(zhí)行里面的腳本。Session變量與特定的用戶相聯(lián)系,針對(duì)某一個(gè)用戶賦值的Session變量是和其他用戶的Session變量完全獨(dú)立的,不會(huì)存在相互影響。
Session應(yīng)用一列:
與Application一樣,一個(gè)被定義為Session類型的數(shù)組只能將整個(gè)數(shù)組作為一個(gè)對(duì)象,用戶不能直接改變Session數(shù)組中某個(gè)元素的值。為了創(chuàng)建一個(gè)Session數(shù)組,需先定義一個(gè)普通的數(shù)組,并對(duì)它的每一個(gè)元素賦初值,最后把它定義為一個(gè)Session數(shù)組。如:
<%
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>"
%>