Можно ли сдавать один и тот же тест несколько раз? |
Серверные приложения
Создание приложений, выполняемых на WEB-сервере, в среде проектирования DELPHI
Среда проектирования Delphi также позволяет создавать CGI и ISAPI приложения.
Создание CGI-приложения
Если WEB-броузер посылает в качестве запроса URL-адрес CGI-приложения, то web-сервер запускает это приложение и передает ему параметры запроса через стандартный ввод. Сформированная в результате выполнения CGI-приложения HTML-страница возвращается WEB-серверу через стандартный вывод.
Для того, чтобы создать CGI-приложение, запускаемое на сервере, следует создать проект Web Server Application и в диалоге New Web Server Application (рис. 28.3) выбрать тип серверного приложения (например, CGI Stand-alone executable).
В результате будет создан проект, содержащий главный файл приложения и модуль Unit1:
{Главный файл приложения} program Project1; {$APPTYPE CONSOLE} uses WebBroker, CGIApp, Unit1 in 'Unit1.pas' {WebModule1: TWebModule}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TWebModule1, WebModule1); Application.Run; end. {Модуль 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-страницу, следует создать объект типа TWebActionItem (например, WebActionItem1 ), а далее создать для данного объекта обработчик события действия OnAction.
При этом автоматически будет сформирован следующий код:
procedure TWebModule1.WebModule1WebActionItem1Action( Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin end;
Код HTML-страницы записывается в свойство Content объекта Response.
Например:
//1. Response.Content:='<I>Результат выполнения </I> '+ <P> <B> CGI-приложения </B></P>; // 2. var aPage : TStringList; i: integer; begin aPage:= TStringList.Create; aPage.Add('Method = ' +Request.Method + '<BR>'); aPage.Add('URL = ' + Request.URL+ '<BR>'); aPage.Add('User Agent = ' + Request.UserAgent+ '<BR>'); aPage.Add('Remote Address = ' + Request.RemoteAddr+ '<BR>'); aPage.Add('Remote Host = ' + request.RemoteHost+ '<BR>'); Response.Content := aPage.Text; aPage.Free;
После размещения созданного CGI-приложения в каталог WEB-сервера, предназначенный для исполняемых файлов, web -браузер может формировать запрос, указывая URL-адрес данного CGI-приложения.
Разбор параметров
Для доступа к значению формы из GET-запроса используется метод QueryFields объекта типа TWebRequest.
Например:
var1:=Request.QueryFields.Values["Имя_поля"]; var1:=Request.QueryFields.ValueFromIndex[0];
Для доступа к значению формы из POST-запроса используется метод ContentFields объекта типа TWebRequest.
Например:
var1:=Request.ContentFields.Values["Имя_поля"]; var1:=Request.ContentFields.ValueFromIndex [0]
Для доступа к параметрам самого запроса используется метод GetFieldByName:
Например:
Request.GetFieldByName('URL'); Request.GetFieldByName('METOD'); // Эквивалентно // выполнению Request.Metod;
Применение Cookies
Cookies - это данные, сохраняемые на ПК клиента (web-браузера). Пользователь имеет возможность запретить сохранять Cookies на своем ПК. Если запись Cookies разрешена, то они записываются при каждом получении ответа от web -сервера и передаются обратно с каждым следующим HTTP-запросом.
Для задания Cookies следует в обработчике события действия ввести следующий код:
with Response.Cookies.Add do Name:='Cook1''; // Имя данных Value:='ValueCook1''; // Значение end;
Для запроса Cookies следует в обработчике события действия ввести следующий код:
s1:=Request.CookieFields.ValueFromIndex[0]; // Request.CookieFields.Count - число полей в Cookies