明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

完成頁面重定向

[摘要]實(shí)現(xiàn)頁面重定向用 Redirect 方法可將瀏覽器重定向到另一個(gè) URL,而不是將內(nèi)容發(fā)送給用戶。例如,如果您想確認(rèn)用戶是否已從主頁進(jìn)入了您的應(yīng)用程序,以便能收到一個(gè)客戶 ID,則可以檢驗(yàn)他們是否有...

實(shí)現(xiàn)頁面重定向用 Redirect 方法可將瀏覽器重定向到另一個(gè) URL,而不是將內(nèi)容發(fā)送給用戶。例如,如果您想確認(rèn)用戶是否已從主頁進(jìn)入了您的應(yīng)用程序,以便能收到一個(gè)客戶 ID,則可以檢驗(yàn)他們是否有客戶 ID 號(hào);如果沒有,就可以將其重定向到主頁。以下就是具體例子:
<%If Session("CustomerID") = 0 ThenResponse.Redirect "homepage.asp" End If%> 除非緩沖區(qū)已經(jīng)打開,否則,在任何內(nèi)容或標(biāo)題返回給瀏覽器之前,您必須重定向?yàn)g覽器。將 Response.Redirect 語句放在頁的頂部和<HTML> 標(biāo)記之前可確保沒有任何內(nèi)容返回給瀏覽器。如果在返回給瀏覽器的內(nèi)容或標(biāo)題后使用 Response.Redirect,將看到一個(gè)錯(cuò)誤信息。

如果在頁的中間使用 Response.Redirect,請(qǐng)將其與 Response.Buffer 屬性一起使用,這是因?yàn)樵谀J(rèn)情況下,Web 服務(wù)器返回 HTML 和在處理 ASP 頁時(shí)的腳本處理結(jié)果。但是,您可以設(shè)置 Response 對(duì)象的 Buffer 屬性以便在向用戶發(fā)送任何內(nèi)容之前,先處理頁上的所有的服務(wù)器腳本命令。

可以使用緩沖技術(shù)來確定在頁處理過程中的某個(gè)點(diǎn),而您并不想將該點(diǎn)之前的內(nèi)容發(fā)送給用戶。也可以用 Response 對(duì)象的 Redirect 方法將用戶重定向到另一頁,或者用 Response 對(duì)象的 Clear 方法清除緩沖區(qū)并將不同的內(nèi)容發(fā)送給用戶。下面的例子使用了以上兩種方法。

例子一:
<% '下一句程序必須放在程序在<HTML> 標(biāo)識(shí)符前Response.Buffer = True %><html><body>...
例子二:
<%If Request ("FName") = "" ThenResponse.ClearResponse.Redirect ".. /test.html"ElseResponse.Write Request("FName")End If%></body></html>以上就是Response對(duì)象的在程序中經(jīng)常用到的功能。Server對(duì)象有那些屬性方法以及怎樣使用

Server對(duì)象提供對(duì)服務(wù)器訪問的方法和屬性。其中大多數(shù)方法和屬性是作為實(shí)用程序的功能提供的。
Server對(duì)象有哪些基本屬性和方法?

(1).語法:
Server.property method
(2).屬性(property)
Server對(duì)象只有一個(gè)屬性:ScriptTimeout 程序能夠運(yùn)行的最大時(shí)間
(3).方法(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ì)象的屬性和方法?

(1).CreateObject

語法
Server.CreateObject ( progID )
參數(shù)
progID
指定要?jiǎng)?chuàng)建的組件名稱,格式如下: [Vendor.]Component[.Version]。
要點(diǎn):
一般來說,用由Server.CreateObject方法創(chuàng)建的對(duì)象的生存期在該頁面范圍內(nèi)。這就說,當(dāng)這頁的asp程序執(zhí)行完后,這個(gè)對(duì)象會(huì)自動(dòng)地消失。

為了創(chuàng)建一個(gè)擁有Session或Application范圍的對(duì)象,你就要在Global.asa文件中使用CreateObject方法

