Литмир - Электронная Библиотека
A
A

print # выводим:

a({href=>"mailto:".param('email')}, # ссылку на E-mail

param('nick')), # и имя, а также

" пишет: ", p, param('comments'), p, # комментарий

hr,"\n"; # и горизонтальную черту

}

print end_html; # оформляем конец страницы

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

Язык программирования Perl - i_1801.png

Рис. 18.1.Результат выполнения CGI-программы

Отлично протестированные подпрограммы стандартной библиотеки CGI выполняют все действия по созданию правильно оформленных web-страниц. Они скрывают от программиста трудности и тонкости при преобразовании параметров и обработке данных форм. Web-страницы можно формировать программно без использования разметки на языке HTML. Библиотека CGI также имеет объектно-ориентированный интерфейс со всеми необходимыми классами и методами для работы с объектами HTTP-запросов в CGI-программах.

Дальнейшим развитием CGI стали серверные технологии, в которых в шаблон HTML-документа включаются исполняемые фрагменты, написанные на встроенном языке программирования - C#, Java, PHP, Perl, Visual Basic или специальных языках шаблонов. На Perl написано немало систем для работы с шаблонами (templating system): от модулей, использующих несложную подстановку, до изощренных платформ программирования (application framework) для web-сервера. Perl в подобных системах применяется для обработки шаблонов (например, HTML::Template, Text::Template, Template Toolkit) и динамической генерации на основе шаблонов. Во многих системах (например, Apache::ASP, AxKit, Embperl, Mason, Apache::XPP) Perl применяется как встроенный язык, используемый для программирования действий в шаблонах. Все эти системы можно загрузить с сайта CPAN и установить обычным образом. (Подробнее об установке модулей речь шла в лекции 13.) Для работы с этими системами под ОС MS Windows проще всего загрузить с сайта perl.apache.org дистрибутив Perl, в состав которого входит сервер Apache с mod_perl и многие из перечисленных библиотек. Каждая из систем реализует оригинальный подход и обладает интересными возможностями, но мы остановимся подробнее на той из них, которая реализует тот же подход, что и в других распространенных системах программирования на основе шаблонов: ASP, JSP и PHP.

Система разработки web-сайтов Apache::ASP предлагает кросс-платформенные средства, аналогичные используемым в системе программирования ActiveState PerlScript для web-сервера Microsoft IIS. В этом подходе сочетаются естественное представление HTML-документа и возможность использовать богатые возможности языка программирования. В шаблоне HTML-страницы между тегами <% и %> располагаются фрагменты программы на языке Perl, которые выполняются при обработке запроса на страницу. Результат выполнения этих фрагментов включается в результирующую страницу, которая отсылается клиенту. Если переписать пример с гостевой книгой, используя классы из состава Apache::ASP, то он будет выглядеть так:

&lt;html&gt;

&lt;head&gt; &lt;!-- шапка HTML-страницы --&gt;

&lt;meta http-equiv=&quot;content-type&quot;

content=&quot;text/html; charset=windows-1251&quot;&gt;

&lt;title&gt;Гостевая книга&lt;/title&gt;

&lt;/head&gt;

&lt;body&gt; &lt;!-- тело HTML-страницы --&gt;

&lt;h3&gt;Здесь Вы можете оставить свой отзыв&lt;/h3&gt;

&lt;form method=&quot;POST&quot;&gt; &lt;!-- начало HTML-формы --&gt;

&lt;br/&gt;Имя: &lt;!-- 1-е поле формы --&gt;

&lt;input name=&quot;nick&quot; type=&quot;text&quot; size=&quot;8&quot;

value=&quot;&lt;%=$Request-&gt;Form('nick')%&gt;&quot;/&gt;

&lt;br/&gt;Э-почта: &lt;!-- 2-е поле формы --&gt;

&lt;input name=&quot;email&quot; type=&quot;text&quot; size=&quot;32&quot;

value=&quot;&lt;%=$Request-&gt;Form('email')%&gt;&quot;/&gt;

&lt;br/&gt;Комментарий:&lt;br/&gt; &lt;!-- 3-е поле формы --&gt;

&lt;textarea name=&quot;comments&quot; rows=&quot;5&quot; cols=&quot;50&quot;&gt;

&lt;%=$Request-&gt;Form('comments')%&gt;

&lt;/textarea&gt;&lt;br/&gt;

&lt;input type=&quot;submit&quot; value=&quot;Отправить&quot;/&gt; &lt;!-- кнопка --&gt;

&lt;/form&gt; &lt;!-- конец HTML-формы --&gt;

&lt;hr/&gt;

&lt;% if($Request-&gt;Form('nick')) { %&gt;

&lt;a href=&quot;mailto:&lt;%=$Request-&gt;Form('email')%&gt;&quot;&gt;

&lt;%=$Request-&gt;Form('nick')%&gt;

&lt;/a&gt; пишет:&lt;br/&gt;

&lt;%=$Request-&gt;Form('comments')%&gt;&lt;br/&gt;

&lt;hr/&gt;

&lt;% } %&gt;

&lt;/body&gt;

&lt;/html&gt;

Обращение к значениям полей формы происходит с помощью метода Form предопределенного объекта $Request, хранящего информацию HTTP-запроса. Система Apache::ASP предоставляет программисту полный набор средств для динамического создания страниц, включая средства работы с клиентскими сеансами. Чтобы продемонстрировать возможности встроенного в шаблоны языка Perl, напишем шаблон ASP, реализующий web-интерфейс к базе данных. Perl в нем используется для извлечения из базы данных информации о моллюсках, производящих жемчужины, а также для формирования в цикле строк таблицы на основании результатов запроса. Фрагменты программы на Perl, встроенные в текст шаблона, выделены жирным шрифтом:

&lt;% # начало встроенного Perl

78
{"b":"569217","o":1}