用 Redirect 方法可將浏覽器重定向到另一個 URL,而不是將內容發送給用戶。例如,如果您想確認用戶是否已從主頁進入了您的應用程序,以便能收到一個客戶 ID,則可以檢驗他們是否有客戶 ID 號;如果沒有,就可以將其重定向到主頁。以下就是具體例子:
<%If Session("CustomerID") = 0 Then Response.Redirect "homepage.asp" End If%>
除非緩沖區已經打開,否則,在任何內容或標題返回給浏覽器之前,您必須重定向浏覽器。將 Response.Redirect 語句放在頁的頂部和<HTML> 標記之前可確保沒有任何內容返回給浏覽器。如果在返回給浏覽器的內容或標題後使用 Response.Redirect,將看到一個錯誤信息。
如果在頁的中間使用 Response.Redirect,請將其與 Response.Buffer 屬性一起使用,這是因為在默認情況下,Web 服務器返回 HTML 和在處理 ASP 頁時的腳本處理結果。但是,您可以設置 Response 對象的 Buffer 屬性以便在向用戶發送任何內容之前,先處理頁上的所有的服務器腳本命令。
可以使用緩沖技術來確定在頁處理過程中的某個點,而您並不想將該點之前的內容發送給用戶。也可以用 Response 對象的 Redirect 方法將用戶重定向到另一頁,或者用 Response 對象的 Clear 方法清除緩沖區並將不同的內容發送給用戶。下面的例子使用了以上兩種方法。
例子一:
<% ’下一句程序必須放在程序在<HTML> 標識符前Response.Buffer = True %><html><body>...
例子二:
<%If Request ("FName") = "" Then Response.Clear Response.Redirect ".. /test.html"Else Response.Write Request("FName")End If%></body></html>
以上就是Response對象的在程序中經常用到的功能。
Server對象有那些屬性方法以及怎樣使用
Server對象提供對服務器訪問的方法和屬性。其中大多數方法和屬性是作為實用程序的功能提供的。
Server對象有哪些基本屬性和方法?
(1).語法:
Server.property|method
(2).屬性(property)
Server對象只有一個屬性:ScriptTimeout 程序能夠運行的最大時間
(3).方法(Methods)
CreateObject 建立一個對象實例.
Execute 執行一個asp文件
GetLastError 返回一個錯誤代碼
HTMLEncode 對指定的HTML代碼進行轉換.
MapPath 將一個相對路徑轉化為一個絕對路徑.
Transfer 將當前的所有狀態信息發送給另一個asp文件
URLEncode 以URL形式轉化指定的代碼,包括空格
如何使用Server對象的屬性和方法?
(1).CreateObject
語法
Server.CreateObject ( progID )
參數
progID
指定要創建的組件名稱,格式如下: [Vendor.]Component[.Version]。
要點:
一般來說,用由Server.CreateObject方法創建的對象的生存期在該頁面范圍內。這就說,當這頁的asp程序執行完後,這個對象會自動地消失。
為了創建一個擁有Session或Application范圍的對象,你就要在Global.asa文件中使用CreateObject方法
(2).Execute
Execute 方法是呼叫一個ASP文件並且執行它,像被呼叫的ASP文件存在這個ASP文件中一樣。這很與許多語言中的類的調用相似。
語法
Server.Execute ( Path )
參數
Path
指定將執行的那個asp文件的路徑。如果它是一個相對路徑,那麼它必須是一個和這個ASP應用程序相同的地方(目錄)的文件。
講解
Server.Execute 方法提供了一個將復雜ASP應用程序分化為小塊單位來執行的方法。通過這種方法,你能夠建一個ASP圖書館,你能夠隨便在你需要時調用你圖書館中的ASP文件。
當IIS根據指定的ASP文件路徑執行完這個ASP文件之後,就會自動返回以前的ASP文件。這個剛剛執行完的ASP文件有可能改變了HTTP head。但是和其它的ASP文件一樣,當程序試圖改變http head時,就會報錯!
這個path參數可以包括一個詢問信息。
如果在被呼叫和呼叫的ASP文件中都含有相同的子函數,那麼這些子函數只在本ASP文件中起作用。舉個例子,如果在下面的ASP1和ASP2兩個文件中都含有放棄程序的子函數。首先ASP1呼叫ASP2,那麼ASP2中的的OnTransactionAbort開始執行,當ASP2執行完畢,ASP1中的OnTransactionAbort才開始執行。
ASP1:
<%@ Transaction = Required %><% Server.Execute ("Page22.asp") Sub OnTransactionAbort Sub OnTransactionCommit%>
Asp2.asp:
< %@ Transaction = Required Sub OnTransactionAbort Sub OnTransactionCommit%>
例子:
ASP1
<% Response.Write ( "I am going to execute ASP2 " )Server.Execute ( "/myasps/asp2.asp" )%>
ASP2
<% Response.Write ( "Here I am" ) %>
(3).GetLastError方法
GetLastError 方法返回一個ASPError Object 來描述一個錯誤信息.這個方法只適用於在asp文件發送任何內容給用戶機之前.
語法
Server.GetLastError ( )
要點:
如果一個500;100 用戶錯誤已經被定義在一個asp應用程序中,它是指的一個以.asp為後綴的文件。這種情況下,在這個程序運行時當一個錯誤發生時,服務器就會自動的以Server.Transfer這種方式傳送到這個正在執行的ASP頁面。ASP應用程序就會將有效的處理這個錯誤。另外,這個ASPError Object一定要有效,這樣你就能夠看到服務器提供給你的錯誤信息來改這個文件了!
一般的Web Site 都是根據文件iishelpcommon0-100.asp來構造的。你能夠用它來執行一個asp錯誤,當然你能夠自己定義了!。如果你想改變為另外一個asp文件的來執行這些用戶錯誤。那麼你可以用IIS中的snap-in。
注意:當IIS發現了一個asp文件或者global.asa文件中的一個錯誤,那麼一個500;100用戶錯誤產生。以下的程序將不能執行!
下面的三個例子證明不同的錯誤會產生的用戶錯誤。三個錯誤是:
編譯錯誤
運行錯誤
邏輯錯誤
第一個例子證明了一個編譯錯誤,就是當IIS試圖包含一個文件時產生的。這個錯誤會產生是因為在這個包含文件中沒有定義所需的參數。第二個例子顯示的是一個運行錯誤,這個程序中斷的原因是程序中沒有"next"。第三個例子顯示的是一個邏輯錯誤,因為這個程序試圖除以一個0。
例子01:
< % response.write "hello"%>
例子02:
< % dim I for I = 1 to 1 nxt%>
例子03:
<% dim i , j dim sum sum = 0 j = 0 for i = 1 to 10 sum = sum+1 next sum = sum/j%>
(4).HTMLEncode方法:
HTMLEncode方法對指定的字符串進行HTML編碼。
語法
Server.HTMLEncode ( string )
參數
string 要進行編碼的字符
例子
下面的程序:
<%= Server.HTMLEncode ( "The paragraph tag: " ) %>
輸出為:
The paragraph tag:
注意 程序執行後在浏覽器中看到的是:
The paragraph tag:
但是如果你用"查看源文件"看一下的話,源代碼就不是了。
(5).MapPath
MapPath 方法將相對路徑轉化為服務器上的物理路徑
語法
Server.MapPath ( Path )
參數
Path
這個路徑是以"/"或""開頭的路徑,如果這個路徑中沒有"",那麼MapPath方法就會返回以當前目錄為基礎的路徑。
講解
MapPath 方法不能檢查路徑在這個服務器下是否存在。因為 MapPath 轉化路徑時是不管這個路徑是否在這個服務器下存在的。
你能夠用它來將一個相對路徑轉化為一個物理路徑,然後再在這個路徑下進行各種操作。
在下面的例子中,data.txt文件存在 C:InetpubWwwrootScript 目錄中,而一個test.asp 文件包括下面的代碼。C:InetpubWwwroot 是該服務器的主目錄 。
下面的例子中,首先用環境變量"PATH_INFO"獲得當前文件的物理路徑。
下面是Script 代碼:
<%= server.mappath ( Request.ServerVariables ( "PATH_INFO" ) ) %>
顯示為:
c:inetpubwwwrootscripttest.asp
因為下面的例子中路徑參數沒有以"/"開頭,所以它是以當前目錄轉化的,asp文件是放在C:InetpubWwwrootScript中的.以下是 scripts的內容:
<%= server.mappath ( " data.txt " ) %> <%= server.mappath ( " script/data.txt " ) %>
顯示為:
c:inetpubwwwrootscriptdata.txt c:inetpubwwwrootscriptscriptdata.txt
以下的兩個例子是以""開頭的.以下是scripts的內容:
<%= server.mappath ( " script " ) %>
顯示為:
c:inetpubwwwrootscriptdata.txt c:inetpubwwwrootscript
直接用"/"或""就會得到服務器的主目錄:
<%= server.mappath ( " " ) %>
顯示為:
c:inetpubwwwroot
(6).Transfer方法:
transfer 方法會把一個正在執行的asp文件的所有信息傳給另外一人asp文件。
語法
Server.Transfer ( path )
參數
Path
將要接收信息的asp文件的位置。
要點:
當你調用Server.Transfer時,所有內建對象的狀態信息都會包含在這次傳送之中。這就是說,所有在保存在Session或Application中的信息都會被傳送,而且所有當前請求的信息都會被接收信息的asp文件所接受。
下面的例子示范了從一個asp文件傳送到另一個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 %>
(7).URLEncode方法:
URLEncode 方法可以將指定字符串進行URL編碼。
語法
Server.URLEncode ( string )
參數
string 指定要轉化的字符串
下面是代碼:
<% Respones.Write ( Server.URLEncode ( http://www.microsoft.com ) ) %>
顯示為:
http%3A%2F%2Fwww%2Emicrosoft%2Ecom
(8).屬性:ScriptTimeout
ScriptTimeout 屬性規定了程序的最大運行時間。
語法
Server.ScriptTimeout = NumSeconds
參數
NumSeconds
規定了程序的最大的運行時間(以秒計算)。缺省值是Array0秒
Remarks
Web sertvic 或 Web server上缺省的Scritpt Timeout的值能通過ASPScriptTimeOUT屬性來設置。在程序中,ScriptTimeout屬性的值不能小於這個缺省值。舉個例子吧,如果NumSeconds我們設置為10秒,而缺省值為Array0秒,那麼程序就會中止在Array0秒以後,而不是10秒以後的。同樣,如果我們設置ScriptTimeout的值為100秒,那麼,程序就會在100秒之後中止,而不是Array0秒。
下面的例了中程序將被設置為100秒後自動中止。
<% Server.ScriptTimeout = 100 %>
下面的例子中將重新得到ScriptTimeout的值,然後把它存在Timout變量中
<% TimeOut = Server.ScriptTimeout %>
總結:
通過以上結合例子的介紹,對server對象的如何使用有了一個比較具體的了解。但要靈活運用,只有不斷練習。