ASP教程:第十一篇 ASP內建對象Server

來源:互聯網
上載者:User
通過前九篇的理論和實踐,相信大家已經對 ASP 有了系統的瞭解,雖然至今為止,我們只學了 ASP 的 4 個內建對象,但已經完全能夠寫出一些實用的小程式了。今天,作者將繼續給大家講解最後一個 ASP 內建對象——Server。

   在開始本次課程之前,我仍要在這裡回答一些朋友們提出的比較普遍的問題。最近仍有不少朋友來信問我,如何構建伺服器端的 Active Server Page 環境。我想可能是我在前幾篇中沒有講清楚,因此,在本篇的開頭有必要把這個問題詳細闡述一遍。

   ASP 的應用完全是基於 Microsoft Internet Infomation Server(簡稱 IIS)之上的,IIS 有分別用於 Windows NT Server 和 WorkStation 的兩個版本中(當然 IIS4.0 也有 Windows98 版,這裡暫且不提),其功能幾乎完全相同,所不同的只是安裝過程。一般來說,我們使用的都是基於 NT 伺服器上的 IIS 版本。在 NT Server 的環境中,發布資訊、管理網站的工作一般都是通過 IIS 來完成的。通常我們在 NT4.0 版本中啟動並執行是 IIS2.0 版,但它不具有支援 ASP 的功能。ASP 必須在安裝完 IIS 後單獨安裝,安裝檔案是一個微軟發布的 ASP 安裝包,大約有 9 兆多,應該可以在微軟的網站上下載。當 IIS2.0 中增添了支援 ASP 的功能後,其也就自動升級為 3.0 版本。2.0 和 3.0 對於 WEB 伺服器來說,並沒有什麼大的改動,只是單純地增加了運行 ASP 的能力。當安裝完成後,運行 網際網路服務管理員,你將看到如下畫面:

 

   可以到在 IIS3.0 中提供了三種服務:WWW、Gopher、FTP,WWW 服務為客戶瀏覽器提交 WEB 頁,並允許客戶訪問 .asp 檔案。當然,你可以直接安裝最新的 IIS4.0 版本,作者也建議各位安裝此版本,因為它具有更強更高的 WEB 管理機能和安全性。在 IIS4.0 中 IIS 的管理介面發生了根本性的改變,熟悉的 網際網路服務管理員,被取而代之為 Microsoft 管理主控台,簡稱 MMC。其介面如下圖:

   那麼如何安裝 IIS4.0 呢?在 NT4.0 上安裝 IIS4.0 時,你的系統中必須已經安裝了 NT SP3,以及 Internet Explorer4.01,注意這裡的 Internet Explorer 的版本必須是 4.01,版本號碼為 4.72.3110.8。這點很重要,否則你將不能安裝 IIS4.0。作者為了安裝該版本特意花費了一個晚上在微軟的網站上升級 IE 版本。

   IIS 支援虛擬目錄,通過在“伺服器屬性”對話方塊中的“目錄”標籤可以管理虛擬目錄。建立虛擬目錄對於管理 WEB 網站具有非常重要的意義。首先,虛擬目錄隱藏了有關網站目錄結構的重要訊息。因為在瀏覽器中,客戶通過選擇“查看原始碼”,很容易就能擷取頁面的檔案路徑資訊,如果在 WEB 頁中使用實體路徑,將暴露有關網站目錄的重要訊息,這容易導致系統受到攻擊。其次,只要兩台機器具有相同的虛擬目錄,你就可以在不對頁面代碼做任何改動的情況下,將 WEB 頁面從一台機器上移到另一台機器。還有就是,當你將 WEB 頁面放置於虛擬目錄下後,你可以對目錄設定不同的屬性,如:Read、Excute、Script。讀訪問表示將目錄內容從 IIS 傳遞到瀏覽器。而執行訪問則可以使在該目錄內執行可執行檔檔案。當你需要使用 ASP 時,就必須將你存放 .asp 檔案的目錄設定為“Excute(執行)”。作者建議大家在設定 WEB 網站時,將 HTML 檔案同 ASP 檔案分開放置在不同的目錄下,然後將 HTML 子目錄設定為“讀”,將 ASP 子目錄設定為“執行”,這不僅方便了對 WEB 的管理,而且最重要的提高了 ASP 程式的安全性,防止了程式內容被客戶所訪問。因為在今年 7 月底的時候 IIS 被一些網路高手發現了一個可怕的 bug,那就是,當你在一個網站的 .asp 檔案後加上 ::$DATA 後,客戶將能在瀏覽器中看到該 .asp 檔案的所有原始碼,這對於一個網站來說是非常可怕的。當然微軟已經針對這個 bug,編寫了補丁,但是為了徹底杜絕這種可能性的發生,作者還一建議大家不要將 .asp 所在的目錄設定為可讀。
   我想,現在各位應該已經完全瞭解 ASP 的伺服器端設定了,下面我們就進入正題 -- 學習 ASP 的最後一個內建對象 Server。

   Server 對象提供對伺服器上的方法和屬性的訪問 , 其中大多數方法和屬性是作為公用程式的功能服務的。有了 Server 對象,你就可以在伺服器上啟動 ActiveX 對象常式,並使用 Active Server 服務提供象 HTML 和 URL 編碼這樣的函數。

   一、文法

   Server.property|method

   二、屬性

   ScriptTimeout 逾時值,在指令碼運行超過這一時間之後即作逾時處理。如下代碼指定伺服器處理指令碼在 100 秒後逾時。

   < % Server.ScriptTimeout=100 %>

   這裡需要注意的是,通過使用中繼資料庫中的 AspScriptTimeout 屬性可以為 Web 服務或 Web 服務器設定預設的 ScriptTimeout 值。ScriptTimeout 屬性不能設定為小於在中繼資料庫中指定的值。例如,如果 NumSeconds 設定為 60,而中繼資料庫設定包含了預設值 90 秒,則指令碼在 90 秒後逾時。
   三、方法

   1、HTMLEncode 方法

   HTMLEncode 方法允許你對特定的字串進行 HTML 編碼,雖然 HTML 可以顯示大部分你寫入 ASP 檔案中的文本,但是當你需要實際包含 HTML 標籤中所使用的字元,就會遇到問題。這是因為,當瀏覽器讀到這樣的字串時,會試圖進行解釋。例如下面的這段文本 :
   這是對 HTMLEncode 方法的測試。< br> 這裡應該不會另起一行。

   會被瀏覽器顯示為 :

   這是對 HTMLEncode 方法的測試。
   這裡應該不會另起一行。

   為了避免此類問題,我們就需要使用 Server 對象的 HTMLEncode 方法,採用對應的不由瀏覽器解釋的 HTML Character Code 替代 HTML 標籤字元。所以,用下面的代碼才能顯示正確的 HTMLEncode 字串,從而在瀏覽器中按你的需要輸出文本。
  < %
  Response.write Server.HTMLEncode(" 這是對 HTMLEncode 方法的測試。< br> 這裡應該不會另起一行。")%>

   2、URLEncode 方法

   就象 HTMLEncode 方法使客戶可以將字串翻譯成可接受的 HTML 格式一樣,Server 對象的 URLEncode 方法可以根據 URL 規則對字串進行正確編碼,當字串資料以 URL 的形式傳遞到伺服器時,在字串中不允許出現空格,也不允許出現特殊字元。為此,如果你希望在發送字串之前進行 URL 編碼,可以使用 Server.URLEncode 方法。
   3、MapPath 方法

   MapPath 方法將指定的相對或虛擬路徑映射到伺服器上相應的物理目錄上。

   文法如下 :Server.MapPath(Path)

   Path 指定要映射物理目錄的相對或虛擬路徑。若 Path 以一個正斜杠 (/) 或反斜線 (\) 開始,則 MapPath 方法返迴路徑時將 Path 視為完整的虛擬路徑。若 Path 不是以斜杠開始,則 MapPath 方法返回同 .asp 檔案中已有的路徑相對的路徑。這裡需要注意的是 MapPath 方法不檢查返回的路徑是否正確或在伺服器上是否存在。

   對於下列樣本,檔案 data.txt 和包含下列指令碼的 test.asp 檔案都位於目錄 C:\Inetpub\Wwwroot\asp 下。C:\Inetpub\Wwwroot 目錄被設定為伺服器的宿主目錄。下列樣本使用伺服器變數 PATH_INFO 映射當前檔案的實體路徑。以下指令碼
   < %= server.mappath(Request.ServerVariables("PATH_INFO"))%>

   輸出

   c:\inetpub\wwwroot\asp\test.asp

   由於下列樣本中的路徑參數不是以斜杠字元開始的,所以它們被相對映射到目前的目錄,此處是目錄 C:\Inetpub\Wwwroot\asp。以下指令碼
  < %= server.mappath("data.txt")%>
  < %= server.mappath("asp/data.txt")%>

   輸出
