|
||||||||
|
Классы TWebModule и TWebDispatcher.
При выборе из меню Delphi команды File=>New открывается диалоговое окно New Items. Выберите в нем пиктограмму Web Server Application для запуска мастера, с помощью которого можно выбрать тип расширения Web-сервера. Предлагается три варианта: приложения 1SAPI/NSAPI, CGI и Win-CGI. В этой главе уделяется внимание созданию приложений ISAPI/NSAPI. Схема расширений CGI-серверов примерно такая же, просто с приложениями ISAPI немного легче работать. После выбора типа приложения Delphi создает проект на базе класса TWebModule. Главный проект представляет собой DLL, а главный модуль содержит класс TWebModule, который является потомком класса TDataModule и содержит всю логику, необходимую для получения HTML-запроса и ответа на него. Класс TWebModule, подобно своему предку, может принимать только невизуальные элементы управления. Для наполнения содержимого класса TWebModule вы можете использовать все элементы управления базами данных, а также элементы вкладки Internet палитры компонентов, связанные с созданием HTML-данных. Это позволит вам добавить бизнес-правила для Web-приложений подобно тому, как это можно было бы сделать с помощью класса TDataModule в обычных приложениях. Класс TWebHodule обладает свойством Actions, которое содержит семейство элементов TWebActionItem Элемент TWebActionItem позволяет выполнять код. основанный на определенном запросе. Каждый элемент TWebActionItem имеет собственное имя, и, когда клиент создает запрос, основанный на этом имени, выполняется ваш код и подается соответствующий запрос.
Выберите модуль TWebModule, чтобы его свойства отобразились в окне инспектора объектов. Выберите свойство Actions и либо дважды щелкните на нем, либо выберите редактор свойств с помощью маленькой кнопки, изображающей многоточие (...). Откроется диалоговое окно WebModule Actions. Щелкните на кнопке New и выберите элемент WebActionItem. В окне инспектора объектов отобразятся свойства элемента Action. Перейдите к свойству PathInfo и введите в качестве его значения /test. Затем перейдите во вкладку Events инспектора объектов и дважды щелкните на событии OnAction, чтобы создать новый обработчик событий. Он будет иметь следующий вид: procedure
TWebModulel.WebModulelWebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled:
Boolean); Этот обработчик событий содержит всю информацию о запросе, который сгенерировал это действие, и средства для ответа на него. Информация запроса клиента содержится в параметре Request, который имеет тип TWebRequest. Параметр Response имеет тип TWebResponse и используется для отправки требуемой информации обратно клиенту. Внутри этого обработчика события можно написать любой код, необходимый для ответа на запрос, включая обработку файла, действия над базой данных или еще что-нибудь, нужное для отправки HTML-страницы назад клиенту. Прежде чем погрузиться в глубины класса TWebModule, рассмотрим простой пример, демонстрирующий основные принципы работы приложения Web-сервера. Простейший способ создать HTML-страницу, которая отвечает на запрос клиента, ? построить ее прямо в коде Delphi с помощью класса TStringList. После размещения страницы HTML в компоненте TStringList ее без труда можно присвоить свойству Content параметра Response. Свойство Content представляет собой строку, которая используется для хранения страницы HTML. предназначенной для возвращения клиенту. Это единственное свойство параметра Response, которое должно быть заполнено, поскольку оно содержит данные, подлежащие отображению. Если это свойство остается пустым, броузер клиента сообщит, что запрашиваемый документ пуст. В листинге представлен код, который нужно добавить к обработчику, чтобы протестировать его. Листинг procedure
TWebModule.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled:
Boolean); Сохраните этот проект под именем SAMPLE1. скомпилируйте его и поместите полученный в результате файл SAMPLE1.DLL в действующем по умолчанию каталоге вашего Web-сервера, использующего интерфейс ISAPI или NSAPI. Затем направьте свой броузер по адресу: <каталог по умолчанию>/sample1.dll/test В окне броузера вы должны увидеть ожидаемую Web-страницу, как показано на рис. 1. Обратите внимание на то, что результатом компиляции этого проекта является DLL, которая отвечает спецификации ISAPI. Исходный код этого проекта выглядит следующим образом: library Sample1; Рисунок 1 Обратите внимание на три экспортируемых процедуры: GetExtensionVersion, HttpExtensionProc и TerminateExtension. Это единственные процедуры, которые требуются спецификацией ISAPI. Данное приложение отвечает требованиям ISAPI, но будет работать и с серверами, ориентированными на NSAPI.
На примере этого маленького проекта иллюстрируется простота построения приложения Web-сервера с предоставлением ответа на запрос клиента с помощью Delphi. Это относительно простой пример, в котором прямо в самом коде динамически создается HTML-страница. Но, как вы увидите позже, в Delphi предусмотрены средства генерировать ответы гораздо более сложным и интересным образом, однако для этого необходимо глубже вникнуть в работу приложения Web-сервера. Поэтому вашему вниманию предлагается следующий раздел. [Листинг с примером простейшего Web-приложения на Delphi]
| ||||||||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |