筆記|微軟|微軟
ASP 的“處理指示” <%@ 關鍵字 %> 給出 ASP 處理 .asp 檔案所需的資訊。例如,以下指令將 VBScript 設定為頁面的主指令碼語言:
<%@ LANGUAGE=VBScript %>
處理指示必須位於 .asp 檔案的首行。要在頁面中添加多條指令,這些指令必須位於相同的分隔字元內。請勿將處理指示置於由“#include”語句包括的檔案內。必須在符號 @ 和關鍵字之間加入空格。處理指示具有以下關鍵字:
△LANGUAGE 關鍵字設定用於 .asp 檔案的指令碼語言。請參閱使用指令碼語言。
△ENABLESESSIONSTATE 關鍵字指定 .asp 檔案是否使用會話語句。請參閱管理會話。
△CODEPAGE 關鍵字設定 .asp 檔案的字碼頁(字元編碼)。
△LCID 關鍵字設定檔案的位置表示符。
△TRANSACTION 關鍵字指定 .asp 檔案將在事務環境下運行。請參閱瞭解事務。
要點:可以在一條指令中包含多個關鍵字。關鍵字/值對必須由空格分開。等號兩邊不要留有空格。 以下樣本既設定了指令碼語言也設定了字碼頁:
<%@ LANGUAGE="JScript" CODEPAGE="932" %>
在伺服器上使用 VBScript 和 ASP 時,將禁用兩個 VBScript 特性。因為使用 Active Server Pages 編寫的指令碼在伺服器上執行,所以不支援用來提供使用者介面元素的 VBScript 語句 InputBox 和 MsgBox。另外,不要在伺服器端指令碼中使用 VBScript 函數 CreateObject 和 GetObject。而應使用 Server.CreateObject,以便 ASP 可以跟蹤對象常式。由 CreateObject 語句或 GetObject 語句建立的對象既不能訪問 ASP 內建的對象,也不能參與事務。
因為 ASP 中的所有指令碼都在伺服器端進行處理,所以,沒有必要包含 HTML 注釋標記,用來對不支援指令碼的瀏覽器隱藏指令碼,這是用戶端指令碼的通常做法。所有 ASP 命令都將在內容發送到瀏覽器之前處理。可以使用 HTML 注釋向 HTML 頁中添加備忘;這些注釋將被返回給瀏覽器,如果使用者查看 HTML 源檔案,將可以看到這些注釋。VBScript 支援撇號格式的注釋。與 HTML 注釋不同,處理指令碼時將刪除這些注釋並且不會發送到瀏覽器。
輸出運算式中不能包含注釋。例如,下面第一行能正常工作,而第二行則無法工作,因為該行以 <%= 開始。
<% i = i +1 ’此語句用來遞增 i 值。(此指令碼會工作。) %>
<%= name ’此語句用來列印變數名。(此指令碼將失敗。) %>
可以在 .asp 檔案中使用 VBScript“Option Explicit”語句,以便要求必須使用“Dim”、“Private”、“Public”和“ReDim”語句顯式聲明變數。“Option Explicit”語句必須位於任何 ASP 命令、任何 HTML 文本或指令碼命令之前。例如:
<% Option Explicit %>
<HTML>
<%
Dim strUserName
Public lngAccountNumber
%>
注意:將變數範圍限制到過程中有利於提高效能。
有必要養成顯式聲明所有變數的習慣。這一點當使用“#include”語句在 .asp 檔案中包含其他檔案時尤其重要。被包含的指令碼雖然在單獨的檔案中,但卻當作是包含檔案的一部分。除非聲明變數,否則很容易忘記必須在主指令碼和被包含指令碼中使用不同的變數名。
如果在指令碼中要多次參考 session 範圍變數,可以考慮將該變數賦給一個局部變數以便提高效能。 同樣地,如果指令碼重複參考 Application 範圍變數,應將該變數賦給局部變數以便提高效能。
可以定義自己的常量。在 VBScript 中,使用“Const”語句。在 JScript 中,可以使用“var”語句將常量值賦給變數。如果要在多個 .asp 檔案中使用常量,則需要將定義放在單獨檔案中,並在所有使用該常量的 .asp 檔案中包含這些定義。
將伺服器端指令碼語句散布到用戶端指令碼(由 HTML <SCRIPT> 標記括起),可以在請求時動態初始化和更改用戶端指令碼,用來配置用戶端資料庫或 DHTML 個人化指令碼。創造性地運用這項技術還可以減少往返次數和伺服器處理。
對首要指令碼語言之外其他語言的過程使用 <SCRIPT> 元素。當使用 HTML <SCRIPT> 標籤時,必須使用兩個屬性以便確保伺服器端能夠處理指令碼。使用 <SCRIPT> 標籤的文法為:
<SCRIPT LANGUAGE=JScript RUNAT=SERVER>
流程定義
</SCRIPT>
指令碼塊中的命令必須以所選指令碼語言中形成一個或多個過程。例如,下列命令定義 JScript 過程“MyFunction”。
<HTML>
<SCRIPT LANGUAGE=JScript RUNAT=SERVER >
function MyFunction() { Response.Write("您調用了 MyFunction()。") }
</SCRIPT>
要點:不要在伺服器端 <SCRIPT> 標籤內包含任何完整過程以外的指令碼命令。過程以外的命令沒有固定的執行順序,因此可能導致無法預知的結果。另外,在過程中不能使用 ASP 輸出命令 <%= %>。不過,可以通過 Response.Write 將內容發送到瀏覽器。
對於 VBScript,調用過程時也可以使用關鍵字 Call。不過,如果調用的過程要求變數,則變數列表必須包含在括弧內。如果省略關鍵字 Call,同時也必須省略包含變數列表的括弧。如果使用 Call 語句調用任何內建函數或使用者定義函數,將丟棄函數的傳回值。
要將整個數組傳遞給過程,在 VBScript 中,數組名後應緊接一對空括弧.
設計優秀的 Web 表單通常包含用戶端指令碼,以便在將資訊發送到伺服器之前驗證使用者輸入。“驗證指令碼”可以檢查許多事情,如使用者輸入值是否有效或者文字框是否為空白。您可能需要驗證使用者是否在相應表單欄位中輸入了數字或文本資訊,以防將潛在的無效資訊發送到伺服器。
通常,在用戶端儘可能多地驗證表單資料將非常有好處。除了能儘快提示使用者輸入錯誤外,用戶端驗證能提高響應速度、減少伺服器負擔並為其他應用程式釋放頻寬。
為了提高互動性,可以將錯誤資訊放到無效資訊所在的表單欄位旁邊,以便於使用者發現出錯的地方。(通常,基於 Web 的表單將請求轉寄給包含錯誤資訊的單獨的 Web 頁。不能立即理解此資訊的使用者可能會灰心。)
由於通常無法得知集合中所儲存的項目數,ASP 支援集合的 Count 屬性,該屬性返回集合中的項目個數。可以使用 Count 屬性指定計數器的最大值。
要使通過“for”語句使用 Count 屬性變得更為高效,應將 Count 值分配給本地變數,並用該變數來設定計數器的最大值。這樣,指令碼引擎就不必每次迴圈都去尋找 Count 值。
<%
’聲明計數器變數。
Dim lngItem, lngCount
lngCount = Session.Contents.Count
’重複該迴圈直到集合中的計數器等於項目個數。
For lngItem = 1 To lngCount
Response.Write Session.Contents(lngItem) & "<BR>"
Next
%>
指令碼可在單個 cookie 中嵌入多個關聯值,以便減少在瀏覽器和 Web 伺服器之間傳遞的 cookie 數目。Request 和 Response 對象的 Cookies 集合可在單個項目中載有多個值。這些子項目或子關鍵字可單獨使用。只有 Request.Cookies