Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> Response.redirect實現頁面重定向

Response.redirect實現頁面重定向

日期:2017/2/8 10:12:54      編輯:關於服務器

  用 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對象的如何使用有了一個比較具體的了解。但要靈活運用,只有不斷練習。

Copyright © Windows教程網 All Rights Reserved