この特集のトップページへ
Chapter 8:プレゼンテーション層の構築

8.2.1 基本的なASPプログラム
●クライアントへの出力
 ASPの書式について説明したところで,次にASPからクライアントに文字列を出力する方法について説明する。

○基本的な出力
 クライアントに文字列を出力するには,ResponseオブジェクトのWriteメソッドを用いる(以下冗長になるため、単にResponse.Writeメソッドと記す)。たとえば,List 8-1のような形である。

 List 8-1と同等な出力は,List 8-2のようにしても得られる。

 List 8-1List 8-2のスクリプトが実行されると,クライアントには次のようなHTMLテキストが送信される。

<HTML>
<BODY>
テスト
</BODY>
</HTML>

One Point! ここでは見やすくするために改行位置を無視している。実際には,List 8-1List 8-2とでは改行位置が異なる。

 一般には,Response.Writeメソッドの引数にHTMLのエレメントを入れるとプログラムが見づらくなるから,HTMLの固定的なエレメントの部分はSCRIPTエレメントや<% %>の外に出してしまうことが多い。

○変数の内容の出力
 次に,変数の内容の出力について考える。変数の内容の出力ももちろん,Response.Writeメソッドで実現できる。たとえば,List 8-3のようにすれば,変数aに格納されている文字列“テストドキュメント”がユーザーに出力される。

 しかし,ASPではより簡便な方法が用意されていて,“<%=変数名%>”と記載すれば,変数の内容を出力できる。この表記を使うと,List 8-3のプログラムは,List 8-4のように記述できる。

 List 8-4の場合,5行目では文字列を保持する変数aを“<%= a%>”のようにして出力しているわけだが,数値を保持する変数や日付や時刻を保持する変数に対して“<%=変数名%>”の書式を使うこともできる。その場合,自動的に文字列に変換されて出力される。

 なお,“<%=変数名%>”は,SCRIPTエレメントや<% %>の内部に含めるのではなく,外側に記載する点に注意したい。つまり,List 8-5のような表記は誤りである。

○HTMLエンコードとURLエンコード
 ご存じのとおり,HTMLでは,“>”を“&gt;”と記述したり,“<”を“&lt;”と記述したりするというルールがある。そうしないと,Webブラウザがエレメントの区切りと勘違いするので,正しく処理されない。このようなルールを「HTMLエンコード」と呼ぶ。

 たとえば,List 8-6のようなスクリプトを考える。

 List 8-6の出力結果は,次のようになる。

<H1>
次ページに続く>>
</H1>

 これはHTMLとして正しくなく,次のようでなければならない。

<H1>
次ページに続く&gt; &gt;
</H1>

 修正するには,List 8-6の3行目にあるResponse.Writeメソッドで出力している文字列中にある“>”を“&gt;”に置き換えればよいわけだが,スクリプトでいちいち処理するのは面倒である。List 8-6のように固定された文字列ならばまだしも,たとえば変数の内容を出力するような場合には,HTMLエンコードすべき文字列が変数の値として含まれているかどうかを調べて逐一プログラムで置換するのは大変である。そこでASPでは,ServerオブジェクトのHTMLEncodeメソッドを用いると,簡単にHTMLエンコードを処理することができるようになっている。

 Server.HTMLEncodeメソッドを使うと,その引数に指定した文字列をHTMLエンコードした文字列が得られる。そこで,List 8-6に示したプログラムをList 8-7のように変更すればよい。

 List 8-7のようにすれば,3行目のServer.HTMLEncodeメソッドによって“次ページに続く>>”という文字列は“次ページに続く&gt; &gt;”に変換され,変換された文字列がResponse.Writeメソッドで出力される。

 HTMLで使われるエンコード方式には,もう1つ「URLエンコード」と呼ばれるものがある。URLエンコードとは,URL中に含まれる文字列のうち,英数字以外のものを“%xx”(xxは文字コードを16進数表記したもの)という書式に変換したものであり,主にリンク先のURL表記などに用いられる。ASPでは,ServerオブジェクトのURLEncodeメソッドを用いると,HTMLエンコードと同様の方法でURLエンコードできるようになっている。

Prev 13/43 Next