ユーザーへの情報の送信

ASP の組み込みオブジェクトである Response オブジェクトを使うと、ユーザーに送信する情報を制御することができます。各メソッドを次に示します。

ユーザーへのテキストの送信

Write メソッドは、Response オブジェクトのメソッドの中でもっとも頻繁に使われるものです。Write メソッドを使うと、ASP 区切り記号の内部から情報をユーザーに送信できます。

Response.Write variant

ここで variant には、デフォルトの主要スクリプト言語がサポートしている任意のデータ型を指定できます。

たとえば、次のステートメントはあいさつメッセージをユーザーに送ります。

<% 
If user_has_been_here_before Then 
  Response.Write "<H3 ALIGN=CENTER>またまた概要ページにようこそ。</H3>" 
Else 
  Response.Write "<H3 ALIGN=CENTER>概要ページにようこそ。</H3>"
End If 
%> 

Response.Write メソッドは、プロシージャ内部からユーザーにコンテンツを送り返す場合に特に便利です。

コンテンツをユーザーに送り返す場合に必ずしも Response.Write を使う必要はありません。スクリプト区切り記号の内部にないコンテンツはブラウザに直接送られ、適切に整形されて表示されます。たとえば、次のスクリプトは上のスクリプトとまったく同じ出力になります。

<H3 ALIGN=CENTER> 
<% If user_has_been_here_before Then %> 
またまた概要ページにようこそ。
<% Else %> 
概要ページにようこそ。
<% End If %> 
</H3> 

別の URL へのユーザーのリダイレクト

ユーザーにコンテンツを送る代わりに、Redirect メソッドを使ってブラウザから別の URL にリダイレクトすることができます。

Response.Redirect URL

たとえば、ユーザーが特定のページから自作のアプリケーションにアクセスするようにしたい場合に、ユーザーがそのページにいるかどうかを確かめることができます。ユーザーがそのページにいなければ、そのページを送ることができます。

<%
If Not Session("Been_to_Home_Page") Then 
  Response.Redirect "homepage.asp" 
End If
%> 

注意    コンテンツが既にユーザーに送り返された後に .asp ファイルから Response.Redirect を使った場合、エラー メッセージが出ます。

HTTP コンテンツの種類の設定

Response オブジェクトの ContentType プロパティを使い、ユーザーに送信するコンテンツについて、その HTTP コンテンツの種類を示す文字列を設定できます。通常の構文を次に示します。

Response.ContentType = ContentType

ここで、ContentType はコンテンツの種類を示す文字列です。サポートされているコンテンツの種類の一覧については、使用している Web ブラウザのマニュアルか、または最新の HTTP の仕様書を参照してください。

たとえば、ソース コード (ASP ページが生成される .asp ファイル) をユーザーに送るには、ContentType を text/plain に設定します。

<% Response.ContentType = "text/plain" %> 

すると、ブラウザはこのページを HTML ページとして処理しなくなり、テキスト ページとして表示するようになります。

Response オブジェクトによる Cookies コレクションの使用

cookie とは、クライアントのブラウザから Web サーバーに送られるか、または Web サーバーからクライアントのブラウザに送られるトークンのことです。cookies によって特定の情報の集合とユーザーとの関連付けが可能になります。ASP スクリプトからは、Cookies コレクションを使って cookies の値の取得と設定の両方ができます。

ここでは、Web サーバーからブラウザに送られる cookies にアクセスする方法について説明します。ブラウザから Web サーバーに送られる cookies へのアクセス方法の詳細については、「Request オブジェクトによる Cookies コレクションの使用」を参照してください。

cookie の値を設定するには、Request.Cookies メソッドを使います。cookie がまだ存在していなければ、Response.Cookies によって新しい cookie が作成されます。

<% Response.Cookies("animal")="elephant" %> 

同様に、cookie のキーの値を設定するには次のようにします。

<% Response.Cookies("animal")("elephant")="African" %> 

既存の cookie がキーの値を持っているにもかかわらず Response.Cookies でキー名が指定されていない場合、既存のキーの値は削除されます。同様に、既存の cookie にキーの値がないにもかかわらず Response.Cookies でキー名と値が指定されている場合には、その cookie の既存の値は削除され、キーと値の新しいペアが作成されます。

応答のバッファ処理

ASP の全ページのバッファ処理のための設定は、デフォルトでオフにされています。しかし、Response オブジェクトの Buffer プロパティを True に設定することで、ページ上のすべてのスクリプトを処理してからそのページをユーザーに送ることができます。

<% Response.Buffer = True %> 

バッファ処理は、以前にユーザーに送信したことのあるコンテンツを送らないようにするために、ページ処理の過程でそのことを判断する機会として利用することができます。コンテンツを送らない場合、代わりに Response オブジェクトの Redirect メソッドを使って別のページをユーザーにリダイレクトするか、または Response オブジェクトの Clear メソッドでバッファをクリアした後、別のコンテンツをユーザーに送信することができます。次の例ではこれらの 2 つのメソッドを両方使っています。

<% Response.Buffer = True %>
<html>
<body>
.
.
.
<%
If Request("FName") = "" Then
  Response.Clear
  Response.Redirect "/aspsamp/samples/test.html"
  Response.End
Else
  Response.Write Request("FName")
End If
%>
</body>
</html>

同じスクリプトの中で Buffer メソッドを呼び出して Flush メソッドを呼び出さないと、サーバーはクライアントから要求された Keep-Alive 要求を維持するようになります。これにより、サーバーは各クライアント要求のための接続を新しく確立する必要がなくなるため、サーバーのパフォーマンスが向上します (この場合サーバー、クライアント、および全代理サーバーのすべてが Keep-Alive 要求をサポートしていることが必要です)。しかし、この方法ではサーバーが現在の .asp ファイルに関するすべてのスクリプト処理を完了するまで、バッファ処理の間ユーザーに応答が表示されなくなるという欠点もあります。そのため、スクリプトが大きい場合には、スクリプトの処理が完了するまでユーザーがかなり長い時間待たされるということもあります。

ASP の全アプリケーションで使用する全ページのバッファ処理は、レジストリ設定 BufferingOn が 0 に設定されていることによりデフォルトでオフにされています。このレジストリ設定の詳細については、「レジストリ エントリの設定」を参照してください。


(C) 1996-1997 Microsoft Corporation. All rights reserved.