本文將以如何建立基於IIS 的ASP 動態網站為中心向大家一步一步地揭示動態商業網站設計的真正奧秘。為了使各位能夠全面、細緻地掌握 ASP 的開發技巧,本文今後將採取連載的形式,手把手地教你如何建立屬於自己 ASP 動態網站。由於本文是作者根據自己的學習和實踐經驗並結合了一些外文資料而寫成的,因此不免會有一些偏頗,希望各位見諒。
Microsoft Active Server Pages 即我們所稱的ASP ,其實是一套微軟開發的伺服器端指令碼環境, ASP 內含於 IIS 3.0 和 4.0 之中 , 通過 ASP 我們可以結合 HTML 網頁、 ASP 指令和 ActiveX 元件建立動態、互動且高效的 WEB 伺服器應用程式。有了 ASP 你就不必擔心客戶的瀏覽器是否能運行你所編寫的代碼,因為所有的程式都將在伺服器端執行,包括所有嵌在普通 HTML 中的指令碼程式。當程式執行完畢後,伺服器僅將執行的結果返回給客戶瀏覽器,這樣也就減輕了用戶端瀏覽器的負擔,大大提高了互動的速度。
以下羅列了 Active Server Pages 所獨具的一些特點:
1. 使用 VBScript 、 JScript 等簡單易懂的指令碼語言,結合 HTML 程式碼,即可快速地完成網站的應用程式。
2. 無須 compile 編譯,容易編寫,可在伺服器端直接執行。
3. 使用普通的文字編輯器,如 Windows 的記事本,即可進行編輯設計。
4. 與瀏覽器無關 (Browser Independence), 使用者端只要使用可執行 HTML 碼的瀏覽器,即可瀏覽 Active Server Pages 所設計的網頁內容。 Active Server Pages 所使用的指令碼語言 (VBScript 、 Jscript) 均在 WEB 伺服器端執行,使用者端的瀏覽器不需要能夠執行這些指令碼語言。
5.Active Server Pages 能與任何 ActiveX scripting 語言相容。除了可使用 VBScript 或 JScript 語言來設計外,還通過 plug-in 的方式,使用由第三方所提供的其他指令碼語言,譬如 REXX 、 Perl 、 Tcl 等。指令碼引擎是處理指令碼程式的 COM(Component Object Model) 物件。
6.Active Server Pages 的來源程式,不會被傳到客戶瀏覽器,因而可以避免所寫的來源程式被他人剽竊,也提高了程式的安全性。
7. 可使用伺服器端的指令碼來產生用戶端的指令碼。
8. 物件導向( Object-oriented )。
9.ActiveX Server Components(ActiveX 伺服器元件 ) 具有無限可擴充性。可以使用 Visual Basic 、 Java 、 Visual C++ 、 COBOL 等程式設計語言來編寫你所需要的 ActiveX Server Component 。
ASP 的奇妙之處真是不勝枚舉,下面就請各位系好安全帶,我將帶領大家進入 ASP 的夢幻世界。 首先,讓我們來看看運行ASP 所需的環境:
·Microsoft Internet Information Server version 3.0/4.0 on Windows NT Server ·Microsoft Peer Web Services Version 3.0 on Windows NT Workstation
·Microsoft Personal Web Server on Windows 95/98
與一般的程式不同,.asp 程式無須編譯,ASP 程式的控制部份,是使用VBScript 、JScript 等指令碼語言來設計的,當執行 ASP 程式時,指令碼程式將一整套命令發送給指令碼解譯器 ( 即指令碼引擎 ) ,由指令碼解譯器進行翻譯並將其轉換成伺服器所能執行的命令。當然,同其他程式設計語言一樣, ASP 程式的編寫也遵循一定的規則,如果你想使用你所喜愛的指令碼語言編寫 ASP 程式,那麼你的伺服器上必須要有能解釋這種指令碼語言的指令碼解譯器。
當你安裝 ASP 時,系統提供了兩種指令碼語言: VBsrcipt 和 JScript ,而 VBscript 則被作為系統預設的指令碼語言。你也可以根據自己的喜好改變系統預設的指令碼語言,關於如何改變系統預設的指令碼語言請看《 在 ASP 中使用指令碼語言》一文。ASP 本身並不是一種指令碼語言,它只是提供了一種使鑲嵌在 HTML 頁面中的指令碼程式得以啟動並執行環境。但是,要學好 ASP 又必須掌握它的文法和規則。現在就讓我們開始一步一步地認識並學習 Active Server Pages 。
ASP 程式其實是以副檔名為 .asp 的純文字形式存在於 WEB 伺服器上的,你可以用任何文字編輯器開啟它, ASP 程式中可以包含純文字、 HTML 標籤以及指令碼命令。你只需將 .asp 程式放在 WEB 伺服器的虛擬目錄下(該目錄必須要有可執行許可權),就可以通過 WWW 的方式訪問ASP 程式了。
要學好 ASP 程式的設計,必須掌握指令碼的編寫,那麼究竟什麼是指令碼呢?其實指令碼是由一系列的指令碼命令所組成的,如同一般的程式,指令碼可以將一個值賦給一個變數,可以命令WEB 伺服器發送一個值到客戶瀏覽器,還可以將一系列命令定義成一個過程。要編寫指令碼,你必須要熟悉至少一門指令碼語言,如VBScript 。
指令碼語言是一種介乎於 HTML 和諸如 JAVA 、Visual Basic 、C++ 等程式設計語言之間的一種特殊的語言,儘管它更接近後者,但它卻不具有程式設計語言複雜、嚴謹的文法和規則。如前所述 ASP 所提供的指令碼運行環境可支援多種指令碼語言,譬如: JScript 、 REXX 、 PERL 等等,這無疑給ASP 程式設計者提供了廣泛的發揮餘地。
ASP 的出現使得廣大 WEB 設計者不必在為客戶瀏覽器是否支援而擔心,實際上就算你 在同一個 .asp 檔案中使用不同的指令碼語言,你都無須為此擔憂,因為所有的一切都將在伺服器端進行,客戶瀏覽器得到的只是一個程式執行的結果,而你也只需在 .asp 中聲明使用不同的指令碼語言即可。
下面是一個典型的在同一 .asp 檔案中使用兩種指令碼語言的例子:
< HTML> < BODY> < TABLE>< % Call Callme %>< /TABLE>< % Call ViewDate %>< /BODY> < /HTML>< SCRIPT LANGUAGE=VBScript RUNAT=Server>Sub Callme Response.Write "< TR>< TD>Call< /TD>< TD>Me< /TD>< /TR>" End Sub < /SCRIPT>< SCRIPT LANGUAGE=JScript RUNAT=Server> function ViewDate(){ var x x = new Date() Response.Write(x.toString()) }< /SCRIPT>
這是各位在本文中接觸的第一個真正的 ASP 程式,千萬不要被“ < % %> ”符號搞糊塗,這其實是標準的ASP 定界符,而“ < SCRIPT>< /SCRIPT> ”之間的就是指令碼語言。
ASP 不同於指令碼語言,它有自己特定的文法,所有的 ASP 命令都必須包含在 < % 和 %> 之內,如:
< % test="English" %> , ASP 通過包含在 < % 和 %> 中的運算式將執行結果輸出到客戶瀏覽器 , 如: < % =test %> 就是將前面賦給變數 test 的值 English 發送到客戶瀏覽器中,而當變數 test 的值為 Mathematics 時 , 以下程式: This weekend we will test < % =test %>. 在客戶瀏覽器中則顯示為: This weekend we will test Mathematics.
學習ASP 最好的方法莫過於親自動手編寫,為了在最短的時間內使各位掌握 ASP 的程式設計技巧,本文將採取執行個體分析法,通過一系列的執行個體讓各位在實踐中學習 ASP 。
建立一個 ASP 頁面,你所需的只是開啟一個文字編輯器,如: Notepad ,然後跟我開始動手編寫第一個 ASP 程式。下面我們將建立一個自動監測瀏覽時間並根據不同時段動態顯示不同頁面內容的 ASP 程式,請將以下代碼剪貼到你的文字編輯器中 , 並存為 test1.asp :
< html> < body> < FONT COLOR="Green">< % If Time < #12:00:00# And Time> = #00:00:00# Then %> 早上好,今天天氣不賴啊 ! < % ElseIf Time < #19:00:00# And Time >= #12:00:00# Then %>下午好 !< % Else %>哈嘍 ! 今晚你有沒有去 IRC 聊天 ! < % End If %>< /body>< /html>
將 test1.asp 儲存在 WEB 伺服器的虛擬目錄 ( 如: aspsamp/) 下,並在瀏覽器中用 HTTP 的方式進行瀏覽,如: http://yourcomputername/aspsamp/test1.asp ,你將會新奇地發現,你的頁面真的活起來了。雖然,這隻是一個非常簡單的執行個體,而且這一功能完全可以通過 JavaScript 完成,但是不難發現使用ASP 要比JavaScript 簡潔、迅速得多,而且運用此法,你完全可以輕而易舉地令你的網頁在不同的時段展示不同的風格。
此例中的Time 實際上是一個 VBScript 內建的顯示系統目前時間的函數,由於系統預設的指令碼語言是 VBScript ,因此當你在 ASP 命令中調用該函數時,指令碼引擎會自動將其轉換成當前的系統時間。
接下來我們將給 test1.asp 添加一點色彩,在 < body> 標識中添加“ bgcolor="< % =bgc %> ”即變為 < body bgcolor="< % =bgc %>"> ,並在 < body> 標記前添加如下語句: < % If Time < #12:00:00# And Time >= #00:00:00# Then bgc="silver" ElseIf Time < #19:00:00# And Time >= #12:00:00# Then bgc="navy" Else bgc="red" End If %> 如此一來,當使用者在不同的時段訪問你的頁面時,他們將會看到不同的頁面背景色。
我們可以做的事情還有很多,譬如你想知道在淩晨至十二點之間瀏覽你頁面的客戶的姓名,並向他或她問好,那麼下面的這段程式將能助你達成心愿。首先你需要在頁面中設定表單,將以下 HTML 程式碼剪貼到“ < % If Time < #12:00:00# And Time >= #00:00:00# Then %> ”之後:
歡迎光臨我的首頁,請填寫以下資訊 :
< FORM METHOD="POST" ACTION="test1.asp"> < P> First Name: < INPUT NAME="fname" SIZE="48">< P> Last Name: < INPUT NAME="lname" SIZE="48">< P> Title: < INPUT NAME="title" TYPE=RADIO VALUE="mr"> Mr. < INPUT NAME="title" TYPE=RADIO VALUE="ms">Ms. < P>< INPUT TYPE=SUBMIT>< INPUT TYPE=RESET> < /FORM>
然後在以上 HTML 程式碼後面添加如下 ASP 命令:
< % title=request.form("title") if title="mr" then %> 歡迎您 Mr.< % =request.form("fname") %> 。 < % elseif title="ms" then %> 歡迎您 Ms.< % =request.form("fname") %> 。< % else %> < B>< font color=blue> 歡迎您 < % =request.form("fname")&" "&request.form("lname") %> 。 < /font>< /B> < % end if %>
儲存檔案 test1.asp ,並在瀏覽器中以 HTTP 方式進行瀏覽,如果此時的系統時間在淩晨 0:00:00 和中午 12:00:00 之間的話,瀏覽器將顯示如下畫面:
這其實是一個在 Internet 和 Intranet 上常見的功能,即當使用者在瀏覽器端填寫完表單後,通過調用一個通用網關程式將使用者資料傳送到伺服器,由伺服器進行處理後再將結果返還給客戶瀏覽器。過去為了實現這樣的功能必須編寫一個獨立於 HTML 之外的 CGI 程式,並通過 HTML 進行調用,撇開 CGI 編寫複雜等缺點不談, CGI 的執行效率也是一個大問題,每一個表單 (form) 均須執行一個可執行文檔,當多人同時上線使用時,多個文檔同時執行,將大大降低 WEB 伺服器的執行速度,如今 ASP 提供了與 HTML 完全相融的編程環境,顯然要比使用CGI 便捷得多。
在本期的最後讓我們再來看看 ASP 的迴圈功能,譬如你希望當客戶在晚間 7:00 至淩晨 0:00:00 瀏覽你的頁面時,在頁面中央顯示 6 個笑臉示問候,那麼你只需要將以下命令剪貼到“ Good Evening! ”後面即可:
< % for i=1 to 6 %>< p>< center>< img src="smile.gif" width="32" height="32" alt=" 晚上好 ">< /p>< % next %>
這是一個最最基本的迴圈語句,它將一個笑臉圖片重複調用六次並顯示在頁面上。當然此例的效果完全可以用 HTML 做到,但是不難發現使用 ASP 大大縮短了代碼的重複編寫,使得程式具有良好的可閱讀性。
另外,當你製作一個諸如根據使用者投票來給所評測的對象評定星級的評測網站時,使用此法,你就完全不需要為每一個星級製作一幅圖片。如果一個對象被評為 4 星級,那隻需將一顆星的圖片迴圈顯示 4 次,以此類推即可。
以上就是本文的全部內容,希望對大家學習ASP編程有所協助。