ASP六大對象介紹(2)_ASP教程
推薦:用ASP代碼得到客戶端IP和當前地址1、得到客戶端IP <%myip=Request.ServerVariables("Remote_Addr")%> 2、得到當前地址 以下為引用的內容: <script> document
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://www.tinyu.com
session對象
Session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。每一訪問者都會單獨獲得一個Session。在Web應用程序中,當一個用戶訪問該應用時,Session類型的變量可以供這個用戶在該Web應用的所有頁面中共享數據;如果另一個用戶也同時訪問該Web應用,他也擁有自己的Session變量,但兩個用戶之間無法通過session變量共享信息,而Application類型的變更則可以實現站點多個用戶之間在所有頁面中共享信息。
1、sessionID屬性
該屬性返回當前會話的唯一標志,為每一個session分配不同的編號。
我曾在開發過程中就遇到對用戶的控制問題。它要實現的功能就是,針對某個網站的一個模塊,當一個會員登錄后正在看此模塊時,另一個人用同樣的會員名登錄,就不能瀏覽這個模塊。也就是說一個會員名同時只能一個人瀏覽此模塊。我通過用會員名(假設為UserID,唯一)和SessionID來實現了控制。當會員登錄時,給這個會員一個Session記錄登錄狀態如:Session("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請求時,觸發此事件,并建立一個session對象。同理,這個事件也必須定在Global.asa文件中。
當調用Session.Abandon方法時或者在TimeOut的時間內沒有刷新,這會觸發Session_OnEnd事件,然后執行里面的腳本。Session變量與特定的用戶相聯系,針對某一個用戶賦值的Session變量是和其他用戶的session變量完全獨立的,不會存在相互影響。
session應用一列:
與Application一樣,一個被定義為Session類型的數組只能將整個數組作為一個對象,用戶不能直接改變Session數組中某個元素的值。為了創建一個Session數組,需先定義一個普通的數組,并對它的每一個元素賦初值,最后把它定義為一個session數組。如:
以下為引用的內容: <% |
分享:通過實例講解來學習ASP中的函數作用:返回一個數組 語法:Array(list) 適用的類型:字符,數字均可 以下為引用的內容: <% Dim myArray() For i = 1 to 7 Redim Preserve myArr
- 相關鏈接:
- 教程說明:
ASP教程-ASP六大對象介紹(2)。