Создание серверных приложений
Реализация серверных приложений в среде DELPHI
Среда Delphi позволяет создавать приложения, выполняемые на web-сервере, с целью формирования HTML-страницы, публикующей данные их базы данных. Это могут быть приложения следующих типов:
web-браузер по указанному URL-адресу запрашивает данные от WEB-сервера. При выполнении запроса устанавливается TCP/IP соединение с сервером, и данные передаются в формате HTML. После завершения передачи данных TCP/IP соединение разрывается.
При этом передаваемая HTML-страница может быть как HTML-файлом, так и результатом выполнения на web-сервере некоторого приложения.
Создание серверного приложения
web-браузер посылает в качестве запроса URL-адрес серверного приложения, а Web-сервер запускает это приложение и передает ему параметры запроса. Сформированная в результате выполнения серверного приложения HTML-страница возвращается WEB-браузеру web-сервером.
Для того, чтобы создать серверное приложение (например CGI), следует:
- Создать новый проект (команда меню File|New|Other, вкладка New, пиктограмма Web Server Application).
- В диалоге New Web Server Application указать тип создаваемого проекта (например CGI Stand-alone executable).
В результате будет создан проект, содержащий главный файл приложения и модуль Unit1, имеющий следующий код:
{Модуль Unit1.pas} unit Unit1; interface uses SysUtils, Classes, HTTPApp; type TWebModule1 = class(TWebModule) private { Private declarations } public { Public declarations } end; var WebModule1: TWebModule1; implementation {$R *.DFM} end.
Для того чтобы добавить код, формирующий HTML-страницу, следует:
- Для объекта TWebModule1 выполнить двойной щелчок мышью на свойстве Action.
- В диалоге Editing WebModule1.Actions создать новый элемент (кнопка Add New ).
- Создать для объекта WebActionItem1 обработчик события OnAction. При этом автоматически будет сформирован следующий код:
procedure TWebModule1.WebModule1WebActionItem1Action( Sender: TObject; Request: TWebRequest; // Объект запроса - // позволяет получать данные о выполняемом запросе Response: TWebResponse; // Объект ответа - // используется для формирования ответа // (HTML-страницы var Handled: Boolean); begin end;
-
Сформировать в созданном обработчике события код, формирующий текст HTML-страницы. Этот текст должен быть записан в свойство Content объекта Response.
Свойству Content можно присваивать значение, оформленное как массив строк. Это может быть реализовано следующимспособом:
-
посредством конкатенаций нескольких строковых значений;
Например:
Response.Content:='<I><База данных MyDB </I> '+ <P> <B> Таблица TBL1 </B></P>;
-
с применением переменной типа TStringList, реализующей работу с массивом строк. В этом случае следует объявить переменную данного типа, создать ее, а затем, используя метод add, добавить в нее все строки формируемой HTML-страницы.
Например:
var aPage : TStringList; i: integer; begin aPage:= TStringList.Create; aPage.Add(' База данных MyDB '+ '<BR>'); aPage.Add(Таблица TBL1 ' + '<BR>'); aPage.Add('f1 = ' + DataSource1.DataSet.FieldByName('F1').AsString+ '<BR>'); // Последовательно записываем в созданный массив строк // все значения из открытого набора данных Response.Content := aPage.Text; aPage.Free;
-
После размещения созданного серверного приложения в каталог web-сервера, предназначенный для исполняемых файлов, web-браузер может формировать запрос, указывая URL-адрес данного CGI-приложения.
Например: http://localhost/webpub/ProjectDB.exe.
В том случае, если необходимо реализовать не только публикацию данных, но и предоставить средства их редактирования, отображение данных следует выполнять внутри формы в компонентах типа "поле ввода". Кнопка типа submit должна будет вызывать серверное приложение, которое будет использовать получаемые из запроса данные для обновления таблицы базы данных.