СТАТЬЯ |
18.06.01
|
Colin A.Ridgewell, http://www.haydenr.com
Copyright© 2001. Borland Software Corporation.
Оглавление
Kylix является средством разработки от Borland, обеспечивающим операционную систему Linuxâ собственным RAD-инструментарием (Rapid Application Development – быстрая разработка приложений). Он основывается на получившем широкое признание RAD-инструменте DelphiTM. Итак, почему же стоит использовать Kylix для платформы Linux? Если Linux применяется в качестве основной платформы, то возникает необходимость решения проблем, связанных с переносом приложений. Инструмент Kylix был создан как раз для того, чтобы переносить такие оригинальные приложения. Традиционные инструменты Linux, подобные GCC (GNU-компилятор) и Emacs, являются инструментами системного уровня и могут использоваться для решения таких задач, как перекомпиляция ядра или разработка драйверов устройств; однако, они не могут решать проблемы совместимости приложений.
Возможность разработки динамических (и зачастую управляемых данными, извлекаемыми из баз данных) web-приложений на базе ApacheTM может оказаться ключевым моментом в успешном использовании Linux самыми различными организациями. Раньше разработчикам приходилось использовать традиционные технологии создания сценариев, но теперь Kylix Server Developer привнес в разработку ПО для Apache собственный высокопроизводительный RAD-инструментарий, включающий компонентную среду для визуального программирования. Kylix упрощает и ускоряет разработку web/Internet-приложений на базе Apache для платформы Linux, позволяя разрабатывать масштабируемые многопользовательские web-приложения, поддерживающие работу с большими объемами данных.
Ниже приведен список характерных черт Kylix, доступных при разработке е-бизнес, web- и Internet-приложений на базе Linux.
Linux – это многофункциональная и многообещающая операционная система, особенно для разработки и поддержки web-серверов.
Ключевым моментом в интеграции бизнес-систем на платформе Linux можно назвать создание динамического web- контента, интегрирующего базу данных предприятия с Internet или Intranet. В настояще й статье показано, как легко можно интегрировать web-приложения электронной коммерции с собственной базой данных, используя Kylix Server Developer от Borland для разработки приложений для web-сервера Apache под Linux. Приведен также ряд практических примеров. Если Вы являетесь опытным разработчиком под Apache или на Delphi, не знакомым с Linux, в этой статье Вы найдете много полезной для себя информации.
Разработка Web-приложений в KylixTM
Kylix уникален тем, что позволяет разработчику выбирать, каким образом тот хочет разрабатывать приложения для web-серверов Apache, с помощью CGI или DSO (Динамические разделяемые объекты). На рисунке 1 представлено диалоговое окно мастера ‘web Server Application’, доступное путем выбора File | New из основного меню. С этого места разработка любого из указанных вариантов приложений будет одинаковой: код проекта генерируется Kylix-инструментарием в соответствии с Вашим выбором.
Рисунок 1. Диалоговое окно нового мастера web-серверных приложений
Код NetCLX-приложений в Kylix будет совместим с Delphi 6, который сможет компилировать расширения для ISAPI, NSAPI и win-CGI не только для Apache, но и для других web-серверов. Такая совместимость кодов стала возможной, благодаря общей NetCLX-архитектуре, используемой для построения web-приложений. NetCLX-архитектура также является независимой от web-сервера, поэтому разработчику нет необходимости знать всю глубинную специфику реализации web-сервера.
Самым популярным программным обеспечением для web-серверов на базе Linux является Apache. Конечно, это один из самых часто используемых в мире web-серверов не только для Linux, но и для таких платформ, как Windows и Unix. Однако, было подсчитано, что около 35% общедоступных web-серверов используют web-сервер Apache под Linux (www.netcraft.com). Apache вырос из проекта ‘NSCA httpd’, разработанного Национальным центром по применению суперкомпьютеров в Иллинойсе. Ряд авторов, писавших части программы для NSCA httpd, объединились и образовали группу Apache (http://www.apache.org), названную так по аналогии с первоначальным названием ‘A Patchy Server’. Первый официальный выпуск (0.6.2) сервера Apache появился в апреле 1995 года. Теперь - это открытая компания, известная уже под названием Apache Software Foundation, разрабатывающая некоммерческие проекты Apache.
Создание CGI-приложений для web-сервера Apache с использованием примера WebBrokerTM
Давайте посмотрим, как использование Kylix упрощает создание собственных web-серверных приложений для платформы Linux. В первом примере будет создаваться простое CGI web-приложение, которое может использоваться для посылки email-сообщений из web-браузера. Оно будет генерировать начальную HTML-форму, в которую пользователь должен внести всю необходимую информацию и вернуть ее обратно серверному приложению. Затем на базе этой информации web-приложение создаст и отправит email-сообщение.
Сначала выберите элемент File | New из основного меню Kylix, затем опцию CGI в появившемся диалоговом окне мастера приложений для web-сервера (см. Рисунок 1). Kylix создаст новое ‘non GUI’- консольное приложение всего с одним модулем, WebModule (см. Рисунок 2). Модуль WebModule обрабатывает все запросы, приходящие от web-сервера; именно в него Вы можете поместить все невизуальные генерирующие контент компоненты web-приложения.
Рисунок 2. Пустой WebModule.
Теперь выберите из закладки Internet в палитре компонентов (см. Рисунок 3) элемент TPageProducer и установите его в WebModule (см. Рисунок 4). TPageProducer являются очень мощными компонентами, обеспечивающими связь между запросами от клиентского браузера, обработкой, выполняемой Вашим приложением, и динамически генерируемым контентом, которое приложение посылает в ответ на запрос клиента. Для email-формы, установите свойство HTMLDoc на требуемый HTML с помощью Object InspectorTM (см. Рисунок 5). Используемый HTML создается отдельно и устанавливается как свойство HTMLDoc. Kylix поддерживает разделение между уровнем доступа к данным, уровнем приложения и уровнем представления, что облегчает повторное использование кода и ускоряет процесс разработки. Вы можете устанавливать HTMLDoc, как и все остальные признаки, во время работы приложения. Обратите внимание, что, при использовании Object Inspector, признак PageProducer Name изменился на ‘EmailForm’ (см. Рисунок 6).
Рисунок 3. Закладка Internet в наборе компонентов.
Рисунок 4. WebModule с PageProducer.
<html>
<body bgcolor="#CCCC99">
<form method="post" action="/cgi-bin/emailform"><br>
E-mail address<br>
<input type="text" name="address" size="50"><br> Message<br>
<input type="text" name="message" size="50"><br> <br>
<input type="submit" name="Submit" value="Send e- mail">
</form>
</body>
</html>
Рисунок 5. HTML для простой email-формы.
Рисунок 6. Object Inspector.
Теперь выберите из закладки Internet в палитре компонентов (см. Рисунок 3) элемент TPageProducer и установите его в WebModule (см. Рисунок 4). TPageProducer являются очень мощными компонентами, обеспечивающими связь между запросами от клиентского браузера, обработкой, выполняемой Вашим приложением, и динамически генерируемым контентом, которое приложение посылает в ответ на запрос клиента. Для email-формы, установите свойство HTMLDoc на требуемый HTML с помощью Object InspectorTM (см. Рисунок 5). Используемый HTML создается отдельно и устанавливается как свойство HTMLDoc. Kylix поддерживает разделение между уровнем доступа к данным, уровнем приложения и уровнем представления, что облегчает повторное использование кода и ускоряет процесс разработки. Вы можете устанавливать HTMLDoc, как и все остальные признаки, во время работы приложения. Обратите внимание, что, при использовании Object Inspector, признак PageProducer Name изменился на ‘EmailForm’ (см. Рисунок 6).
Рисунок 7. Список действий WebModule с присвоенным действием по умолчанию.
Каждое приложение WebBroker поддерживает список ‘действий’. Эти ‘действия’ выполняются, когда HTML-запросы соответствуют свойствам MethodType и PathInfo какого-либо из перечисленных действий. Если ни одно запрошенное действие не соответствует действиям, сконфигурированным в Вашем приложении, то может назначаться действие по умолчанию (см. Рисунок 7). Назначение действия по умолчанию – это простейший способ удостовериться в том, что Ваше web-серверное приложение всегда имеет возможность послать какой-то понятный ответ пользователю, не создавая впечатления недоступности сайта.
Это может быть достигнуто следующим образом. Выберите WebModule; в Object Inspector отобразятся его свойства. Затем щелкните мышью по кнопке Actions; откроется Action Editor. Щелкнув по значку New Action в Action Editor, добавьте действие в WebModule и установите его свойство Default на ‘True’ с помощью Object Inspector. После этого, установите его свойство PathInfo на ‘/EMailForm’, а свойство Producer на ‘EmailForm’ PageProducer (см. Рисунок 7). Теперь, данное web-приложение будет по умолчанию возвращать email-форму клиенту браузера в случаях, когда целевой URL установлен как ‘EMailForm’.
Теперь следует добавить другое Action (действие) для обработки запроса ‘Send e-mail’ при нажатии кнопки на HTML-форме (см. Рисунок 8). Обратите внимание, что действие выполняется, когда установка mtPost в свойстве MethodType соответствует методу HTML-формы email-сообщения.
Рисунок 8. Список действий WebModule с добавленным действием mtPost.
В WebModule добавляется компонент TIdSMTP (см. Рисунок 9). Это один из наиболее мощных Internet-компонентов набора Indy, включенного в Kylix. Данный компонент может использоваться для посылки email-сообщения посредством SMTP на почтовый сервер, в нашем случае, на локальный sendmail MTA-сервер. Все это можно записать одной строкой кода.
Рисунок 9. WebModule с добавленным компнентом TIdSMTP из набора Indy.
Обработчику событий OnAction для выполнения действия по отправке email-сообщения требуется определенная информация. Чтобы отправить email-сообщение с помощью компонента TIdSMTP, он должен прочесть значения адреса и сообщения из формы, посланной в HTTP-запросе (см. Рисунок 10).
procedure
TWebModule1.WebModule1Actions2Action(Sender: TObject; Request:
TWebRequest;
Response: TWebResponse; var Handled: Boolean); begin try IdSMTP1.QuickSend
( 'localhost', 'subject', Request.ContentFields.Values['address'],
'anonymous@web.site',
Request.ContentFields.Values['message'] ); Response.Content
:= 'Successfully
sent e-mail'; except On E:Exception do Response.Content := 'Error sending e-mail<br>'
+ E.Message; end; end;
Рисунок 10. Метод OnAction для отправки e-mail.
Это полный код приложения. Чтобы приложение работало с web-сервером Apache, необходимо скомпилировать проект и скопировать полученный исполняемый файл в каталог /cgi-bin web-сервера Apache. Вы можете выбрать элемент Projects | Options… из основного меню, затем выбрать закладку Directories и установить Output path, ведущий к вашему каталогу /cgi-bin. Вся информация, связанная с конфигурацией web-сервера Apache находится в файле httpd.conf (конфигурация демона http). В этот файл нужно ввести некоторые дополнительные данные (см. Рисунок 11). Обратите внимание, что в Вашем файле httpd.conf уже может находиться запись Directory для /cgi-bin. В этом случае, нет необходимости в ее повторном вводе; просто проверьте, чтобы установки совпадали с теми, которые показаны на рисунке 11. Помните также, что в зависимости от используемой версии Linux путь к Вашему каталогу /cgi-bin может быть другим.
<Directory /usr/local/apache/cgi-bin> AllowOverride None Options ExecCGI
Order allow,deny Allow from all </Directory>
SetEnv LD_LIBRARY_PATH /opt/kylix/bin SetEnv LANG en_US
Рисунок 11. Записи в httpd.conf, необходимые для выполнения Kylix CGI-web-приложения на сервере Apache.
Так как для выполнения Kylix CGI-web-приложения на web-сервере Apache используются файлы Kylix bin.so (разделяемый объект), необходимо установить переменные окружения LD_LIBRARY_PATH и LANG. Команда SetEnv устанавливает переменную окружения, которую Apache передает во время выполнения CGI-приложению.
Владельца, группу и полномочия для файлов Kylix .so (разделяемый объект) и исполняемого файла CGI-web-приложения следует установить в соответствии с требованиями Apache. Для Apache обычно устанавливается тот пользователь и группа, которые Apache использует для всех web-запросов. Команды User и Group Вы можете найти в своем файле httpd.conf. Таким образом, любое лицо, подсоединившееся к Вашему web-серверу, оперативно регистрируется на нем как пользователь. Для того, чтобы такой пользователь мог использовать Kylix CGI-web-приложение, оно должно быть разрешено для доступа и исполнения пользователем Apache. Для обеспечения максимальной безопасности сервера, пользователь Apache должен иметь минимальные права.
Например, если Ваш пользователь Apache установлен как ‘apache’ в группе ‘apache’, и Вы создаете Kylix CGI-wweb-приложение с именем ‘emailform’, то для того, чтобы Ваше web-приложение стало доступным, возможно, потребуется ввести команды, показанные на рисунке 12. Имейте в виду, что для этого Вам, возможно, потребуется зарегистрироваться как Администратору.
cd <your cgi-bin directory> chown apache emailform chgrp apache emailform chmod 755 emailform
Рисунок 12. Установка владельца и группы для приложения CGI 'emailform', чтобы оно могло выполняться на Apache.
Все вышесказанное действительно и для разделяемых объектов в Kylix /bin-каталоге: возможно, потребуется изменить владельца, группу и привилегии. Для ‘реального’ web-сайта, мы рекомендуем скопировать требуемые дистрибутивы в Kylix /bin-каталоге из среды разработки в реальную среду. Затем Вы можете установить владельца, группу и привилегии, а также установить LD_LIBRARY_PATH к этому каталогу в соответствии с требованиями к безопасности своего web-сервера Apache.
На Рисунках 13 и 14 показано, как web-приложение выполняется на броузере, в данном случае, на KDE Konqueror. Учтите, что здесь может использоваться любой другой броузер.
Рисунок 13. Выполнение web-приложения 'emailform' в браузере: перед отправкой email-сообщения.
Рисунок 14. Выполнение web-приложения 'emailform' в браузере: после отправки email-сообщения.
Попытайтесь сами повторить всю описанную процедуру. Вы убедитесь в ее высокой функциональности и увидите, что нет ничего проще и быстрее, чем создание собственных CGI-web-приложений для Apache на платформе Linux с помощью Kylix.
Использование архитектуры NetCLXTM
NetCLX поддерживает кросс-платформенную архитектуру web-серверных Internet-приложений, которая соответствует стандартам HTTP. NetCLX-архитектура является серверо-независмой, благодаря извлечению и инкапсуляции этих HTTP-стандартов в структуру стандартных классов. Kylix и NetCLX делают возможной поддержку типичных для Apache DSO- (Динамические разделяемые объекты) и CGI -приложений.
Kylix NetCLX-приложения будут совместимы по исходному коду с Delphi 6, которая может компилировать расширения для ISAPI, NSAPI и win-CGI для других web-серверов. Это позволит разработчикам создать единый базовый исходный код для скомпилированных в различных средах разработки, предназначенных для самых разных рынков.
Важно хорошо знать значимые классы объектов, составляющие NetCLX-архитектуру. Эта архитектура поддерживает структуру Ваших web-приложений, позволяя Вам сосредочиться на ‘бизнес-контенте’, а не на технических деталях и сложностях приложения, которое выполняется на web-сервере.
Класс TWebDispatcher
TWebDispatcher является ядром любого web-приложения; это класс, который включается в web-сервер. В каждое приложение можно добавлять только по одному web-диспетчеру. Он предназначен для приема HTTP-запросов и передачи их в соответствующие методы ‘действий’ обработчиков событий; после этого, web-диспетчер компонует контент и возвращает его в виде ответа. Затем TWebDispatcher отравляет ответ клиенту. Действия хранятся в виде набора TwebActionItem. На рисунке 15 показаны наиболее значимые свойства TWebDispatcher.
Property Actions: TWebActionItems; Property Request: TWebRequest; Property Response: TWebResponse;
Рисунок 15. Значимые признаки TWebDispatcher.
WebModule
WebModule инкапсулирует, создает и управляет модулем приложения TWebDispatcher, поддерживая через Object Inspector интерфейс на время разработки для TWebActionItem и событий уровня приложения (см. Рисунок 16). Кроме того, Вы можете установить в WebModule любые не-визуальные компоненты, такие как TIdSMTP-компонент, использованный в первом примере приложения.
Property AfterDispatch; Property BeforeDispatch; Property OnCreate; Property OnDestroy; Property OnException;
Рисунок 16. Обработчики событий в WebModule.
Класс TwebActionItem
TwebActionItem используется для ответа на определенный тип HTTP-запроса, определенный в пути URL и в методе HTTP-запроса. TWebDispatcher выбирает для HTTP-запроса соответствующее действие или действия, сравнивая путь URL и тип метода со свойствами PathInfo и MethodType. Используя свойство Producer, Вы можете присоединить любой генератор контента (producer) в TwebActionItem. Генератор формирует HTTP-ответ для действия; в противном случае, сам разработчик может закодировать метод обработчика событий OnAction. На рисунке 17 показаны наиболее значимые признаки TWebActionItem.
Property Default: Boolean; Property Enabled: Boolean; Property
MethodType:
TMethodType; Property PathInfo: String; Property Producer: TCustomContentProducer;
Property OnAction;
Рисунок 17. Значимые признаки и события класса TWebActionItem.
HTTP-запрос и ответ объединяются в пару и передаются генератору контента или обработчику событий OnAction в виде объектов TWebRequest и TWebResponse. На рисунке 18 приведен заголовок для метода обработчика событий OnAction.
procedure
TWebModule1.WebModule1Actions1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
Рисунок 18. Заголовок метода обработчика событий OnAction в TWebActionItem.
Класс TWebRequest
TWebRequest является базовым классом для всех объектов, представляющих клиентские запросы, которые передаются в web-серверное приложение. TWebDispatcher создает TwebRequests для сбора клиентских запросов.
Он полностью собирает все возможные запросы, которые могут придти на web-сервер, включая Cookie, значения полей и кодовые страницы, значения запросов, тип метода, дату истечения срока действия, типы носителей клиента, кэширование запросов, версию протокола, версию контента, URL и т.д.
Класс TWebResponse
Используйте потомка TWebResponse для задания ответа на HTTP-запрос. TWebDispatcher создает TWebResponse для объекта TWebRequest HTTP-запроса. Полученная пара, TWebRequest – TWebResponse, передается в соответствующее действие, в результате чего формулируется контент ответа.
Как и в случае с TWebRequest, TWebResponse полностью собирает все возможные ответы, включая такие, как типы MIME, Cookie, HTTP-контент, статус ответа, дата истечения срока действия контента и т.д. Благодаря наличию классов TWebRequest и TwebRespone, разработчик может сфокусировать свое внимание на бизнес-проблемах, а не на технических сложностях API web-сервера или http.
Класс TCustomContentProducer
TCustomContentProducer является базовым классом для всех объектов, создающих контент, который затем посылается клиенту в ответе на HTTP-запросы. Контент может относиться к различным типам: HTML-строка, XML, WML или MIME.
Ниже приведено описание некоторых потомков класса TCustomContentProducer:
Компонент |
Описание |
TpageProducer |
Простой генератор контента HTML-шаблонов |
TdataSetTableProducer |
Генерирует HTML-таблицу, отображающую записи в наборе данных |
TdataSetPageProducer |
Распознающий данные генератор страниц, который может использовать набор данных для заполнения ‘прозрачных’ HTML-тегов |
TSQLQueryTableProducer |
Генерирует HTML-таблицу для записей параметризованного SQL-запроса. Запрос получает параметры от HTTP-запроса. |
Генераторы контента распознают специальные теги в соответствующем HTML, которые выглядят как <#tag>. Контент запрашивается у генератора контента; и когда он встречает <#tag>, запускается событие OnHTMLTag, которое замещает тег контентом. Например, возьмем TPageProducer, свойство HTMLDoc которого установлен на HTML (как на рисунке 19).
<html> <body><#date format=dd.mmm.yyyy> </body> </html>
Рисунок 19. Прозрачный HTML #tag.
Использование тегов в HTML-контенте гарантирует хранение реализаций бизнес-правил и кода доступа к данным отдельно от кода представления. Это очень важно для разделения задач разработки в группе разработчиков, для тестирования элементов, скорости выдачи решения и долговечности самого решения.
Если запрашивается контент данного TPageProducer, мы хотим заменить тег <#date> на строку, представляющую текущую дату и время в заданном формате. Для этого потребуется обработчик события OnHTMLTag (см. Рисунок 20).
procedure TWebModule1.EmailFormHTMLTag(Sender: TObject; Tag:
Ttag; Const TagString:
String; TagParams: Tstrings; var ReplaceText: String); begin if ( Tag = tgCustom
)
and ( TagString = 'date' ) then ReplaceText := FormatDateTime( TagParams.Values['format'],
Now ); end;
Рисунок 20. Метод обработчика события OnHTMLTag.
Пример создания CGI-приложения web-сервера Apache с помощью dbExpressTM
Одной из наиболее значимых характеристик Kylix является то, что он облегчает доступ к данным с коммерческих серверов баз данных. Когда это свойство используется в сочетании с NetCLX, организации получают ни с чем не сравнимые преимущества как в отношении производительности труда разработчиков, так и в отношении затрат на интеграцию Linux в уже существующие системы. Проиллюстрируем это на примере, создав простое CGI web-приложение, которое сможет осуществлять поиск заданных в запросе служащих из базы данных InterBase примера employee.gdb. Пользователи получат первичную HTML-форму, куда они могут внести имя служащего, которого хотят запросить в базе данных. Получив запрос, web-приложение откроет соединение с InterBase и выполнит SQL-запрос. Ответ на этот запрос вернется пользователю в виде HTML-таблицы, содержащей список служащих с запрошенным именем.
Для создания нового CGI-web-серверного приложения, выберите элемент File | New из основного меню, а затем выберите значок Web Server Application. Запустится мастер WebBroker Application. Затем выберите ‘CGI Stand-alone executable’ и нажмите OK. Когда отобразится WebModule, добавьте в него следующие компоненты:
Компонент |
Закладка Component Palette |
TpageProducer TDataSetTableProducer |
Internet |
TSQLConnection TSQLQuery |
DbExpress |
Теперь WebModule будет выглядеть, как показано на рисунке 21.
Рисунок 21.WebModule с невизуальными компнентами TPageProducer, TSQLConnection, TSQLQuery и TDataSetTableProducer.
PageProducer используется для передачи формы запроса о служащем в HTML-страницу по умолчанию. На рисунке 22 показана установка свойства HTMLDoc на HTML.
<html>
<body bgcolor="#CCCC99">
<form method="post" action="/cgi-bin/qryemp"> <br> Enter employee
name<br>
<input type="text" name="empname" size="50"><br>
<br> <input type="submit" name="Submit" value="Query"> </form>
</body> </html>
Рисунок 22. HTML-форма генератора страниц по умолчанию.
В свойство списка действий WebModule добавляются два TwebActionItem (см Рисунок 23). Один используется как действие по умолчанию, поэтому его свойство Default установлено на True, а свойство Producer на PageProducer с HTML по умолчанию. Второе действие выполняется, когда пользователь отправляет запрос о служащем обратно из формы по умолчанию.
Рисунок 23. Список действий в WebModule.
Чтобы использовать базу данных, следует установить соответствующее соединение dbExpress. dbExpress поддерживает свойство доступа к данным, которое позволяет разработчикам без труда интегрировать корпоративную информацию в приложения в Kylix. Для установки соединения используйте редактор dbExpress Connections (см. Рисунок 24). Чтобы открыть диалоговое окно щелкните правой кнопкой мыши по компоненту SQLConnections в WebModule. В нашем примере, в результате этого добавилось новое соединение InterBase с именем ‘IBEmployee’. После того, как соединение установлено, его можно проверить с помощью кнопки ‘check test connection’ (проверить тестовое соединение).
Рисунок 24. Редактор dbExpress Connections.
Теперь переходим к обработчику событий OnAction для выполнения действия по отправке почты. Он используется для открытия соединения dbExpress, выполнения SQL-запроса и формирования контента ответа с помощью DataSetTableProducer (см. Рисунок 25). Для того, чтобы вы могли увидеть все логические соединения, все соединения были установлены в исходном коде метода. Это легко можно сделать во время проектирования с помощью Object Inspector.
procedure
TWebModule1.WebModule1Actions1Action
(Sender: Tobject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
begin
{open database connection}
SQLConnection1.LoginPrompt := False;
SQLConnection1.ConnectionName := 'IBEmployee'; SQLConnection1.Open;
{connect query object to database}
SQLQuery1.SQLConnection := SQLConnection1;
{run query against database}
SQLQuery1.SQL.Text :=
'select emp_no, first_name, last_name from employee '+
'where first_name like ' + '"'
+ Request.ContentFields.Values[ 'empname' ] + '"';
SQLQuery1.Open;
{connect producer to query}
DataSetTableProducer1.DataSet := SQLQuery1;
{set response content to producer}
Response.Content := DataSetTableProducer1.Content;
{close query and database connection}
SQLQuery1.Close; SQLConnection1.Close;
end;
Рисунок 25. Обработчик событий OnAction, открывающий DB-соединение, запрашивающий и формирующий контент.
Так как создание кода для данного предложение теперь завершено, необходимо скомпилировать и перенести полученный исполняемый файл в cgi-bin-каталог сервера Apache.
Перед компиляцией вы можете выбрать Projects | Options из основного меню, затем выбрать закладку Directories и установить Output path к своему /cgi-bin-каталогу. Кроме того, необходимо добавить соответствующие записи (как было описано в первом примере приложения) в файл httpd.conf (конфигурация демона http).
На рисунках 26 и 27 показано выполнение web-приложения в браузере, в данном случае KDE Konqueror. Хотим отметить, что здесь можно использовать любой броузер.
Рисунок 26. Запрос на ввод имени служащего.
Рисунок 27. Результаты запроса отображаются в HTML-таблице.
Попытайтесь проделать описанную выше процедуру сами, и вы увидите, как легко и быстро можно создавать в Kylix web-приложение со ссылками на данные для Apache.
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Обсудить на форуме
Inprise/Borland
Отправить
ссылку на страницу по e-mail
Interface Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши
замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 18.06.01 |