(2).Execute

Execute 方法是呼叫一個(gè)ASP文件并且執(zhí)行它,像被呼叫的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文件。

當(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 OnTransactionAbortSub OnTransactionCommit%>
Asp2.asp:
< %@ Transaction = RequiredSub OnTransactionAbortSub OnTransactionCommit%>
例子:
ASP1
<% Response.Write ( "I am going to execute ASP2 " )Server.Execute ( "/myasps/asp2.asp" )%>
ASP2
<% Response.Write ( "Here I am" ) %>(3).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í)行!

下面的三個(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。

例子01:
< %response.write "hello"%>
例子02:
< %dim Ifor I = 1 to 1nxt%>
例子03:
<%dim i , jdim sumsum = 0j = 0for i = 1 to 10sum = sum+1nextsum = sum/j%>(4).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:

但是如果你用"查看源文件"看一下的話,源代碼就不是了。

(5).MapPath

MapPath 方法將相對(duì)路徑轉(zhuǎn)化為服務(wù)器上的物理路徑
語法
Server.MapPath ( Path )
參數(shù)
Path

這個(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)行各種操作。

在下面的例子中,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.txtc:\inetpub\wwwroot\script\script\data.txt
以下的兩個(gè)例子是以"\"開頭的.以下是scripts的內(nèi)容:
<%= server.mappath ( " \script " ) %>
顯示為:
c:\inetpub\wwwroot\script\data.txtc:\inetpub\wwwroot\script
直接用"/"或"\"就會(huì)得到服務(wù)器的主目錄:
<%= server.mappath ( " \ " ) %>
顯示為:
c:\inetpub\wwwroot(6).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文件所接受。

下面的例子示范了從一個(gè)asp文件傳送到另一個(gè)asp文件例子!
ASP1
<% Dim sessvar1 Response.Write Session.SessionIDResponse.Write ( " " )Response.Write ( "I am going to ASP2 " )Server.Transfer ( "/Myasps/ASP2.asp" )%>
ASP2
<% Response.Write Session.SessionID %>(7).URLEncode方法:

URLEncode 方法可以將指定字符串進(jìn)行URL編碼。
語法
Server.URLEncode ( string )
參數(shù)
string 指定要轉(zhuǎn)化的字符串
下面是代碼:
<% Respones.Write ( Server.URLEncode ( http://www.microsoft.com ) ) %>
顯示為:
http%3A%2F%2Fwww%2Emicrosoft%2Ecom

(8).屬性:ScriptTimeout

ScriptTimeout 屬性規(guī)定了程序的最大運(yùn)行時(shí)間。
語法
Server.ScriptTimeout = NumSeconds
參數(shù)
NumSeconds
規(guī)定了程序的最大的運(yùn)行時(shí)間(以秒計(jì)算)。缺省值是90秒
Remarks

Web sertvic 或 Web server上缺省的Scritpt Timeout的值能通過ASPScriptTimeOUT屬性來設(shè)置。在程序中,ScriptTimeout屬性的值不能小于這個(gè)缺省值。舉個(gè)例子吧,如果NumSeconds我們?cè)O(shè)置為10秒,而缺省值為90秒,那么程序就會(huì)中止在90秒以后,而不是10秒以后的。同樣,如果我們?cè)O(shè)置ScriptTimeout的值為100秒,那么,程序就會(huì)在100秒之后中止,而不是90秒。

下面的例了中程序?qū)⒈辉O(shè)置為100秒后自動(dòng)中止。

<% Server.ScriptTimeout = 100 %>
下面的例子中將重新得到ScriptTimeout的值,然后把它存在Timout變量中
<% TimeOut = Server.ScriptTimeout %>

總結(jié):

通過以上結(jié)合例子的介紹,對(duì)server對(duì)象的如何使用有了一個(gè)比較具體的了解。但要靈活運(yùn)用,只有不斷練習(xí)。


標(biāo)簽:完成頁面重定向