Создание Web-приложений в среде Delphi

Автор: Пользователь скрыл имя, 17 Мая 2012 в 12:00, реферат

Краткое описание

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

Файлы: 1 файл

Создание Web приложений в среде Delphi.doc

— 49.00 Кб (Скачать)

Создание Web-приложений в среде Delphi

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

    Время первопроходцев HTML в скором времени  закончится и вовсе, и их место  займут профессионалы-программисты. Именно программисты, ибо уже в большей  степени от их умения создать удобный  в использование сайт зависит  его успех. Кроме прочего, теперь сайты создают совсем уж как программные продукты: тем кто занят наполнением содержанием, уже может не опасаться запутаться в html, java, cgi и прочих ипостасях интернет-технологий - администрирование сайта становится таким же привычным и удобным, как работа с текстовыми процессорами. Пока, правда, ощущается явный недостаток законченных продуктов, на плечи которых можно было бы возложить все функции по поддержанию сайта в актуальном состоянии, оставив себе лишь вопросы по наполнению его содержанием.

    Пока  же тяжкое бремя по созданию данных систем, на основе которых будет функционировать сайт, ложится на плечи программистов, только вот-вот успевших изумится возможностями языка Perl или Java. И многие из них, сказать без преувеличения, вышли, словно из гоголевской "Шинели", из Delphi. Действительно, данная среда разработчика, предоставляющая удобный интерфейс для визуального программирования и широкие возможности Object Pascal, столь мила сердцу российских программистов.

    Но, похоже, что времена меняются, и Delphi из среды создания обычных настольных приложений, может сгодиться и в другом плане: для написания прикладных web-программ. И действительно, что может быть лучше: уже знакомая среда разработки, вдоль и поперек изученный язык, да и достаточно широкий круг специалистов по программированию в Delphi - это ли не плюсы создания web-приложений на Delphi. Есть конечно и минусы: созданные программы вряд ли смогут удовлетворить тех, кто считает, что лучший web-сервер, это сервер не от Microsoft. Но что поделаешь - версия Delphi под Unix отложена пока до лучших времен. Зато посудите сами: перенос программ в будущем светлом будущем можно будет совершить с малой кровью.

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

Пример  из учебника

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

    Вообще, простейшее web-приложение на Delphi мало чем  отличается, а точнее ничем не отличается от создания программы для старой доброй DOS. Это - простейшее консольное приложение, запускаемое на стороне  сервера и взаимодействующие с пользователем (в случае необходимости) через броузер.

    Создайте  в Delphi новый проект - ту самую уже  давно забытую всем Console Application. Вы получите знакомый со школьной скамьи, текст обычной паскалевской программы:

    program primer;

    {$APPTYPE CONSOLE}

    uses SysUtils;

    begin

    // Insert user code here

    end.

    Далее еще проще. Организуем вывод кода HTML с помощью команды writeln.

    writeln ('CONTENT-TYPE: TEXT/HTML'); writeln; writeln ('<html>'); writeln ('<head>'); writeln ('<meta HTTP-EQUIV="Content-Type" Content="text-html; charset=windows-1251">'); writeln ('<title>Delphi the best facility for making web-publications!</title>'); writeln ('</head>'); writeln ('<body bgcolor="white">'); writeln ('Hello, world!'); writeln ('</body>'); writeln ('</html>');

    Обратите  внимание на строку CONTENT-TYPE: TEXT/HTML, которая  определяет описание последующего содержимого, а именно кода HTML. После CONTENT-TYPE: TEXT/HTML, необходимо вывести пустую строку иначе  броузер может выдать сообщение  об ошибке.

    Теперь, когда приложение закончено, осталось его скомпилировать и проверить. Для проверки работоспособности программы вам понадобиться веб-сервер. Можно особо не утруждаться, подойдет любой, даже стандартный домашний веб-сервер от Microsoft. Приложение надо будет разместить в папке публикаций сервера (обычно это - C:\Inetpub\ wwwroot) и запустить сам сервер. Теперь, если вы перейдете по адресу http://localhost/primer.exe в броузере, вы должны увидеть результат действия данной программы - строку Hello, world! Вот и всё, простейшее web-приложение на Delphi готово.

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

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

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

    program CgiDate;

    {$APPTYPE CONSOLE}

    uses SysUtils;

    begin

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

    writeln;

    writeln ('<HTML><HEAD>');

    writeln ('<TITLE>Cgidate</TITLE>');

    writeln ('</HEAD><BODY>>');

    writeln ('<H1>Пример передачи параметров</H1>');

    writeln ('<HR>');

    writeln ('<H4>

    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,'

    + '"<p> и время" hh:mm:ss AM/PM', Now))

    else

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

    end

    else

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

    writeln ('</BODY></HTML>');

    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('<HTML><HEAD>');

    writeln('<TITLE>CGI Variables</TITLE>');

    writeln('</HEAD><BODY>');

    writeln('<H1>CGI Variables</H1>');

    writeln('<HR><PRE>');

Информация о работе Создание Web-приложений в среде Delphi