Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3142 / 371 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 14:

Создание серверных приложений

< Лекция 13 || Лекция 14: 1234567

Реализация серверных приложений в среде DELPHI

Среда Delphi позволяет создавать приложения, выполняемые на web-сервере, с целью формирования HTML-страницы, публикующей данные их базы данных. Это могут быть приложения следующих типов:

  • ISAPI/NSAPI
  • CGI
  • WIN-CGI.

web-браузер по указанному URL-адресу запрашивает данные от WEB-сервера. При выполнении запроса устанавливается TCP/IP соединение с сервером, и данные передаются в формате HTML. После завершения передачи данных TCP/IP соединение разрывается.

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

Создание серверного приложения

web-браузер посылает в качестве запроса URL-адрес серверного приложения, а Web-сервер запускает это приложение и передает ему параметры запроса. Сформированная в результате выполнения серверного приложения HTML-страница возвращается WEB-браузеру web-сервером.

Для того, чтобы создать серверное приложение (например CGI), следует:

  1. Создать новый проект (команда меню File|New|Other, вкладка New, пиктограмма Web Server Application).
  2. В диалоге 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-страницу, следует:

  1. Для объекта TWebModule1 выполнить двойной щелчок мышью на свойстве Action.
  2. В диалоге Editing WebModule1.Actions создать новый элемент (кнопка Add New ).
  3. Создать для объекта WebActionItem1 обработчик события OnAction. При этом автоматически будет сформирован следующий код:
    procedure TWebModule1.WebModule1WebActionItem1Action(
               Sender: TObject;
               Request: TWebRequest;    // Объект запроса - 
                 // позволяет получать данные о выполняемом запросе
                Response: TWebResponse;  // Объект ответа - 
                 // используется для формирования ответа 
                  // (HTML-страницы
                  var Handled: Boolean);
    begin
    
    end;
  4. Сформировать в созданном обработчике события код, формирующий текст 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 должна будет вызывать серверное приложение, которое будет использовать получаемые из запроса данные для обновления таблицы базы данных.

< Лекция 13 || Лекция 14: 1234567