Опубликован: 17.08.2006 | Доступ: свободный | Студентов: 5313 / 680 | Оценка: 4.49 / 3.94 | Длительность: 20:58:00
ISBN: 978-5-9556-0078-9
Лекция 18:

Web-программирование

< Лекция 17 || Лекция 18: 123456

Системы на основе HTML-шаблонов

Дальнейшим развитием 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 и установить обычным образом. (Подробнее об установке модулей речь шла в лекции "Библиотеки, пакеты и модули" .) Для работы с этими системами под ОС 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, то он будет выглядеть так:

<html>
 <head> <!-- шапка HTML-страницы -->
  <meta http-equiv="content-type" 
        content="text/html; charset=windows-1251">
  <title>Гостевая книга</title>
</head>
<body> <!-- тело HTML-страницы -->
 <h3>Здесь Вы можете оставить свой отзыв</h3>
 <form method="POST"> <!-- начало HTML-формы -->
  <br/>Имя: <!-- 1-е поле формы -->
  <input name="nick" type="text" size="8" 
         value="<%=$Request->Form('nick')%>"/>
  <br/>Э-почта: <!-- 2-е поле формы -->
  <input name="email" type="text" size="32" 
         value="<%=$Request->Form('email')%>"/>
  <br/>Комментарий:<br/> <!-- 3-е поле формы -->
  <textarea name="comments" rows="5" cols="50">
   <%=$Request->Form('comments')%>
  </textarea><br/>
  <input type="submit" value="Отправить"/> <!-- кнопка -->
 </form> <!-- конец HTML-формы -->
 <hr/>
<% if($Request->Form('nick')) { %>
 <a href="mailto:<%=$Request->Form('email')%>">
  <%=$Request->Form('nick')%>
 </a> пишет:<br/>
 <%=$Request->Form('comments')%><br/>
 <hr/>
<% } %>
</body>
</html>

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

<%                     # начало встроенного Perl  
use DBI;               # используем DBI  
my $table = "mollusc"; # подключаемся к БД
my $dbh =              # через драйвер DBD::SQLite
   DBI->connect("dbi:SQLite:dbname=$table","","") or die;
my $sth =              # готовим выборку строк таблицы
   $dbh->prepare("SELECT id,name,latin,area FROM $table")
         or die $dbh->errstr;
$sth->execute() or die $sth->errstr(); # и выполняем запрос
%>
<html> <!-- начало шаблона -->
<head><meta http-equiv="content-type" 
      content="text/html; charset=windows-1251">
<title>Коллекция раковин</title></head>
<body>
<h3 style="color:blue;">Коллекция раковин</h3>
<table border="1" cellpadding="1" cellspacing="0">
<!-- в цикле заполняем строки таблицы из БД -->
<% while (my $row = $sth->fetchrow_hashref) { %>
 <tr>
  <td rowspan="2"><img src="<%=$row->{id}%>.jpg"/></td>
  <td><b><%=$row->{name}%></b>
  <br/><i><%=$row->{latin}%></i></td>
 </tr>
 <tr><td><%=$row->{area}%></td></tr>
<% } %>
</table>
<% $dbh->disconnect; %> <!-- отсоединяемся от БД -->
<body> <html> <!-- конец шаблона -->

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

Web-интерфейс к базе данных

Рис. 18.2. Web-интерфейс к базе данных
< Лекция 17 || Лекция 18: 123456
Галина Башкирова
Галина Башкирова

Здравствуйте, недавно закончила курс по проф веб программиованию, мне прислали методические указания с примерами тем, однако темы там для специальности 

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Константин Моренко
Константин Моренко
Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Сергей Пантелеев
Сергей Пантелеев
Россия, Москва