ASP 3.0 新特色先睹為快

來源:互聯網
上載者:User
如果你現在正在使用Win2000和IIS5.0的話,那麼就可以體會到ASP 3.0
帶來的新改變了。。。
ASP 3.0相對於ASP 2.0(就是IIS 4.0中的asp版本)並沒有特別大的改動。
但是它也帶來了一些很有特色的加強功能,讓我們來看看這些新增的功能把:
Server.Transfer
這是一種從當前的asp頁面控制另外一個asp頁面的新的方法。
它可以用來替代Response.Redirect方法.
舉例說明:
假設你想在執行了一些處理後將使用者重新置放到另外一個新的URL.
如果是在AS 2.0中,你的執行過程是這樣的,先執行你的處理過程然後使用
Response.Redirect將使用者重新置放到url。使用這種方法的問題是Response.Redirect
太過於臃腫了 (就是執行效率太低下)- 因為這種方式是首先要給用戶端的瀏覽器發送一個
訊息,告訴瀏覽器現在需要重新置放到一個新的url了.然後瀏覽器在讀取了這個
請求後,再給服務端返回一個資訊,請求服務端把自己定位到那個url中去,最後
服務端才會處理這個新的請求並把html傳遞給用戶端。

從上面的過程中可以看出,一個Response.Redirect導致了大量的網路通訊。
而Server.Transfer就是為瞭解決這個問題而出現的,它可以簡單的理解為服務端的
url重新置放,也就是說,它是直接在服務端就可以重新置放url的,而不必和用戶端進行
過多的通訊,從而能夠避免加重網路通訊。
下面是一個簡單的例子:
'執行你所需要的處理過程
...
'將使用者重新置放到DoneProcessing.asp
Server.Transfer "/scripts/DoneProcessing.asp"

Server.Execute
? 這個Execute方法有點類似與上面介紹的Transfer方法,但不同的是,Execute方法
會在被調用的asp頁面執行完成後將控制權交給調用被調用的asp頁面。
呵呵,是不是有點糊塗呀,讓例子來說明問題:
假設Page1.asp的代碼如下:
Response.Write "Hello, "
Server.Execute "Page2.asp"
Response.Write "World!"

而Page2.asp代碼如下:
Response.Write "Good morning!"

當通過瀏覽器瀏覽Page1.asp時,首先會輸出 Hello 到用戶端。
然後,將執行Page2.asp,結果是將 Good morning! 輸出給用戶端.
最後,控制權又回到Page1.asp離開的地方,結果是將 World! 輸出給用戶端。
最後用戶端能夠看到的結果為:

Hello, Good morning!World!??

對於這一切,用戶端並不知道Page1.asp調用了Page2.asp,並且瀏覽器也沒有
重新置放或則重新整理,因為所有的這一切都是在服務端完成的。本文中將介紹ASP 3.0中的一個全新的內建對象ASPError對象.
ASPError Object
這個新增的,內建與ASP 3.0中的對象提供了一個以往版本中沒有的
專門用來處理錯誤的對象,這樣,我們來操縱錯誤就可以成為可能了。
以前你可以使用VBScript中的On Error Resume Next或則Jscript的try ... Catch來捕獲錯誤,
但是你不能夠捕獲到COM對象、或則內建的ASP對象中發生的錯誤
但是如果你要是使用了ASPError對象的話,那麼一切都將有可能改變。

要使用這個對象,首先我們需要做的是在IIS中自訂HTTP錯誤資訊(如何做我可是說了不下
10次了,呵呵。)。這樣當與ASP相關的錯誤資訊發生後,就會觸發HTTP error 500;100。

然後在ASP指令碼中可以通過訪問ASPError對象來判斷到底是發生了什麼樣的錯誤,
ASPError對象有一系列唯讀屬性擷取最後一個錯誤的詳細資料。
這個服務端的對象包含有一個新的方法GetLastError,必須使用它來擷取發生的
錯誤資訊。

現在還是讓例子來說明問題把,假設用來處理錯誤的指令檔為 CatchError.asp.
首先應該設定IIS的自訂錯誤資訊中的HTTP 500;100均重新置放與CatchError.asp.
然後就是按照自己的方式來顯示錯誤資訊了,代碼如下:following code:
<%
Dim objLastASPError
Set objLastASPError = Server.GetLastError
%>

捕獲到一個錯誤:<BR>
錯誤描述: <%=objLastASPError.Description%><BR>
錯誤類別: <%=objLastASPError.Category%><BR>
錯誤檔案: <%=objLastASPError.File%><BR>
錯誤編號: <%=objLastASPError.Number%><BR>


ASPError對象、Server.Transfer、Server.Execute是ASP 3.0中新增的
內容。當然還有其他一些小的改動。例如,在ASP 2.0中預設的Response.Buffer被設定為False.
而在ASP 3.0中Response.Buffer預設被設定為True.

當然隨 ASP 3.0 而來的有最新版本的指令碼引擎(既包括VBScript也有Jscript的)


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.