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

提供: RAD Studio
移動先: 案内検索

アクション アイテム への移動


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

  • アクション項目に、Producer プロパティの値としてプロデューサ コンポーネントが関連付けられている場合、そのプロデューサは Content メソッドを使って応答メッセージの Content を自動的に割り当てます。[ツール パレット]の[Internet]ページには、各種のコンテンツ プロデューサ コンポーネントが含まれていて、応答メッセージのコンテンツとなる HTML ページを作成するのに役立ちます。
  • プロデューサが応答のコンテンツを割り当てた後で(プロデューサが関連付けられている場合)、アクション項目は Web.HTTPApp.TWebActionItem.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 イベント ハンドラで、すべての処理が終了したかを確認し、終了していなければ該当するエラー コードを設定しなければなりません。

関連項目