c:\inetpub\wwwroot\asp\data.txt
c:\inetpub\wwwroot\asp\asp\data.txt

   4、CreateObject 方法

   Server.CreateObject 恐怕是 ASP 中最為實用,也是最強勁的功能了。它用於建立已經註冊到伺服器上的 ActiveX 組件執行個體。這是一個非常重要的特性,因為通過使用 ActiveX 組件能夠使你輕鬆地擴充 ActiveX 的能力,正是使用了 ActiveX 組件,你可以實現至關重要的功能,譬如資料庫連接、檔案訪問、廣告顯示和其他 VBScript 不能提供或不能簡單地依靠單獨使用 ActiveX 所能完成的功能。正是因為這些組件才使得 ASP 具有了強大的生命力。
   其文法如下:

   Server.CreateObject("Component Name")

   預設情況下,由 Server.CreateObject 方法建立的對象具有頁範圍。這就是說,再當前 ASP 頁處理完成之後,伺服器將自動破壞這些對象。如果要建立有會話或Application 領域的對象,可以使用 < OBJECT> 標記並設定 SESSION 或 APPLICATION 的 SCOPE 屬性,也可以在對話及應用程式變數中儲存該對象。如下常式 :
   < % Set Session("ad") = Server.CreateObject("MSWC.AdRotator")%>

   這裡需要注意的是,不能建立與內建對象同名的對象執行個體,否則,如下列指令碼將返回錯誤。

   < % Set Response = Server.CreateObject("Response") %>

   至今為止,我們已經學習完了 ASP 所有的內建對象,不知大家是不是很興奮?其實 ASP 是很簡單的,只要大家不斷的實踐,相信一段時間後都不難成為 ASP 的高手。從下一篇起作者將開始介紹 ASP 內建 ActiveX 組件,這也是 ASP 運用中非常重要和實用的一部分。敬請關注。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.