|
Можно ли сдавать один и тот же тест несколько раз? |
Серверные приложения
Создание приложений, выполняемых на 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
