• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    《ASP入門-微軟版》筆記

    發布: 2007-6-30 18:56 | 作者: admin | 來源: | 查看: 18次 | 進入軟件測試論壇討論

    領測軟件測試網
    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”語句顯式聲明變量!癘ption 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 表單通常包含客戶端腳本,以便在將信息發送到服務器之前驗證用戶輸入!膀炞C腳本”可以檢查許多事情,如用戶輸入值是否有效或者文本框是否為空。您可能需要驗證用戶是否在相應表單字段中輸入了數字或文本信息,以防將潛在的無效信息發送到服務器。 
    通常,在客戶端盡可能多地驗證表單數據將非常有好處。除了能盡快提示用戶輸入錯誤外,客戶端驗證能提高響應速度、減少服務器負擔并為其他應用程序釋放帶寬。 
    為了提高交互性,可以將錯誤信息放到無效信息所在的表單字段旁邊,以便于用戶發現出錯的地方。(通常,基于 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 和 Response.Cookies 集合支持子關鍵字。Request.Cookies 僅支持讀操作,Response.Cookies 僅支持寫操作。 
    下面將創建一個普通 cookie 和一個帶子關鍵字的 cookie: 
    <% 
    ’將 cookie 發送到瀏覽器。 
    Response.Cookies("Fruit") = "Pineapple" 
    ’用子關鍵字將 cookie 發送到瀏覽器。 
    Response.Cookies("Mammals")("Elephant") = "African" 
    Response.Cookies("Mammals")("Dolphin") = "Bottlenosed" 
    %> 
    發送到瀏覽器的 HTTP 響應中的 cookie 文本顯示如下: 
    HTTP_COOKIE= Mammals=ELEPHANT=African&DOLPHIN=Bottlenosed; Fruit=Pineapple; 
    可以列舉出 Request.Cookies 集合中的所有 cookies 和 cookies 中的所有子關鍵字。不過,對不存在子關鍵字的 cookie 迭代子關鍵字將無法生成項目。要避免出現這種情況,請先檢查 cookie 的子關鍵字是否是使用 Cookies 集合的 HasKeys 屬性得到的。這一技巧將在下面的示例中加以說明。 
    <% 
    ’聲明計數器變量。 
    Dim Cookie, Subkey 
    ’顯示整個 cookie 集合。 
    For Each Cookie In Request.Cookies 
    Response.Write Cookie 
    If Request.Cookies(Cookie).HasKeys Then 
    Response.Write "<BR>" 
    ’顯示子關鍵字。 
    For Each Subkey In Request.Cookies(Cookie) 
    Response.Write " ->" & Subkey & " = " & Request.Cookies(Cookie)(Subkey) & "<BR>" 
    Next 
    Else 
    Response.Write " = " & Request.Cookies(Cookie) & "<BR>" 
    End If 
    Next 
    %> 
    該腳本將返回以下結果: 
    Mammals 
    ->ELEPHANT = African 
    ->DOLPHIN = Bottlenosed 
    Fruit = Pineapple 

    盡管 ASP 集合與 Visual Basic 中的 Collection 對象十分類似,但它們仍有一些區別。ASP 集合支持 Count 屬性以及 Item、Remove 和 RemoveAll 方法,但它們不支持 Add 方法。 

    QueryString 集合有一個可選參數,可用來訪問 URL 請求中出現的多個值中的單個值(使用 GET 方法)。也可以使用 Count 屬性來計算特定類型值出現的次數。 
    例如,包含多項目列表框的表單可生成下面的請求: 
    http://OrganicFoods/list.asp?Food=Apples&Food=Olives&Food=Bread 
    可以使用下面的命令計算多個值: 
    Request.QueryString("Food").Count 
    要顯示多個值類型,可在 List.asp 中包含下面的腳本: 
    <% 
    lngTotal = Request.QueryString("Food").Count 
    For i = 1 To lngTotal 
    Response.Write Request.QueryString("Food")(i) & "<BR>" 
    Next 
    %> 
    前述腳本將顯示為: 
    Apples 
    Olives 
    Bread 
    要將整個值列表顯示為用都逗號分隔的字符串,可以使用下面的腳本: 
    <% Response.Write Request.QueryString("Food") %> 
    將顯示下面的字符串: 
    Apples,Olives,Bread 

    有時,可能需要使用 HTML <SCRIPT></SCRIPT> 標簽來包含服務器端文件。例如,下面的腳本包含服務器可以執行的文件(使用相對路徑): 
    <SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="Utils\datasrt.inc"></SCRIPT> 
    注意 當使用此方法包含文件時不要在 <SCRIPT> 標簽內放置任何程序邏輯;使用另外一組 <SCRIPT> 標簽來添加這樣的邏輯。 

    使用腳本創建 COM 組件 
    ASP 支持 Windows Script Components,這是 Microsoft 提供的用來創建 COM 組件的功能強大的腳本技術。尤其是,您可以將用于數據庫訪問或內容生成等的通用腳本封裝在可重復利用的組件中,以便在任何 .asp 文件或程序中使用。無需特殊的開發工具,使用 VBScript 或 JScript 編寫腳本即可創建 Windows 腳本組件。也可以將 Windows 腳本組件與使用 COM 兼容編程語言編寫的程序相結合,如 Visual Basic、C++ 或 Java 等。 
    下面是一個用 VBScript 編寫的腳本示例,它定義了將華氏溫度值轉換為攝氏溫度值的方法: 
    <SCRIPTLET> 
    <Registration 
    Description="ConvertTemp" 
    ProgID="ConvertTemp.Scriptlet" 
    Version="1.00" 

    </Registration> 
    <implements id=Automation type=Automation> 
    <method name=Celsius> 
    <PARAMETER name=F/> 
    </method> 
    <method name=Fahrenheit> 
    <PARAMETER name=C/> 
    </method> 
    </implements> 
    <SCRIPT LANGUAGE=VBScript> 
    Function Celsius(F) 
    Celsius = 5/9 * (F - 32) 
    End Function 
    Function Fahrenheit(C) 
    Fahrenheit = (9/5 * C) + 32 
    End Function 
    </SCRIPT> 
    </SCRIPTLET> 
    在執行該 Windows 腳本組件之前,必須以 .sct 為擴展名保存該文件,然后在“Windows 資源管理器”中,右鍵單擊該文件并選擇“注冊”。要在 Web 頁中使用該 Windows 腳本組件,應使用類似以下所示的服務器端腳本: 
    <% 
    Option Explicit 
    Dim objConvert 
    Dim sngFvalue, sngCvalue 
    sngFvalue = 50 
    sngCvalue = 21 
    Set objConvert = Server.CreateObject("ConvertTemp.Scriptlet") 
    %> 
    <%= sngFvalue %> degrees Fahrenheit is equivalent to <%= objConvert.Celsius(sngFvalue) %> degrees Celsius<BR> 
    <%= sngCvalue %> degrees Celsius is equivalent to <%= objConvert.Fahrenheit(sngCValue) %> degrees Fahrenheit<BR> 
    通常,應避免在循環中創建對象。如果必須在循環中創建對象,則需要手工釋放該對象使用的資源: 
    <% 
    Dim objAd 
    For i = 0 To 1000 
    Set objAd = Server.CreateObject("MSWC.AdRotator") 
      ……
    objAd.GetAdvertisement 
      ……
    Set objAd = Nothing 
    Next 
    %>

    提供對象 Session 作用域 
    session-scope 對象是為應用程序中的每個新會話創建的,并且在會話結束后釋放;因此,每個活動會話都有一個對象。Session 作用域用于那些由多個腳本調用但只影響一個用戶會話的對象。只應在必要時提供對象 Session 作用域。如果使用 Session 作用域,則必須知道提供對象的組件的線程模型,這是因為線程模型影響對象的性能和安全環境。詳細信息,請參閱本主題中的高級信息:性能問題。 
    要提供對象 Session 作用域,可將對象存儲在 ASP 的 Session 內建對象中?梢酝ㄟ^在 Global.asa 文件中使用 HTML <OBJECT> 標簽或在 ASP 頁中使用 Server.CreateObject 方法來創建 Session 作用域對象例程。 
    在 Global.asa 文件中,可以使用 <OBJECT> 標簽,并擴展 RUNAT 屬性(必須設置為 SERVER)和 SCOPE 屬性(必須設置為 Session)。下面的例子將創建“瀏覽器能力”組件的 Browser Type 對象的 Session 作用域實例: 
    <OBJECT RUNAT=SERVER SCOPE=Session ID=MyBrowser PROGID="MSWC.BrowserType"> 
    </OBJECT> 
    當對象已經存儲在 Session 對象中后,即可從應用程序的任何頁訪問該對象。下面語句使用在前例中通過 <OBJECT> 標簽創建的對象實例: 
    <%= If MyBrowser.browser = "IE" and MyBrowser.majorver >= 4 Then . . .%> 
    在 ASP 頁中,也可以使用 Server.CreateObject 方法將對象存儲到 Session 內建的對象中。下面的示例將 Browser Type 對象的一個實例存儲到 Session 對象中。 
    <% Set Session("MyBrowser") = Server.CreateObject("MSWC.BrowserType") %> 
    要在其他 .asp 文件中顯示瀏覽器信息,必須首先檢索 Session 對象中存儲的 BrowserType 對象的實例,然后調用 Browser 方法來顯示瀏覽器名稱。 
    <% Set MyBrowser = Session("MyBrowser") %> 
    <%= MyBrowser.browser %> 
    對于通過 <OBJECT> 標簽聲明的對象,在 .asp 文件腳本命令參照該對象之前 ASP 不會對其實例化。Server.CreateObject 方法可立即實例化對象。因此,對于 Session 作用域對象來說,<OBJECT> 標簽可以比 Server.CreateObject 方法提供更好的伸縮性。
    Session 和 Application 作用域的替代方案 
    通常,對于那些初始化時間很長的項目或對象,如字典對象或記錄集,應盡可能地使用Session 和 Application 作用域。不過,如果 session 或 application 狀態的對象占用太多的資源,如內存或數據庫連接,則應尋求其他方案來實施這些對象。例如,組件的線程模型會影響從該組件創建的對象性能,尤其是具有 Session 和 Application 作用域的對象的性能。 
    在許多情況下,比創建 Session 或 Application 作用域對象更好的方案就是使用 Session 或 Application 作用域變量,這些變量可以將信息傳遞給在頁面級創建的對象。例如,不應對 ADO 的 Connection 對象提供 Session 或 Application 作用域,因為該對象創建的連接會長時間保持打開狀態,而且腳本不再利用連接池。不過,可以在“Session”或“Application”內建的對象中存儲 ODBC 或 OLE DB 連接字符串,并訪問該字符串以便為在頁面上創建的“Connection”對象實例設置屬性。這樣,可以將經常使用的信息存儲為 session 或 application 狀態,而且只在需要時才創建使用該信息的對象。

    如果在內容或頭部返回到瀏覽器之后使用 Response.Redirect,就會看到一條錯誤消息?梢允褂 response.buffer=True 命令將輸入到瀏覽器的內容緩存來解決。默認情況下,對 ASP 應用程序開啟緩沖功能。

    可以使用 Server.Transfer 方法而不是 Response.Redirect 方法從一個 .asp 文件傳輸到位于同一服務器上的另一個文件中。使用 Server.Transfer 可以直接傳輸 .asp 文件請求而不必離開服務器隊列,這樣可以節省昂貴的往返代價。 
    例如,下面的腳本演示了如何使用 Server.Transfer 在依賴于狀態信息的應用程序頁面之間跳轉: 
    <% 
    If Session("blnSaleCompleted") Then 
    Server.Transfer("/Order/ThankYou.asp") 
    Else 
    Server.Transfer("/Order/MoreInfo.asp") 
    End if 
    %> 
    Server.Transfer 將請求從一個正在執行的 .asp 文件發送到另一個文件中。在傳輸過程中,原來請求的 .asp 文件立即終止執行,但并不清除輸出緩沖。請求信息然后在目標文件中變得可用并開始執行。在執行過程中,該文件與原來請求的文件訪問同一組內部對象(Request、Response、Server、Session 和 Application)。 

    ASP 還提供 Server.Execute 命令,可以用來傳輸給文件、執行其內容,然后再返回到啟動傳輸的文件。如果熟悉 VBScript,這樣就有助于將 Server.Execute 與過程調用進行類比,只不過是過程調用執行一個過程,而 Server.Execute 則是執行一個完整的 .asp 文件。 
    例如,下面的腳本演示了如何使用 Server.Execute 來進行 .asp 文件的動態包含: 
    <% 
    If blnUseDHTML Then 
    Server.Execute("DHTML.asp") 
    Else 
    Server.Execute("HTML.asp") 
    End If 
    %> 
    只要目標文件屬于同一服務器上的某個應用程序,原始應用程序將轉到該文件并執行它的內容,然后繼續執行啟動轉換的那個文件。正象 Server.Transfer 一樣,被執行的 .asp 文件的行為就象它是原始應用程序的一部分。
    用戶第一次請求特定應用程序內的 .asp 文件時,ASP 將生成一個“SessionID”。這是通過復雜算法產生的數值,SessionID 唯一標識每個用戶的會話。新會話開始時,服務器將 Session ID 作為 cookie 存儲到用戶 Web 瀏覽器中。 
    ASP 每次收到網頁請求時,都檢查 HTTP 請求頭文件內的 SessionID cookie。
    只要服務器收到的請求中不包含有效的 SessionID cookie,就將自動啟動新會話。 
    如果確定 ASP 應用程序不需要會話管理,則可以禁止 ASP 跟蹤會話和向用戶發送 SessionID cookie。 

    在下列情況下,ASP 將不會發送會話 cookie,應用程序禁用會話狀態,ASP 頁定義為無會話:
    <%@ EnableSessionState=False %> 
    應將該腳本置于 .asp 文件第一行,在其他任何腳本之前。
    如確實希望結束會話,可以使用“Session”對象的 Abandon 方法。例如,可以在窗體中提供“退出”按鈕,在該窗體中對包含下列命令的 .asp 文件 URL 設置 ACTION 參數。 
    <% Session.Abandon %> 

    可以使用“Connection”對象建立數據庫連接,也可以直接使用“Recordset”對象的“Open”方法來建立鏈接,后一種方法使用ADO的默認連接屬性。如下是后一種方法的示例:
    <% 
    strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Employees.mdb" 
    strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = ’Smith’ " 
    Set rstCustomers = Server.CreateObject("ADODB.Recordset") 
    ’使用 Open 方法打開連接,并使用通過 Connection 對象建立的連接。 
    rstCustomers.Open strSQL, strConnectionString 
    ’遍歷記錄集,顯示結果,并使用 MoveNext 方法遞增記錄位置。 
    Set objFirstName = rstCustomers("FirstName") 
    Set objLastName = rstCustomers("LastName") 
    Do Until rstCustomers.EOF 
    Response.Write objFirstName & " " & objLastName & "<BR>" 
    rstCustomers.MoveNext 
    Loop 
    %>
     

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>