Помощь в написании студенческих работ
Антистрессовый сервис

Передача параметров. 
Создание Web-приложений в среде Delphi

РефератПомощь в написанииУзнать стоимостьмоей работы

Для начала, естественно, нужно создать сам код HTML в котором бы присутствовала форма с полями ввода, кнопкой отправки и прочими необходимыми атрибутами. При этом form action должен содержать адрес программы, которая будет получать данные. Значение method может быть равно как GET, так и POST. На самом деле GET — это и есть передача параметров через url, добавляя их к адресной строке, так как POST… Читать ещё >

Передача параметров. Создание Web-приложений в среде Delphi (реферат, курсовая, диплом, контрольная)

программа листинг пользователь На самом деле нам бы вряд ли понадобилось Delphi, для создания подобных программ. Конечно, можно генерировать страницы исходя из различных условий, но вопрос в том, как данные условия передать программе. И здесь оказывается не всё так сложно, достаточно вспомнить передачу параметров приложению с помощью командной строки и поступить соответствующе. Хотя это, разумеется, хитрость. Это для приложения Delphi мы оперируем командной строкой, для пользователя же это адресная строка в броузере, то есть url.

Попробуем на примере. Необходимо создать приложение, которое выдает различную информацию (к примеру, время, дату или то и другое вместе) в зависимости от параметров, указанных в адресной строке броузера. Как известно, за данные в параметрах отвечают такие функции, как ParamCount и ParamStr. Их-то мы и будем использовать.

program CgiDate;

{$APPTYPE CONSOLE}.

uses SysUtils;

begin.

writeln ('CONTENT-TYPE: TEXT/HTML');

writeln;

writeln ('');

writeln ('Cgidate');

writeln ('>');

