通過前兩篇的學習,相信各位已經對ASP 的動態網站設計有了一個基本的概念和整體的印象。從本篇開始作者將從腳本語言的使用著手,由淺入深地帶領大家探索ASP 動態網站設計的真正奧秘。
下面就先請大家跟我來學習一些ASP 中應用腳本語言(以VBScript 為主)的基礎知識。
在開始學習腳本語言之前,你應該理解一些簡單的概念-- 變量、進程。所謂變量是計算機內存中已命名的存儲位置,其中包含了數字或字符串等數據,它使用戶便於理解腳本操作的名稱,為用戶提供了一種存儲、檢索和操作數據的途徑。程序是由一個或多個進程組成的,在VBScript 中,進程就是指令塊,通常意義上的進程,如Sub,只是為了簡單的數據處理。
在VBScript 中,嚴格的來講變量是不用聲明的,
如:
- <%Mystring=Thisismystring%>
然而,即使在使用變量前不需要去聲明變量,也應養成在編程時聲明變量的良好習慣,因為這樣有助於防止錯誤發生。聲明一個變量意味著告訴腳本引擎,有一個特定名稱的變量,這樣就可以在腳本中引用該變量。在VBScript 中聲明一個變量可以使用Dim語句,如下:
- <scriptlanguage=VBScript>
- <!--
- OptionExplicit'要求在腳本中聲明所有的變量
- DimMystring
- Mystring=Thisismystring
- -->
- </script>
變量的作用域即生命期,決定哪些腳本命令可訪問變量。在過程內部聲明的變量具有局部作用域。每執行一次過程,變量就被創建然後消亡。而過程外部的任何命令都不能訪問它。在過程外部聲明的變量具有全局作用域,其值能被ASP 頁上的任何腳本命令訪問和修改。聲明變量時,局部變量和全局變量可以有相同的名稱。而改變其中一個的值並不會改變另一個的值。如果沒有聲明變量,則可能不小心會改變一個全局變量的值。例如,以下腳本命令返回值1,雖然有兩個名為Y 變量:
- <%
- DimYY=1CallSetLocalVariableResponse.WriteY
- SubSetLocalVariable
- DimY
- Y=2EndSub%>
由於變量沒有顯式聲明,以下的腳本命令將返回2。當過程調用將Y 設置為2 時,腳本引擎認為該過程是要修改全局變量:
- <%
- Y=1CallSetLocalVariableResponse.WriteY
- SubSetLocalVariable
- Y=2
- EndSub%>
然而,全局變量僅在單個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 > 標記的語法如下:
- <SCRIPTRUNAT=SERVERLANGUAGE=JSCRIPT>
- proceduredefinition
- </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 調用此函數時,包含參數值的變量被傳遞給函數。換算結果返回到調用過程並顯示在消息框中。
- SubConvertTemp()
- temp=InputBox(請輸入華氏溫度。,1)
- MsgBox溫度為&Celsius(temp)&攝氏度。
- EndSub
- FunctionCelsius(fDegrees)
- Celsius=(fDegrees-32)*5/9
- EndFunction
給過程傳遞數據的途徑是使用參數。參數被作為要傳遞給過程的數據的佔位符。參數名可以是任何有效的變量名。使用Sub 語句或Function 語句創建過程時,過程名之後必須緊跟括號。括號中包含所有參數,參數間用逗號分隔。例如,在下面的示例中,fDegrees 是傳遞給Celsius 函數的值的佔位符:
- FunctionCelsius(fDegrees)
- Celsius=(fDegrees-32)*5/9
- EndFunction
要從過程獲取數據,必須使用Function 過程。請記住,Function 過程可以返回值;Sub 過程不返回值。
以上給大家簡要介紹了VBScript,由於篇幅的原因,不可能在此詳盡介紹VBScript 的所有知識。但是由於ASP 本身並不是一種編程語言,因此在大家編寫ASP 應用程序的過程中,必須藉助腳本語言來實現許多特殊的功能,所以靈活熟練地掌握腳本語言對一個使用ASP 編寫WEB 應用程序的程序員來說是至關重要的。
無論您是一個有豐富編程經驗的高手還是一個初學者,只要您現在希望通過ASP 編寫WEB 應用程序,小編極力建議您掌握至少一門腳本語言(如VBScript)。