まず最初は、文字列を出力するだけの簡単なサンプルから見ていきましょう。
ASPに限らず、作成した最初のスクリプトをブラウザに表示するまでは意外と苦戦してしまうこともあります。
簡単なスクリプトで表示できないときは、サーバーの設定をもう一度見直してみましょう。
通常のプログラミング言語と異なり、ASP は「HTML の部分」と「プログラムの部分」の二つに分かれます。
これは、ASPがWebアプリケーションを作成するために作られた言語だからです。
ただ、HTMLとプログラムは、サーバが行うべき処理が違っています。
HTML部分はブラウザにそのまま送られますが、プログラム部分は、実行してから、その結果をブラウザに送るという形で処理されます。
ですから、HTMLの部分とプログラムの部分は、サーバが区別できるようになっている必要があります。
そのために、<% ... %> という特殊な表現を記述します。
例えば、次のようになります。
文字列を表示するには Response.Write を使います。(<%=はResponse.Writeの省略した書き方です。)
例1 Response.Writeを使ってみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ Language=VBScript %> <html> <head> <title>Hello World</title> </head> <body> <% Response.Write "Hello World" %> <% ' プログラム部分はいくつあってもかまいません。 %> <%="Hello Wold"%> </body> </html> |
上の例の出力は以下となります。
1 2 3 4 5 6 7 8 9 | <html> <head> <title>Hello World</title> </head> <body> Hello World Hello Wold </body> </html> |
例2 全てのHTMLをASPで出力する
1 2 3 4 5 6 7 8 9 10 11 | <%@ Language=VBScript %> <% Response.Write "<html>" & vbCrLf Response.Write "<head>" & vbCrLf Response.Write "<title>Hello World</title>" & vbCrLf Response.Write "</head>" & vbCrLf Response.Write "<body>" & vbCrLf Response.Write "Hello World" & vbCrLf Response.Write "</body>" & vbCrLf Response.Write "</html>" & vbCrLf %> |
上の例の出力は以下となります。
1 2 3 4 5 6 7 8 | <html> <head> <title>Hello World</title> </head> <body> Hello World </body> </html> |
どうですか?きちんと表示されましたか?
また、「’」 からはじまって「改行」までがコメントとして扱われます。
コメントに記述する内容は、プログラムとして実行されませんので、どんな内容でもかまいません。日本語でももちろん大丈夫です。
サーバ上で動作するスクリプトについて
ASPファイルはサーバ上で動作するスクリプトです。
クライアントがページにアクセスしてきた際にサーバ上でスクリプトを実行し、クライアントのブラウザには処理結果のHTMLを送り返します。
このようなスクリプトをサーバーサイドスクリプトといいます。
例えば、googleやYahoo! などの検索エンジンはキーワードを入力するエリアがあり、何個かのキーワードを入れるとそのキーワードに関連するwebページがでてきます。
これを静的なHTMLでやるとすると大変な労力が必要になりますが、サーバサイドスクリプトならは簡単にできてしまいます。
では、サーバ上で実行されるASPと、JavaScriptなどのようにクライアント上で実行されるスクリプトでは、何が違うのでしょうか?
JavaScriptはクライアントマシン上で実行されるため、ロジックを含む全ページを取得しブラウザでスクリプトを解釈して実行されます。
しかしこれではネットワークに余分な負荷をかけたり、JavaScriptを解釈するブラウザによっては動作しない場合があります。
これに対してASPはスクリプトの実行がサーバー上で行われます。クライアントの要求に従ってHTMLを生成し、完成したHTMLを送信します。
従って、ブラウザの違いによって動作が異なるということはありません。