writeln ('.

Пример передачи параметров

');

writeln ('');

writeln ('.

.

if ParamCount >0 then.

begin.

if ParamStr (1) = 'date' then.

writeln (FormatDateTime ('" Сегодня «dddd, mmmm d, yyyy', Now)).

else if ParamStr (1) = 'time' then.

writeln (FormatDateTime ('" Время" hh: mm:ss AM/PM', Now)).

else if ParamStr (1) = 'both' then.

writeln (FormatDateTime ('" Сегодня «dddd, mmmm d, yyyy,'.

+ '" .

и время" hh: mm:ss AM/PM', Now)).

else.

writeln ('Ошибка! Неверный параметр: ' + ParamStr (1) + '.').

end.

else.

writeln ('Параметр отсутствует.');

writeln ('');

end.

Не правда ли просто? Теперь, если в адресной строке броузера вы наберете, например http://localhost/cgidate/exe?time, будет сгенерирована страница, отображающая текущее время, http://localhost/cgidate/exe?date — соответственно дата, а при передаче параметра both — текущая дата и время. В случае если никакой из параметров передан не был или он был ошибочен — возникнет сообщение об этом.

Данные адреса и параметры можно непосредственно указать в коде HTML и генерировать необходимые изменения на странице либо другие страницы переходя по соответствующим ссылкам.

Следует обратить внимание на то, как передавать данные через url. Знак вопроса отделяет параметр от адреса файла, с помощью знака равенства web-приложению передается значение данного параметра. Так как в адресной строке нельзя использовать пробел, он заменяется на шестнадцатеричный код в таблице ASCII, то есть %20.

Но на самом деле, если некие данные передаются от пользователя web-приложению, то обычно для этого используют формы, а не url (хотя одно другому не мешает). Попробуем и мы создать приложение, которое бы получало данные от пользователя, занесенные им в форму.

Для начала, естественно, нужно создать сам код HTML в котором бы присутствовала форма с полями ввода, кнопкой отправки и прочими необходимыми атрибутами. При этом form action должен содержать адрес программы, которая будет получать данные. Значение method может быть равно как GET, так и POST. На самом деле GET — это и есть передача параметров через url, добавляя их к адресной строке, так как POST передает их приложению посредством стандартного потока ввода. Какой из них лучше и удобней — решать вам, но чаще всего метод GET используется именно для генерации страниц (достаточно взглянуть на url который возникает при работе на поисковых серверах), тогда как второй для — передачи данных, отображать которые в адресной строке было бы весьма накладно.

Затем необходимо создать приложение, которое бы адекватно смогло воспринять все эти данные со стороны пользователя. В случае если данные передавались с помощью метода GET проблем не будет — можно действовать как в предыдущем примере. Если же приложение получает данные от пользователя с помощью POST, всё несколько иначе.

Необходимо будет считывать данные из переменной окружения, а для этого мы, естественно, должны знать данные переменные.

Нет в мире тайн. Особенно их мало у пользователя от web-приложения. И если мы не знаем о пользователе кое-что личное, все прочее броузеры с легкостью отдают web-серверу, нисколько не заботясь о приватности и желаниях того самого пользователя. Это, конечно, нехорошо для пользователя, но хорошо для разработчика web-приложения, поскольку для него знания — великая вещь.

Итак, данные от пользователя web-приложению можно передать через переменные окружения. Вот список наиболее часто употребляемых:

GATEWAY_INTERFACE.

Поддерживаемая версия CGI.

REQUEST_METHOD.

Метод запроса, может быть как GET так и POST.

HTTP_REFERER.

Адрес страницы (url), активирующей текущее приложение на web-сервере.

PATH_INFO.

Путь переданный приложению расположенный между именем приложения и строкой запроса.

QUERY_STRING.

Строка запроса, если метод — GET, добавляеться к url.

REMOTE_HOST.

Имя хоста удаленного пользователя.

REMOTE_USER.

Имя удаленного пользователя.

REMOTE_IDENT.

IP-адрес удаленного пользователя.

HTTP_USER_AGENT.

Имя и версия броузера удаленного пользователя.

С помощью данных переменных можно получить исчерпывающую информацию о пользователе и передаваемых данных для верного проектирования вашего web-приложения. Конечно, этого хватит в том случае, если вы не собираетесь подобно Большому Брату следить за каждым телодвижением пользователя.

Но вернемся к поставленной задаче — передаче данных приложению от пользователя через форму. Данные, которые передаются через QUERY_STRING в приложение с помощью метода POST, достаточно просто извлечь для использования.

Ниже листинг программы, выдающий список некоторых переменных окружения и их значения. Узнайте кое-что о своем браузере и web-сервере.

program CgiVars;

{$APPTYPE CONSOLE}.

uses.

Windows;

сonst.

VarList: array [1.17] of string [30] =.

('SERVER_NAME', 'SERVER_PROTOCOL',.

'SERVER_PORT', 'SERVER_SOFTWARE',.

'GATEWAY_INTERFACE', 'REQUEST_METHOD',.

'PATH_TRANSLATED', 'HTTP_REFERER',.

'SCRIPT_NAME', 'PATH_INFO',.

'QUERY_STRING', 'HTTP_ACCEPT',.

'REMOTE_HOST', 'REMOTE_USER',.

'REMOTE_ADDR', 'REMOTE_IDENT',.

'HTTP_USER_AGENT');

var.

I: Integer;

ReqVar: string;

VarValue: array [0.200] of Char;

begin.

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

writeln;

writeln ('');

writeln ('CGI Variables');

writeln ('');

writeln ('.

CGI Variables

');

writeln ('');

for I := Low (VarList) to High (VarList) do.

begin.

ReqVar := VarList[I];

if (GetEnvironmentVariable (PChar (ReqVar),.

VarValue, 200) > 0) then.

else.

VarValue := '';

writeln (VarList[I] + ' = ' + VarValue);

end;

writeln ('');

end.

Вышеприведенные способы создания приложений годны лишь в том случае, если вам необходимо быстрое, компактное и не слишком сложное web-приложение. Если же вам необходим, к примеру, доступ к базам данным, то подобный путь неприемлем.

Для создания полномасштабных приложений для интернета в Delphi существует специальный помощник — Web Server Application. С его помощью можно создать приложение генерируещее динамические web-страницы, основанные на CGI, NSAPI или ISAPI. Единственное накладываемое ограничение — непосредственно web-сервер должен работать на базе Windows.

Одним из главных преимуществ создания подобных приложений именно в среде Delphi является то, что вы продолжаете работать с визуальными компонентами — это значительно проще, чем создание приложений в других средах — возможность ошибки в больших проектах, где используется визуальное проектирование меньше, чем в тех, где всё описывается исключительно кодом. Кроме того, средства создания web-приложений позволяют импортировать уже существующие приложения в интернет-среду, что, согласитесь, немаловажно. Пока, конечно, Delphi не обладает большим набором компонентов для web-приложений, но, видимо, уже следующая версия этой среды обзаведется необходимыми. Но и сейчас Delphi можно считать достаточно удобным инструментом для создания приложений, взаимодействующих с интернетом.

Показать весь текст
Заполнить форму текущей работой