Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 16.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

4. Динамическая публикация

Для Web-приложений, использующих БД, могут применяться технологии ак­тивных серверных страниц, модули расширения на основе Java или интерфейсов программирования CGI, ISAPI (NSAPI), WinCGI. При этом применение интер­фейсов программирования является предпочтительным по сравнению с другими технологиями при решении нестандартных задач, например, при обеспечении взаимодействия Web-сервера с сервером, осуществляющим прием платежей для обслуживания интернет-магазина. Кроме того, модули расширения сервера, созданные на основе интерфейсов программирования, позволяют реализовать более быструю обработку запросов пользователей Web-приложения к БД.

В этом разделе рассматриваются средства Delphi, предназначенные для создания модулей расширения на основе интерфейсов программирования CGI и ISAPI.

4.1. Создание модуля cgi

Познакомимся с особенностями разработки модуля CGI средствами Delphi на примере обычного консольного приложения.

Создадим модуль CGI с именем cgifirst.exe, который будет осуществлять генера­цию HTML-страниц на основе информации из базы данных animals.dbf, входя­щей в демонстрационный пакет программ Delphi. Для запуска этого модуля нужно выполнить следующие действия:

  • установить Web-сервер (Personal WS или MS IIS);

  • задать в параметрах проекта путь для выходного каталога (OutPut), где размещаются сценарии (для Personal WS — это каталог Webshare\Scripts, а для MS IIS - Inetpub\Scripts);

  • создать в среде Delphi новое консольное приложение.

Загрузка модуля cgifirst.exe производится с помощью HTML-страницы, содер­жащей ссылку:

<р> <а href="http://igin/scripts/cgifirst.exe"> Пример CGI — модуля </а> </р>

Исходный текст программы (консольного приложения) CgiFirst приводится в приложении 3 ниже.

program CgiFirst; {$APPTYPE CONSOLE} uses

Windows, SysUtils, DBTables, DB;

var

// массив для хранения URL CGI-модуля

ScriptName: array [0..100] of Char;

// массив для хранения параметров строки запроса

PathName: array [0..30] of Char;

// массив для хранения типа метода

MethodName: array [0..30] of Char;

// флаг, используемый для возвращения на главную страницу

k:integer;

// внутренняя переменная

II:integer;

Tablel: TTable;

// Процедура вывода заголовка страницы

procedure Header; forward;

// Процедура вывода окончания страницы

procedure Footer; forward;

// Процедура вывода списка ссылок

procedure ShowList; forward;

// Процедура вывода таблицы данных

procedure ShowTable; forward;

// Процедура вывода результатов запроса

procedure Showquery(it:integer); forward;

// Вывод заголовка страницы

procedure Header;

begin

writeln('Content type: text/html');

writeln;

writeln('<HTML> <HEAD>');

writeln('<TITLE> Cgi-приложение </TITLE>');

writeln('</HEAD> <BODY>');

writeln('<H1> Публикация БД CGI-приложением </Н1>');

writeln('<HR>');

end;

// Вывод окончания страницы .

procedure Footer;

begin

writeln('<HR>');

writeln('<Center> <b> БД из файла '+

Tablel.TableName + '</b> </H2> </Center>'); writeln('</BODY>'); writeln('</HTML>'); end;

// Вывод списка ссылок

procedure ShowList;