Active Server Pages (ASP) ファイルは、次の要素の任意の組み合わせを含む、拡張子 .asp を持つテキスト ファイルです。
.asp ファイルは、HTML ファイルのファイル名拡張子 .htm または .html を .asp に置き換えることにより簡単に作成できます。ファイルに ASP の機能が含まれていない場合は、サーバーは ASP スクリプト処理を省略して、効率的にファイルをクライアントに送ります。Web 開発者にとっては、その時点では ASP 機能を追加する予定がない場合でも、ファイルに .asp 拡張子を割り当てることができるため、大幅に柔軟性が増すことになります。
.asp ファイルを Web に発行するには、新しく作成したファイルを Web サイトの仮想ディレクトリに保存します (このとき、保存するディレクトリで、スクリプト アクセス権または実行アクセス権が有効になっていることを確認してください)。次に、保存したファイルの URL を入力し、ブラウザからファイルを要求します。(ここでは ASP ページを要求する必要があります。 .asp ファイルの物理パスを入力して ASP ページを要求することはできません。)このファイルがブラウザに表示されると、サーバーが HTML ページを返したことがわかります。これは、通常の動作と異なるようにみえるかもしれませんが、それは、サーバーがファイルを送る前に、ASP のサーバー側のスクリプトすべてを解析および実行するためです。ユーザーが受け取るのは、常に、標準の HTML ファイルです。
.asp ファイルの作成には任意のテキスト エディタを使用できますが、Microsoft® Visual InterDev™ などの ASP をサポートする機能のあるエディタを使用すると、より効率的な作業が行えます (詳細については、Microsoft Visual InterDev の Web サイトを参照してください)。
サーバー側のスクリプトとは、Web サーバーに連続的にコマンドを発行するために使用する一連の命令のことです (Web サイトの作成経験があるユーザーは、Web ブラウザ上で実行されるクライアント側のスクリプトを知っていることでしょう)。.asp ファイルでは、スクリプトはデリミタによってテキストおよび HTML タグと区別されます。"デリミタ" とは、ある情報単位の開始と終了を示す文字または文字の並びのことです。HTML の場合は小なり記号 (<) と大なり記号 (>) がデリミタで、HTML のタグはこれらのデリミタで囲まれます。
ASP では、スクリプト コマンドを囲むデリミタとして <% と %> を使用します。デリミタで囲まれた部分には、使用するスクリプト言語で有効な任意のコマンドを記述できます。次の例は、スクリプト コマンドを含む簡単な HTML ページです。
<HTML> <BODY> This page was last refreshed on <%= Now() %>. </BODY> </HTML>
VBScript の関数 Now() は、現在の日付と時刻を返します。このページが Web サーバーによって処理されると、<%= Now() %>
が現在の日付と時刻に置き換えられた後、次のような結果がブラウザに返されます。
This page was last refreshed on 01/29/99 2:20:00 PM.
デリミタによって囲まれたコマンドは、"主要スクリプト コマンド" と呼ばれ、これらのコマンドは、主要スクリプト言語を使って処理されます。スクリプトのデリミタで囲まれた部分に記述するコマンドは、主要スクリプト言語で有効なコマンドである必要があります。既定では、主要スクリプト言語は VBScript ですが、ほかの言語に設定することもできます。「スクリプト言語を使用する」を参照してください。
既にクライアント側のスクリプト作成の経験があるユーザーは、スクリプト コマンドおよび式を囲む際に、HTML の <SCRIPT> タグが使用されることに気づくでしょう。<SCRIPT> タグは、.asp ファイル内で複数の言語を使用して、プロシージャを定義する必要があるサーバー側のスクリプトを作成するときに使用することもできます。詳細については、「スクリプト言語を使用する」を参照してください。
ASP のデリミタで囲まれた部分には、主要スクリプト言語で有効な任意のステートメント、式、プロシージャ、または演算子を記述できます。VBScript やほかのスクリプト言語で使われる "ステートメント" とは、何かの操作、宣言、または定義を表すための構文的に完結した単位のことをいいます。次の例で使われている条件ステートメント If...Then...Else は、よく使われる VBScript ステートメントの 1 つです。
<% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then strGreeting = "Good Morning!" Else strGreeting = "Hello!" End If %> <%= strGreeting %>
このスクリプトは、時間に応じて "Good Morning!"
または "Hello!"
を文字列変数 strGreeting
に割り当てます。<%= strGreeting %>
ステートメントは、変数の現在の値をブラウザに送信します。
この例では、(Web サーバーのタイム ゾーンで) 正午前にこのスクリプトを見たユーザーには、次のテキスト行が表示されます。
Good Morning!
正午以降にこのスクリプトを見たユーザーには、次のテキスト行が表示されます。
Hello!
1 つのステートメントのセクション間に HTML テキストを挿入することができます。たとえば、次のスクリプトでは、If...Then...Else ステートメントの内部に HTML を記述していますが、前のスクリプト例とまったく同じ結果が得られます。
<% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then %> Good Morning! <% Else %> Hello! <% End If %>
条件が真、つまり時刻が正午前である場合、Web サーバーは条件ステートメントの後に記述されている HTML ("Good Morning") をブラウザに送ります。 条件が偽の場合は、Else ステートメントの後に記述されている HTML ("Hello!") をブラウザに送ります。HTML とスクリプト コマンドをこのように組み合わせて使う方法は、複数行の HTML テキストを If...Then...Else ステートメントで囲む場合に便利です。最初のスクリプト例は、Web ページのさまざまな場所であいさつの言葉を表示する場合に特に便利です。変数の値を一度設定するだけで、繰り返しその値を表示できるためです。
HTML テキストの間にスクリプト コマンドを挿入するのではなく、スクリプト コマンドの中から HTML テキストをブラウザに返すこともできます。テキストをブラウザに返すには、ASP の組み込みオブジェクトである Response を使用します。次の例では、前のスクリプト例と同じ結果が得られます。
<% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then Response.Write "Good Morning!" Else Response.Write "Hello!" End If %>
Response.Write は、その後に指定されたテキストをブラウザに送信します。テキストを動的に組み立ててブラウザに返す場合は、ステートメント内で Response.Write を使用します。たとえば、いくつかの変数の値を含む文字列を作成する場合は、この方法を使用します。Response オブジェクト、およびオブジェクト全般の詳細については、「コンポーネントとオブジェクトを使用する」および「ブラウザにコンテンツを送信する」を参照してください。ここでは、HTML ページにスクリプト コマンドを挿入するには、いくつかの方法があることに注意してください。
ASP のデリミタで囲まれた部分には、既定の主要スクリプト言語で記述されたプロシージャを含めることができます。詳細については、「スクリプト言語を使用する」を参照してください。
JScript コマンドを使用している場合、ステートメントのブロックを示す中かっこ ({}) は、間に HTML タグおよびテキストがある場合でも、ASP コマンドの中に直接挿入できます。たとえば、次のように指定します。
<% if (screenresolution == "low") { %> This is the text version of a page. <% } else { %> This is the multimedia version of a page. <% } %>
または、次のように記述できます。
<% if (screenresolution == "low") { Response.Write("This is the text version of a page.") } else { Response.Write("This is the multimedia version of a page.") } %>
ASP は、使用するスクリプト言語の一部ではないディレクティブ、すなわち出力ディレクティブと処理ディレクティブを提供しています。
ASP の "出力ディレクティブ" <%= expression %>
は、式の値を表示します。この出力ディレクティブは、Response.Write を使用して情報を表示することと同じです。たとえば、出力式 <%= city %>
は、Baltimore
という語 (変数の現在の値) をブラウザに表示します。
ASP の "処理ディレクティブ" <%@ keyword %>
は、.asp ファイルを処理するために必要な ASP の情報を提供します。たとえば、次のディレクティブは、VBScript をページの主要スクリプト言語として設定します。
<%@ LANGUAGE=VBScript %>
処理ディレクティブは、.asp ファイルの先頭行に記述する必要があります。ページに複数のディレクティブを追加する場合は、ディレクティブを同じデリミタの中に記述する必要があります。処理ディレクティブは、#include ステートメントでインクルードされるファイルの中には記述しないでください。詳細については、「ファイルをインクルードする」を参照してください。アットマーク記号 (@) とキーワードの間には、スペースを 1 つ入れる必要があります。処理ディレクティブには、次のキーワードがあります。
重要 1 つのディレクティブに複数のキーワードを含めることができます。キーワードと値のペアは、ほかのペアとスペースで区切る必要があります。等号 (=) の両側にはスペースを入れないでください。
次の例は、スクリプト言語とコード ページの両方を設定します。
<%@ LANGUAGE="JScript" CODEPAGE="932" %>
主要スクリプト言語が VBScript または JScript のいずれかの場合、ASP はコマンドからホワイト スペースを取り除きます。その他のすべてのスクリプト言語では、ASP はホワイト スペースをそのまま残し、位置やインデントが意味を持つ言語が正しく解釈されるようにします。ホワイト スペースには、スペース、タブ、キャリッジ リターン、およびライン フィードが含まれます。
VBScript と JScript では、デリミタ <% の後とデリミタ %> の前にホワイト スペースを使用して、コマンドを読みやすくすることができます。次に示すコマンドは有効なコマンドです。
<% Color = "Green" %> <%Color="Green"%> <% Color = "Green" %>
ASP では、デリミタ %> と <% の間のホワイト スペースは取り除かれますが、読みやすくするためにホワイト スペースを使用することをお勧めします。1 つの分の中に複数の変数の値を表示する場合など、2 つのステートメントの間でホワイト スペースを保持する必要がある場合は、HTML の改行しないスペース文字 ( ) を使用してください。たとえば、次のように指定します。
<% 'Define two variables with string values. strFirstName = "Jeff" strLastName = "Smith" %> <P>This Web page is customized for "<%= strFirstName %> <%= strLastName %>." </P>