通過前兩篇的學習,相信各位已經對ASP 的動態網站設計有了一個基本的概念和整體的印象。從本篇開始作者將從腳本語言的使用著手,由淺入深地帶領大家探索ASP 動態網站設計的真正奧秘。
本文第二篇刊登後,很多朋友給我發了妹兒,希望能盡快看到本文的第三、第四、乃至第……篇,甚至有位朋友焦急地要我將ASP 篇的全文發給他。看到有如此之多志同道合的朋友,令我精神大振。雖然ASP 早在兩年前就已經推出了,但直到今年它才以其靈活便捷的開發過程、良好的WEB 數據庫連接功能受到了國人的重視,然而由於目前國內尚缺乏關於ASP 開發WEB 應用程序的詳盡教材,因此使得國內廣大WEB 開發者們仍處在閉門啃E 文的階段,也包括作者本人。也正因為如此,作者才蒙發了寫文章的念頭,在得到Chinabyte 網絡學院翁斌先生的大力支持後,各位才得以見到此文。
作者殷切希望能通過此文為廣大WEB 開發者和愛好者提供便利,使大家共同來參加ASP 的學習和交流,為了顧全不同層次讀者的需求作者還是決定從最基本的腳本語言的編制著手,隨後再一步一步地講解ASP 內建對象、ActiveX 組件以及用ASP 開發WEB 應用程序的實例,相信通過一段時間持續的學習,不出幾個月各位都能夠得心應手地開發自己的動態網站。下面就先請大家跟我來學習一些ASP 中應用腳本語言(以VBScript 為主)的基礎知識。
在開始學習腳本語言之前,你應該理解一些簡單的概念-- 變量、進程。所謂變量是計算機內存中已命名的存儲位置,其中包含了數字或字符串等數據,它使用戶便於理解腳本操作的名稱,為用戶提供了一種存儲、檢索和操作數據的途徑。程序是由一個或多個進程組成的,在VBScript 中,進程就是指令塊,通常意義上的進程,如Sub,只是為了簡單的數據處理。
在VBScript 中,嚴格的來講變量是不用聲明的,
如:< % Mystring=This is my string % >
然而,即使在使用變量前不需要去聲明變量,也應養成在編程時聲明變量的良好習慣,因為這樣有助於防止錯誤發生。聲明一個變量意味著告訴腳本引擎,有一個特定名稱的變量,這樣就可以在腳本中引用該變量。在VBScript 中聲明一個變量可以使用Dim語句,如下:
< script language=VBScript >
< !--
Option Explicit ' 要求在腳本中聲明所有的變量
Dim Mystring
Mystring=This is my string
-- >
< /script>
變量的作用域即生命期,決定哪些腳本命令可訪問變量。在過程內部聲明的變量具有局部作用域。每執行一次過程,變量就被創建然後消亡。而過程外部的任何命令都不能訪問它。在過程外部聲明的變量具有全局作用域,其值能被ASP 頁上的任何腳本命令訪問和修改。聲明變量時,局部變量和全局變量可以有相同的名稱。而改變其中一個的值並不會改變另一個的值。如果沒有聲明變量,則可能不小心會改變一個全局變量的值。例如,以下腳本命令返回值1,雖然有兩個名為Y 變量:
< %
Dim YY = 1Call SetLocalVariableResponse.Write Y
Sub SetLocalVariable
Dim Y
Y = 2End Sub % >
由於變量沒有顯式聲明,以下的腳本命令將返回2。當過程調用將Y 設置為2 時,腳本引擎認為該過程是要修改全局變量:
<%
Y = 1Call SetLocalVariableResponse.Write Y
Sub SetLocalVariable
Y = 2
End Sub% >
然而,全局變量僅在單個ASP 頁中可用,要使它在單個ASP 頁之外可用,就必須為變量賦予會話或應用程序作用域。會話作用域變量對一個用戶所請求的ASP 應用程序中的所有頁都是可用的。應用程序作用域變量也如此。對單個用戶來說,會話變量是存儲信息的最佳途徑,例如,用戶首選項、用戶名或用戶的標識。對於一個特殊應用程序的所有用戶,應用程序作用域是存儲信息的最佳途徑,例如,應用程序特定的問候語或應用程序所需的初始值。 ASP 提供兩個內建對象來讓您存儲變量:Session 對象和Application 對象,這將在今後的ASP 內建對像中著重討論。
讓我們再來看看常量的定義,常量是用來代替一個數或字符串的名稱,它在整個腳本中保持不變。您可以使用Const 語句在VBScript 中創建用戶自定義常數。使用Const 語句可以創建名稱具有一定含義的字符串型或數值型常數,並給它們賦原義值。例如:。
如:< % Const mystring= 這是一個常量% >
< % Const myage=100 % >
請注意字符串文字包含在兩個引號( ) 之間。這是區分字符串型常數和數值型常數的最明顯的方法。日期文字和時間文字包含在兩個井號(#) 之間。例如:
< % Const CutoffDate = #6-1-97# % >
在理解了常量和變量之後,我們來看看什麼是過程。它是一組能執行指定任務且具有返回值的腳本命令。您可以定義自己的過程,然後在腳本中反複調用它們。您可以將過程定義放在調用過程的.asp 文件中,也可以將通用過程放在一個共享的.asp 文件中,然後用SSI #include 指令將其包含進其他調用其過程的.asp 文件中。您還可選擇另一種方法,即把這些功能打包在ActiveX 組件中。過程定義可出現在< SCRIPT > 和< /SCRIPT > 標記內部且必須遵循聲明腳本語言的規則。如果過程所用的語言與主腳本語言不同,則要使用< SCRIPT > 元素。主腳本語言中的過程用腳本分界符(< % 和% >) 分隔。用HTML< SCRIPT > 標記時,必須使用兩個屬性來保證服務器端能夠處理腳本。使用< SCRIPT > 標記的語法如下:
< SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT >
procedure definition
< /SCRIPT >
這裡的RUNAT=SERVER 屬性通知Web 服務器在服務器上處理腳本。若不設置該屬性,腳本將由客戶端瀏覽器處理。 LANGUAGE 屬性決定此腳本塊所用的腳本語言。您可以指定任何一種具有腳本引擎的語言。請使用VBSCRIPT 指定VBScript;用JSCRIPT 指定JScript。若不設置LANGUAGE 屬性,將用主腳本語言解釋此腳本塊。
在VBScript 中,過程被分為兩類:Sub 過程和Function 過程。 Sub 過程是包含在Sub 和End Sub 語句之間的一組VBScript 語句,執行操作但不返回值。 Sub 過程可以使用參數(由調用過程傳遞的常數、變量或表達式)。如果Sub 過程無任何參數,則Sub 語句必須包含空括號()。
Function 過程是包含在Function 和End Function 語句之間的一組VBScript 語句。 Function 過程與Sub 過程類似,但是Function 過程可以返回值。 Function 過程可以使用參數(由調用過程傳遞的常數、變量或表達式)。如果Function 過程無任何參數,則Function 語句必須包含空括號()。 Function 過程通過函數名返回一個值,這個值是在過程的語句中賦給函數名的。 Function 返回值的數據類型總是Variant。在下面的示例中Sub 過程使用兩個固有的(或內置的)VBScript 函數,即MsgBox 和InputBox,來提示用戶輸入信息。然後顯示根據這些信息計算的結果。計算由使用VBScript 創建的Function 過程完成,Celsius 函數將華氏度換算為攝氏度。 Sub 過程ConvertTemp 調用此函數時,包含參數值的變量被傳遞給函數。換算結果返回到調用過程並顯示在消息框中。
Sub ConvertTemp()
temp = InputBox( 請輸入華氏溫度。, 1)
MsgBox 溫度為& Celsius(temp) & 攝氏度。
End Sub
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) *
5 / 9
End Function
給過程傳遞數據的途徑是使用參數。參數被作為要傳遞給過程的數據的佔位符。參數名可以是任何有效的變量名。使用Sub 語句或Function 語句創建過程時,過程名之後必須緊跟括號。括號中包含所有參數,參數間用逗號分隔。例如,在下面的示例中,fDegrees 是傳遞給Celsius 函數的值的佔位符:
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
要從過程獲取數據,必須使用Function 過程。請記住,Function 過程可以返回值;Sub 過程不返回值。
以上給大家簡要介紹了VBScript,由於篇幅的原因,作者不可能在此詳盡介紹VBScript 的所有知識。但是由於ASP 本身並不是一種編程語言,因此在大家編寫ASP 應用程序的過程中,必須藉助腳本語言來實現許多特殊的功能,所以靈活熟練地掌握腳本語言對一個使用ASP 編寫WEB 應用程序的程序員來說是至關重要的。無論您是一個有豐富編程經驗的高手還是一個初學者,只要您現在希望通過ASP 編寫WEB 應用程序,作者極力建議您掌握至少一門腳本語言(如VBScript)。在本篇的末尾作者將留一道課後作業給大家,希望各位能通過自學有關書籍並在實踐中迅速掌握腳本語言。
課後作業:
作者正在用ASP 製作一套基於WEB 的BBS 系統,作者希望能在其中添加一項特殊功能,即當任何用戶登陸該BBS 後都能夠查閱近七天來所有新發布的信息。由於ASP 本身的內建對象和組件並沒有提供此項功能,因此作者請大家從VBScript 著手,來設計這樣一個功能。如有任何疑問請EMAIL 作者,答案將在下一篇公佈。敬請關注。