ASP教程11:ASP內建對象Server
發表于:2007-09-07來源:作者:點擊數:
標簽:
通過前九篇的理論和實踐,相信大家已經對 ASP 有了系統的了解,雖然至今為止,我們只學了 ASP 的 4 個內建對象,但已經完全能夠寫出一些實用的小程序了。今天,作者將繼續給大家講解最后一個 ASP 內建對象——Server。 在開始本次課程之前,我仍要在這里回答
通過前九篇的理論和實踐,相信大家已經對 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 的能力。當安裝完成后,運行 Internet 服務管理器,你將看到如下畫面:
可以到在 IIS3.0 中提供了三種服務:WWW、Gopher、FTP,WWW 服務為客戶瀏覽器提交 WEB 頁,并允許客戶訪問 .asp 文件。當然,你可以直接安裝最新的 IIS4.0 版本,作者也建議各位安裝此版本,因為它具有更強更高的 WEB 管理機能和
安全性。在 IIS4.0 中 IIS 的管理界面發生了根本性的改變,熟悉的 Internet 服務管理器,被取而代之為 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 頁處理完成之后,服務器將自動破壞這些對象。如果要創建有會話或應用程序作用域的對象,可以使用 < OBJECT> 標記并設置 SESSION 或 APPLICATION 的 SCOPE 屬性,也可以在對話及應用程序變量中存儲該對象。如下例程 :
< % Set Session("ad") = Server.CreateObject("MSWC.AdRotator")%>
這里需要注意的是,不能創建與內建對象同名的對象實例,否則,如下列腳本將返回錯誤。
< % Set Response = Server.CreateObject("Response") %>
至今為止,我們已經學習完了 ASP 所有的內建對象,不知大家是不是很興奮?其實 ASP 是很簡單的,只要大家不斷的實踐,相信一段時間后都不難成為 ASP 的高手。從下一篇起作者將開始介紹 ASP 內建 ActiveX 組件,這也是 ASP 運用中非常重要和實用的一部分。敬請關注。
|
原文轉自:http://www.anti-gravitydesign.com