表示: Delphi C++
表示設定

アクション項目による要求メッセージへの応答

提供:RAD Studio XE2
移動: 案内, 検索

WebBroker の使い方:インデックス への移動

Web サーバーアプリケーションの実際の仕事は,実行されるアクションによって行われます。Web ディスパッチャがアクション項目を起動すると,そのアクション項目は 2 とおりの方法で現在のリクエストメッセージに応答することができます。

  • アクション項目の Producer プロパティとしてプロデューサコンポーネントが関連付けられている場合,そのプロデューサは自動的に Content メソッドを使ってレスポンスメッセージの Content を割り当てます。ツールパレットの[Internet]ページには,各種のコンテンツプロデューサコンポーネントがあり,レスポンスメッセージのコンテンツとなる HTML ページを作成するのに役立ちます。
  • プロデューサがレスポンスのコンテンツを割り当てた後で(関連付けられたプロデューサがある場合),アクション項目は HTTPApp.OnAction イベントを受け取ります。OnAction イベントハンドラには,HTTP リクエストメッセージを表す Web.HTTPApp.TWebRequest オブジェクトと,すべてのレスポンス情報を書き込むための Web.HTTPApp.TWebResponse オブジェクトが渡されます。

アクション項目のコンテンツが 1 つのコンテンツプロデューサによって生成可能な場合は,そのコンテンツプロデューサをアクション項目の Producer プロパティとして割り当てるのが最も簡単です。その場合でも,OnAction イベントハンドラから任意のコンテンツプロデューサにいつでもアクセスすることができます。OnAction イベントハンドラには高い柔軟性があるので,複数のコンテンツプロデューサを使ってレスポンスメッセージプロパティの割り当てなどを行うことができます。

コンテンツプロデューサコンポーネントと OnAction イベントハンドラは,どちらも任意のオブジェクトまたはランタイムライブラリのメソッドを使ってリクエストメッセージに応答することができます。どちらからでも,データベースへのアクセス,計算の実行,HTML ドキュメントの作成や選択などを実行できます。コンテンツプロデューサコンポーネントによるレスポンスコンテンツの生成については,「レスポンスメッセージのコンテンツの生成」を参照してください。

レスポンスの送信

OnAction イベントハンドラは,TWebResponse オブジェクトのメソッドを使って Web クライアントにレスポンスを送り返すことができます。ただし,アクション項目がクライアントにレスポンスを送信しない場合は,最後にリクエストに対処したアクション項目でそのリクエストが処理されたことが示されていれば,Web サーバーアプリケーションがレスポンスを送信します。

複数のアクション項目を使用する

リクエストに対して 1 つのアクション項目から応答することも,複数のアクション項目で処理を分担して応答することもできます。アクション項目がレスポンスメッセージのセットアップを完了していない場合,アクション項目は OnAction イベントハンドラの Handled パラメータを False に設定して,その状態を知らせなければなりません。

複数のアクション項目でリクエストメッセージへのレスポンス処理を分担し,アクション項目ごとに Handled パラメータを False に設定してほかのアクション項目が処理を継続できるようにする場合,デフォルトアクション項目の Handled パラメータは True のままにしておいてください。そうしないと,レスポンスが Web クライアントに送信されません。

複数のアクション項目で処理を分担する場合,デフォルトアクション項目の OnAction イベントハンドラまたはディスパッチャの AfterDispatch イベントハンドラが,すべての処理が実行されたかどうかを確認し,実行されていなければ該当するエラーコードを返さなければなりません。

関連項目

以前のバージョン
他言語版