看了《如何令你的網(wǎng)站“動感十足”》一文后,是否令你怦然心動?是否已經(jīng)急不可待地想構(gòu)建屬于你自己的動態(tài)網(wǎng)站?本文將以 Active Server Pages 為中心,向你全面展示制作動態(tài)商業(yè)網(wǎng)站的步驟和技巧并通過大量的實例,讓你在不斷的理論和實踐之中笑傲“網(wǎng)絡(luò)”……
上一章給大家簡要介紹了建立動態(tài)網(wǎng)站的一些方法和制作工具,本章將以如何建立基于 IIS 的 ASP 動態(tài)網(wǎng)站為中心向大家一步一步地揭示動態(tài)商業(yè)網(wǎng)站設(shè)計的真正奧秘。為了使各位能夠全面、細(xì)致地掌握 ASP 的開發(fā)技巧,本文今后將采取連載的形式,手把手地教你如何建立屬于自己 ASP 動態(tài)網(wǎng)站。由于本文是作者根據(jù)自己的學(xué)習(xí)和實踐經(jīng)驗并結(jié)合了一些外文資料而寫成的,因此不免會有一些偏頗,希望各位見諒。如發(fā)現(xiàn)本文有何不當(dāng)之處,請及時通知作者,謝謝。 Microsoft Active Server Pages 即我們所稱的 ASP ,其實是一套微軟開發(fā)的服務(wù)器端腳本環(huán)境, ASP 內(nèi)含于 IIS 3.0 和 4.0 之中 , 通過 ASP 我們可以結(jié)合 HTML 網(wǎng)頁、 ASP 指令和 ActiveX 元件建立動態(tài)、交互且高效的 WEB 服務(wù)器應(yīng)用程序。有了 ASP 你就不必?fù)?dān)心客戶的瀏覽器是否能運行你所編寫的代碼,因為所有的程序都將在服務(wù)器端執(zhí)行,包括所有嵌在普通 HTML 中的腳本程序。當(dāng)程序執(zhí)行完畢后,服務(wù)器僅將執(zhí)行的結(jié)果返回給客戶瀏覽器,這樣也就減輕了客戶端瀏覽器的負(fù)擔(dān),大大提高了交互的速度。 以下羅列了 Active Server Pages 所獨具的一些特點:
1. 使用 VBScript 、 JScript 等簡單易懂的腳本語言,結(jié)合 HTML 代碼,即可快速地完成網(wǎng)站的應(yīng)用程序。
2. 無須 compile 編譯,容易編寫,可在服務(wù)器端直接執(zhí)行。
3. 使用普通的文本編輯器,如 Windows 的記事本,即可進(jìn)行編輯設(shè)計。
4. 與瀏覽器無關(guān) (Browser Independence), 用戶端只要使用可執(zhí)行 HTML 碼的瀏覽器,即可瀏覽 Active Server Pages 所設(shè)計的網(wǎng)頁內(nèi)容。 Active Server Pages 所使用的腳本語言 (VBScript 、 Jscript) 均在 WEB 服務(wù)器端執(zhí)行,用戶端的瀏覽器不需要能夠執(zhí)行這些腳本語言。
5.Active Server Pages 能與任何 ActiveX scripting 語言相容。除了可使用 VBScript 或 JScript 語言來設(shè)計外,還通過 plug-in 的方式,使用由第三方所提供的其他腳本語言,譬如 REXX 、 Perl 、 Tcl 等。腳本引擎是處理腳本程序的 COM(Component Object Model) 物件。
6.Active Server Pages 的源程序,不會被傳到客戶瀏覽器,因而可以避免所寫的源程序被他人剽竊,也提高了程序的安全性。
7. 可使用服務(wù)器端的腳本來產(chǎn)生客戶端的腳本。
8. 物件導(dǎo)向( Object-oriented )。
9.ActiveX Server Components(ActiveX 服務(wù)器元件 ) 具有無限可擴(kuò)充性??梢允褂?Visual Basic 、 Java 、 Visual C++ 、 COBOL 等編程語言來編寫你所需要的 ActiveX Server Component 。
ASP 的奇妙之處真是不勝枚舉,下面就請各位系好安全帶,我將帶領(lǐng)大家進(jìn)入 ASP 的夢幻世界。
首先,讓我們來看看運行 ASP 所需的環(huán)境:
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 等腳本語言來設(shè)計的,當(dāng)執(zhí)行 ASP 程序時,腳本程序?qū)⒁徽酌畎l(fā)送給腳本解釋器 ( 即腳本引擎 ) ,由腳本解釋器進(jìn)行翻譯并將其轉(zhuǎn)換成服務(wù)器所能執(zhí)行的命令。當(dāng)然,同其他編程語言一樣, ASP 程序的編寫也遵循一定的規(guī)則,如果你想使用你所喜愛的腳本語言編寫 ASP 程序,那么你的服務(wù)器上必須要有能解釋這種腳本語言的腳本解釋器。當(dāng)你安裝 ASP 時,系統(tǒng)提供了兩種腳本語言: VBsrcipt 和 JScript ,而 VBscript 則被作為系統(tǒng)默認(rèn)的腳本語言。你也可以根據(jù)自己的喜好改變系統(tǒng)默認(rèn)的腳本語言,關(guān)于如何改變系統(tǒng)默認(rèn)的腳本語言請看《 在 ASP 中使用腳本語言》一文。
ASP 本身并不是一種腳本語言,它只是提供了一種使鑲嵌在 HTML 頁面中的腳本程序得以運行的環(huán)境。但是,要學(xué)好 ASP 又必須掌握它的語法和規(guī)則?,F(xiàn)在就讓我們開始一步一步地認(rèn)識并學(xué)習(xí) Active Server Pages 。
ASP 程序其實是以擴(kuò)展名為 .asp 的純文本形式存在于 WEB 服務(wù)器上的,你可以用任何文本編輯器打開它, ASP 程序中可以包含純文本、 HTML 標(biāo)記以及腳本命令。你只需將 .asp 程序放在 WEB 服務(wù)器的虛擬目錄下(該目錄必須要有可執(zhí)行權(quán)限),就可以通過 WWW 的方式訪問 ASP 程序了。要學(xué)好 ASP 程序的設(shè)計,必須掌握腳本的編寫,那么究竟什么是腳本呢?其實腳本是由一系列的腳本命令所組成的,如同一般的程序,腳本可以將一個值賦給一個變量,可以命令 WEB 服務(wù)器發(fā)送一個值到客戶瀏覽器,還可以將一系列命令定義成一個過程。要編寫腳本,你必須要熟悉至少一門腳本語言,如 VBScript 。腳本語言是一種介乎于 HTML 和諸如 JAVA 、 Visual Basic 、 C++ 等編程語言之間的一種特殊的語言,盡管它更接近后者,但它卻不具有編程語言復(fù)雜、嚴(yán)謹(jǐn)?shù)恼Z法和規(guī)則。如前所述 ASP 所提供的腳本運行環(huán)境可支持多種腳本語言,譬如: JScript 、 REXX 、 PERL 等等,這無疑給 ASP 程序設(shè)計者提供了廣泛的發(fā)揮余地。 ASP 的出現(xiàn)使得廣大 WEB 設(shè)計者不必在為客戶瀏覽器是否支持而擔(dān)心,實際上就算你 在同一個 .asp 文件中使用不同的腳本語言,你都無須為此擔(dān)憂,因為所有的一切都將在服務(wù)器端進(jìn)行,客戶瀏覽器得到的只是一個程序執(zhí)行的結(jié)果,而你也只需在 .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 程序,千萬不要被“ < % %> ”符號搞糊涂,這其實是標(biāo)準(zhǔn)的 ASP 定界符,而“ < SCRIPT>< /SCRIPT> ”之間的就是腳本語言。 ASP 不同于腳本語言,它有自己特定的語法,所有的 ASP 命令都必須包含在 < % 和 %> 之內(nèi),如: < % test="English" %> , ASP 通過包含在 < % 和 %> 中的表達(dá)式將執(zhí)行結(jié)果輸出到客戶瀏覽器 , 如: < % =test %> 就是將前面賦給變量 test 的值 English 發(fā)送到客戶瀏覽器中,而當(dāng)變量 test 的值為 Mathematics 時 , 以下程序:
This weekend we will test < % =test %>.
在客戶瀏覽器中則顯示為:
This weekend we will test Mathematics.
學(xué)習(xí) ASP 最好的方法莫過于親自動手編寫,為了在最短的時間內(nèi)使各位掌握 ASP 的程序設(shè)計技巧,本文將采取實例分析法,通過一系列的實例讓各位在實踐中學(xué)習(xí) ASP 。建立一個 ASP 頁面,你所需的只是打開一個文本編輯器,如: Notepad ,然后跟我開始動手編寫第一個 ASP 程序。下面我們將建立一個自動監(jiān)測瀏覽時間并根據(jù)不同時段動態(tài)顯示不同頁面內(nèi)容的 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 服務(wù)器的虛擬目錄 ( 如: aspsamp/) 下,并在瀏覽器中用 HTTP 的方式進(jìn)行瀏覽,如: http://yourcomputername/aspsamp/test1.asp ,你將會新奇地發(fā)現(xiàn),你的頁面真的活起來了。雖然,這只是一個非常簡單的實例,而且這一功能完全可以通過 JavaScript 完成,但是不難發(fā)現(xiàn)使用 ASP 要比 JavaScript 簡潔、迅速得多,而且運用此法,你完全可以輕而易舉地令你的網(wǎng)頁在不同的時段展示不同的風(fēng)格。此例中的“ Time ”實際上是一個 VBScript 內(nèi)置的顯示系統(tǒng)當(dāng)前時間的函數(shù),由于系統(tǒng)默認(rèn)的腳本語言是 VBScript ,因此當(dāng)你在 ASP 命令中調(diào)用該函數(shù)時,腳本引擎會自動將其轉(zhuǎn)換成當(dāng)前的系統(tǒng)時間。接下來我們將給 test1.asp 添加一點色彩,在 < body> 標(biāo)識中添加“ bgcolor="< % =bgc %> ”即變?yōu)?< body bgcolor="< % =bgc %>"> ,并在 < body> 標(biāo)記前添加如下語句:
< % 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
%>
如此一來,當(dāng)用戶在不同的時段訪問你的頁面時,他們將會看到不同的頁面背景色。我們可以做的事情還有很多,譬如你想知道在凌晨至十二點之間瀏覽你頁面的客戶的姓名,并向他或她問好,那么下面的這段程序?qū)⒛苤氵_(dá)成心愿。首先你需要在頁面中設(shè)置表單,將以下 HTML 代碼剪貼到“ < % If Time < #12:00:00# And Time >= #00:00:00# Then %> ”之后:
歡迎光臨我的主頁,請?zhí)顚懸韵滦畔?: < 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 方式進(jìn)行瀏覽,如果此時的系統(tǒng)時間在凌晨 0:00:00 和中午 12:00:00 之間的話,瀏覽器將顯示如下畫面:
這其實是一個在 Internet 和 Intranet 上常見的功能,即當(dāng)用戶在瀏覽器端填寫完表單后,通過調(diào)用一個通用網(wǎng)關(guān)程序?qū)⒂脩魯?shù)據(jù)傳送到服務(wù)器,由服務(wù)器進(jìn)行處理后再將結(jié)果返還給客戶瀏覽器。過去為了實現(xiàn)這樣的功能必須編寫一個獨立于 HTML 之外的 CGI 程序,并通過 HTML 進(jìn)行調(diào)用,撇開 CGI 編寫復(fù)雜等缺點不談, CGI 的執(zhí)行效率也是一個大問題,每一個表單 (form) 均須執(zhí)行一個可執(zhí)行文檔,當(dāng)多人同時上線使用時,多個文檔同時執(zhí)行,將大大降低 WEB 服務(wù)器的執(zhí)行速度,如今 ASP 提供了與 HTML 完全相融的編程環(huán)境,顯然要比使用 CGI 便捷得多。
在本期的最后讓我們再來看看 ASP 的循環(huán)功能,譬如你希望當(dāng)客戶在晚間 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 %>
這是一個最最基本的循環(huán)語句,它將一個笑臉圖片重復(fù)調(diào)用六次并顯示在頁面上。當(dāng)然此例的效果完全可以用 HTML 做到,但是不難發(fā)現(xiàn)使用 ASP 大大縮短了代碼的重復(fù)編寫,使得程序具有良好的可閱讀性。另外,當(dāng)你制作一個諸如根據(jù)用戶投票來給所評測的對象評定星級的評測站點時,使用此法,你就完全不需要為每一個星級制作一幅圖片。如果一個對象被評為 4 星級,那只需將一顆星的圖片循環(huán)顯示 4 次,以此類推即可。當(dāng)然,當(dāng)工作量較小的時候你不會感覺到 ASP 的好處,然而一旦數(shù)據(jù)量巨增,你將會深刻的體會到 ASP 動態(tài)網(wǎng)站給你帶來的前所未有的輕、爽感受 !