Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014-01 КНЯЗЕВА_Эл_бизнес / Электронный бизнес_Князева.doc
Скачиваний:
50
Добавлен:
20.02.2016
Размер:
1.24 Mб
Скачать
      1. КонсольноеCgi-приложение

Для вывода результатов выполнения сценария используются обычные процедуры вывода на консоль: в Object Pascal это write и writeln. Для создания простейшего приложения, которое будет выводить текстовую строку, необходимо выполнить следующие действия:

  1. Открыть Delphi и закрыть окна проекта, предлагаемые по умолчанию.

  2. Для удобства отладки серверных модулей рекомендуется установить путь для исполняемых exe-файлов – каталог cgi-bin сервера APACHE:

Projects Options  вкладка Directories/Conditionals в поле Output Directory указать путь C:\WebServers\home\localhost\cgi-bin.

  1. Выбрать в главном меню команду File  New  Other в депозитарии DELPHI на вкладке New выбрать пиктограмму Console ApplicationОК. В результате в проекте будет создан шаблон:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

begin

end.

  1. В шаблон консольного приложения ввести следующий текст:

begin

writeln('Content-Type:text/html'); //вывод поля заголовка Content-type

writeln; //пустая строка отделяет заголовок от тела ответа

writeln('<html>'); //формирование HTML-документа

writeln('Пример');

writeln('</html>');

end.

  1. Сохранить проект с именем Console.dpr, откомпилировать приложение и запустить в браузере, указав в адресной строке следующий путь: http://localhost/cgi-bin/Console.exe.

Примечание: для автоматического формирования исполняемого файла приложения с расширением *.cgi в файле проекта после заголовка программы следует добавить директиву компилятора {$E CGI}.

      1. Использование специальных средствDelphIдля разработкиweb-приложений

Использование специальных средств позволяет значительно упростить разработку web-приложений, особенно в тех случаях, когда приложение работает с базами данных.

КомпонентTWebModul

Компонент TWebModul, вид которого представлен на рисунке 4.1, аналогичен контейнеру TDataModul. В него можно помещать компоненты доступа к данным и специальные компоненты для формирования ответа сервера на запрос клиента.

Основное свойство компонента – Action, которое содержит список действий, являющихся обработчиками запросов, поступающих от клиента.

Каждый элемент этого списка имеет тип TWebActionItem и добавляется в окне Редактора действий - Action Editor, представленном в нижней части рисунка 4.1. Каждое действие характеризуется следующими основными свойствами:

  • Pathlnfo: String — указывает, при какой строке параметров будет выполняться данное действие (на рисунке 4.1 у действия WebActionItem1 свойство PathInfo имеет произвольно заданный идентификатор - /1)

Например, CGI-приложение запускается в браузере по адресу:

http://localhost/cgi-bin/chance.exe.

Если приложение выполняет несколько действий, то обратиться к конкретному действию можно следующим образом:

http://localhost/cgi-bin/chance.exe/1.

Последняя часть URL-адреса называется PathInfo. Таким образом, если идентификатор PathInfo действия совпадает со значением PathInfo URL-адреса, то выполняются операторы, записанные в обработчике этого действия.

Если в одном действии предусматривается несколько вариантов ответа или передаются дополнительные параметры, то они отделяются вопросительным знаком «?». Эта часть URL-адреса называется Query – запрос, например:

http://localhost/cgi-bin/chance.exe/1?Variant1;

http://localhost/cgi-bin/chance.exe/1?Variant2;

  • MethodType: TMethodType — указывает метод, используемый клиентом для передачи запроса (mtGet, mtPost, mtHead, mtPut, mtAny).

  • Default: Boolean — используется для задания обработчика по умолчанию. Если у действия это свойство установлено равным true, то это действие будет выполнено в первую очередь при открытии страницы.

  • Producer: TCustomContentProducer — указатель на специальный компонент, используемый для формирования ответа web-приложения. Такие компоненты будут рассмотрены подробнее ниже.

Каждое действие из списка Actions может обрабатывать всего одно событие — OnActions. Обработчик этого события и выполняет формирование ответа серверу на принятый запрос клиента.

Если в приложении, предусматривается диалог с пользователем, то в формировании действий участвуют еще три параметра:

  1. Request, который передает запрос клиента. Его основные свойства:

  • Content (ContentFields): String – строка параметров (список строк)4, переданная методом POST;

  • Query (QueryFields): String – строка параметров (список строк), переданная методом GET;

  1. Response используется для формирования ответа. Его основное свойство Content: String – содержимое ответа.

  1. Hаndled булева типа определяет, завершен ли ответ, или объект Response будет формироваться другими действиями.

Для создания CGI-приложения, использующего компонент TWebModul, необходимо выполнить следующие действия:

  1. Выбрать в главном меню команду File  New  Other в депозитарии DELPHI на вкладке New выбрать пиктограмму WebServer ApplicationОК.

  2. В открывшемся окне диалога с помощью переключателя выбрать тип приложения: CGI Stand-alone executable.

  3. Открыть окно Редактора действия любым из следующих способов:

  • командой Action Editor из контекстного меню компонента WebModul1;

  • щелчком на кнопке с многоточием в поле ввода свойства Action компонента WebModul1;

  • двойным щелчком внутри контейнера WebModul1.

  1. Добавить новое действие любым из следующих способов:

  • командой Add из контекстного меню Редактора действий;

  • кнопкой AddNew на панели инструментов Редактора действий;

  • нажать клавишу Insert.

  1. В Инспекторе объектов задать необходимые свойства действия:

  • PathInfo –произвольный идентификатор, например, /1. Это означает, что при запуске CGI-приложения для выполнения данного действия в URL-адресе будет указана одноименная часть PathInfo, например, http://localhost/cgi-bin/chance.exe/1.

  • Default в значении true;

  1. Создать обработчик события OnAction данного действия. Для этого в Инспекторе объектов перейти на вкладку Events и дважды щелкнуть в поле ввода этого события. В результате будет создан шаблон процедуры-обработчика события OnAction.

Пример выбора вариантов ответа:

  1. В модуль добавлены два действия. Первое действие (по умолчанию) c PathInfo= /1 задает вопрос пользователю и предлагает варианты ответов. Второе действие c PathInfo= /2 формирует ответ в зависимости от выбора пользователя.

  2. Обработчики события OnAction первого действия по умолчанию, когда клиенту задается вопрос:

begin

Response.Content:= ‘<h1> Сделайте свой выбор!</h1>’+

‘<A href= “/cgi-bin/chance.exe/2?Coffee”>Кофемолка</A> или’+

‘<A href= “/cgi-bin/chance.exe/2?Combine”>Кухонный комбайн</A>’;

Handled:=true;

end;

Этот код формирует документ HTML-страницу с вопросом для клиента. Варианты выбора выполнены в виде ссылок.

  1. Обработчик действия, которое формирует ответ пользователю.

begin

if Request.Query= ‘Coffee’ then

Response.Content:= ‘Вы сделали прекрасный выбор. Для этого товара предусмотрена скидка 10% <br><a href=“ /cgi-bin/chance.exe/1”>Назад</a>’

else

Response.Content:= ‘………другой вариант ответа…………………’;

Handled:=true;

end;

  1. Сохранить проект, откомпилировать приложение, разместить исполняемый файл в каталоге cgi-bin сервера и запустить в браузере.