|
||||
|
|
9章 Response オブジェクト
|
|
|
Responseオブジェクト
ASPは Web サーバ側で動作するスクリプトのため、Web クライアント(ブラウザ)へデータを送信するには特殊な方法が必要になります。この方法を提供するのが Response オブジェクトで、Responseとはクライアントへの出力関連を扱うオブジェクトです。これまでのサンプルでも何度か [ Response.Write("") ] といった記述がありましたが、これは、Responseオブジェクトの提供する Writeメソッドを使用してブラウザに文字列を出力する。という事を記述しています。
メソッド
Write
Response.Write ( 出力文字列 )
ブラウザへ文字列を出力するメソッドです。出力するデータは第一引数で指定します。引数には、文字・文字列・整数・バリアントなど VBScriptで使用可能なデータ型全てを指定することが出来ます。 この例ではWriteメソッドを使用して、文字列"Hello World !!"をブラウザへ出力します。 [ Sample ]
<% Response.Write("Hello World !!") %> <% Response.Write "Hello World !!" %> AddHeader
Response.AddHeader 名前, 値
AddHeaderメソッドは指定したHTMLヘッダーを追加して応答します。ただし同じ名前で出力される既存のヘッダーを置き換えることはできません。 この例ではページキャッシュを無効にするようにHTTPヘッダへ追加します。 [ Sample ]
Response.AddHeader "Pragma", "no-cache" Response.AddHeader "cache-control", "no-store" AppendToLog
Response.AppendToLog 出力文字列
WEBサーバのログへ指定した文字列を末尾に追加します。ただしこのメソッドを実行してもデフォルトの状態ではログに出力してくれません。ログへ出力させるためには、 サイトの設定画面にて"URIクエリ"をチェックしてある必要があります。 この例ではWebサーバログへ文字列"Hello World"を出力します。 [ Sample ]
Response.AppendToLog "Hello World"
BinaryWrite
Response.BinaryWrite 出力データ
BinaryWriteメソッドは文字変換などを行わず、引数で指定された値をそのままバイナリデータとしてHTTP出力とします。 Clear
Response.Clear
Clearメソッドは既にバッファへ出力されたデータをブラウザへ出力する前にクリアします。このメソッドは後述する Bufferプロパティが Trueの時にのみ有効で、これらを使ってエラー処理を行うことができます。 この例ではClearメソッドを実行したため、一回目のWriteメソッドの出力はブラウザに表示されません。 [ Sample ]
<% Response.Buffer = True Response.Write("この文字列は出力しません。") Response.Clear Response.Write("この文字列は出力します。") %> Flush
Response.Flush
Flushメソッドは既にバッファへ出力されているデータを直ちに出力します。このメソッドは後述する Bufferプロパティが Trueの時にのみ有効です。 先ほどのClearメソッドのサンプルでは一回目のWriteメソッドの前にClearメソッドを実行していたため、上の出力内容がブラウザに出力されませんでしたが、今回はClearメソッドの前に Flushメソッドを実行しています。これによりこのサンプルでは一回目の出力内容もブラウザへ表示されます。 [ Sample ]
<% Response.Buffer = True Response.Write("この文字列は出力しません。") Response.Flush Response.Clear Response.Write("この文字列は出力します。") %> Redirect
sponse.Redirect "移動先URL"
Redirectメソッドは指定したURLへジャンプすることが出来ます。例えばブラウザの種類を判別してブラウザ別に用意したページへ自動でジャンプさせたりする事も可能です。次のスクリプトは当サイトのトップへジャンプします。 [ Sample ]
<% Response.Redirect "http://www.site-cooler.com/" %> End
Response.End
Endメソッドは処理を明示的に終了します。現在までの結果を出力し、以降のステップは実行されません。また、このEndメソッドを実行するとバッファに格納されているデータのFlushも行います。 次のサンプルではEndメソッド以降のステップは実行しません。ただバッファに格納されているデータは出力して終了します。 [ Sample ]
<% Response.Buffer = True Response.Write("この文字列は出力します。") Response.End Response.Write("この文字列は出力しません。") %> プロパティ
Buffer
[現在の設定値] = Response.Buffer [ 真/偽 ]
Bufferプロパティは、出力をバッファリングするか否かを設定しますが、このプロパティはクライアントへ出力を送信した後に設定することは出来ません。設定を行う場合はスクリプトの先頭で行います。また、バッファリングを行った場合は Flushメソッドか、スクリプトが終了するまでクライアントに結果は出力されません。 [ Sample ]
<% #バッファリングを有効にします。 Response.Buffer = True %> CacheControl
Response.CacheControl [ Private/Public ]
この値をPrivateに設定した場合(既定)はブラウザのキャッシュのみ有効となっている状態です。この場合はプロキシサーバでのキャッシュは行われません。逆にPublicに設定した場合はプロキシサーバなどのパブリックキャッシュがページのキャッシュを行えるようになります。 [ Sample ]
<% #パブリックキャッシュを有効にします。 Response.CacheControl = "Public" %> Charset
Response.Charset = 文字コード
Charsetプロパティは出力するデータの文字コードを明示的に指定します。設定される値は文字コード名ですが、このプロパティでは出力されるブラウザがこの文字コードを出力できるかどうかまでは考慮しません。 [ Sample ] 次のスクリプトは出力する文字コードを"ISO-2022-JP"(JISコード)に設定します。
<% Response.Charset = "ISO-2022-JP" Response.Write("文字コード変更") %> 次のスクリプトは出力する文字コードを"ISO-8859-1"に設定します。日本語の出力では文字化けになってしまいます。
<% Response.Charset = "ISO-8859-1" Response.Write("文字コード変更") %> ContentType
Response.ContentType = 出力コンテンツタイプ
ASPからの結果はデフォルトでHTML(コンテンツタイプは:text/HTML )として出力されます。ただしGIFやバイナリデータ、Excelなどのアプリケーションデータを返すときにこの値を変更することによって、応答の種類を変更できます。 次のスクリプトは出力するコンテンツタイプをバイナリデータとして明示的に指定します。 [ Sample ]
<% Response.ContentType = "application/octet-stream" %> Expires
Response.Expires = [設置値]
Expiresプロパティはそのページの有効期限を明示的に"何"分後に設定します。このプロパティにマイナスの値を設定することで有効期限が切れ、常に新しい状態のページが読み込まれる事になりますが、その分レスポンスは落ちてしまいます。。同一ページに複数回記述することが出来ますが、使用される値は設定された値の中で最も小さい値になります。 [ Sample ]
<% #次のように設定するとページの有効期限はすぐ切れます。 Response.Expires = -1 Response.Write("Expiresサンプル") %> ExpiresAbsolute
Response.ExpiresAbsolute = [日付] [時間]
ExpiresAbsoluteプロパティは前述したExpiresプロパティと同様にページの有効期限を指定しますが、ExpiresAbsoluteプロパティでは設定する方法が"何分後"ではなく、"何日の何時"と特定の日時を指定します。 [ Sample ]
<% #ページの有効期限を2003/9/25 18:00に設定します。 Response.ExpiresAbsolute=#Sep 25,2003 18:00:00# Response.Write("ExpiresAbsoluteサンプル") %> IsClientConnected
[ 真/偽 ] = Response.IsClientConnected
IsClientConnectedプロパティは読み取り専用のプロパティで値を設定することは出来ません。このプロパティはクライアントがサーバから切断されていなければ 真 を、切断されていれば 偽 を返します。このサンプルではコネクションが切断されていた場合はトップページへ強制的に移動します。 [ Sample ]
<% If Response.IsClientConnected = False Then Response.Redirect "/" End If %> Cookieの書込み
今回は ASPを使った Cookie の操作について見てみましょう。通常はセキュリティのためサーバ側のプログラムからクライアントのデータを参照したり、データを変更したりと言う事は出来ません。しかし Cookieとはサーバ側からクライアント側へ書き込んで保存しておくことが出来る情報のことで、ASPでは Responseオブジェクトの提供する Cookiesコレクション機能として利用します。Cookie は JavaScript や Perl などからも利用することが出来ます。
ちなみに ASPからの利用はこの Responseオブジェクトを利用することで、他のスクリプトより簡単に行える、、、、気がします。 Cookiesコレクション
Response.Cookies("名称").[("サブキー")|プロパティ] = 設定値
クッキーの書込み T
<% Response.Cookies("Knave")("ASP") = "http://www.site-cooler.com/kwl/asp/" %> まず単純なCookieの発行を見てみます。上記サンプルでは "Knave" というキーで "ASP"のサブキーを持つCookieへ、文字列 "http://www.site-cooler.com/asp/" を設定します。このCookieの有効期限はブラウザが終了するまでとなります。 クッキーの書込み U
<% Response.Cookies("Knave")("ASP") = "http://www.site-cooler.com/kwl/asp/" Response.Cookies("Knave").Expires = Date + 365 %> 今回は上で紹介したサンプルに有効期限を設定しました。これでこのCookieは発行後1年間の有効期限が設定されます。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||