ации
пользователю, контент сопровождается заголовком Content-Type, в котором
указывается МIМЕ-тип данных.
Взаимодействие с клиентом
Динамическая генерация контента позволяет пользователю интерактивно
взаимодействовать с www-сервером. Типичным примером этого процесса является
работа с поисковым сервером: пользователь указывает строку поиска, которая
и является параметром запроса. Сервер производит поиск строки в базе данных
и формирует HTML-страницу, содержащую результаты поиска.
Пользователь задает параметры запроса путем заполнения и отправки HTML-
форм. Формы содержат поля ввода текстовой информации, радиокнопки,
выпадающие списки и т. п. Интерес представляет то, как именно браузер
присоединяет введенные данные к запросу. В тэге
содержатся два
параметра: action и method. Первый указывает URL, к которому будет
отправлен запрос по заполнению формы, а второй - метод этого запроса.
Существуют два метода: GET и POST. При отправке запроса методом GET данные,
введенные в форму, присоединяются к URL после вопросительного знака. В этом
случае URL может выглядеть, например, так: "/cgi-
bin/dir/script.pl?name=John&age=25 &hobby=reading&hobby=football". Нетрудно
заметить, что данные состоят из пар "имя=значение", разделенных
амперсандами. При отправке данных методом POST та же самая строка: "па-
me=John&age=25&hobby=reading&hob-by=football" помещаетсяпослезаголовке
запроса, отделяясь от них пустой строкой В этом случае к URL ничего не
добавляется.
Очевидно, что никакой HTTP-сервер не может предусмотреть всего разнообразия
интерактивных www-приложений. Вместо этого HTTP-сервер предлагает
разработчику интерфейс, используя который, сторонняя программа может
получить от HTTP-сервера все необходимые для обработки запроса данные, а в
ответ сгенерировать контент, который будет возвращен сервером браузеру.
Таким образом, задача генерации контента возлагается на приложения,
разрабатываемые под нужды конкретной задачи. В комплексных информационных
системах на базе WWW говорят, что HTTP-сервер - это front end www-сайта, а
приложения, генерирующие контент, - back end. Часто приложения работают в
связке с базой данных: таким образом, имеет место трехуровневая схема: HTTP-
сервер - приложение - база данных.
Интерфейс CGI
Наиболее общим и распространенным интерфейсом подобного типа является CGI.
При его использовании HTTP-сервер запекает приложение, которое должно
обработать запрос, и передает ему на стандартный ввод все, что поступило в
запросе после заголовков. Также HTTP-сервер устанавливает несколько
переменных окружения, в том числе переменную QUERY_STRING, которая содержит
часть URL, расположенную после вопросительного знака (а это, как мы знаем,
данные, переданные методом GET). Таким образом, CGI-приложение получает
доступ к данным, введенным пользователем в форму. Отметим, что сами данные,
их наличие или отсутствие, размещение в теле запроса или в URL или сразу в
обоих местах HTTP-сервером никак не интерпретируются и не декодируются, а
передаются приложению как есть. Все задачи по интерпретации и
преобразованию данных возложены на CGI-приложение. Обработав запрос,
приложение передает сгенерированный контент на свой стандартный вывод, где
он перехватывается HTTP-сервером и пересылается клиенту. Единственный
заголовок, который обязано выставить само CGI-приложение, - Content-Type.
Выполняемые составляющие
Другой способ динамической генерации контента - внесение программного кода
непосредственно в текст HTML-файла. Код размещается внутри специальных
тэгов (например, ). Приняв запрос такого файла, HTTP-сервер производит
разбор его содержимого, обнаруживает программный код и исполняет его. В
текст исходного файла вставляется результат выполнения кода и итоговый
контент отправляется клиенту. Популярными технологиями, использующими
встроенный код на стороне сервера, являются PHR ASP (Active Server Pages),
JSP (Java Server Pages). В отличие от CGI, где от сервера, в общем случае,
не требуется никаких знаний о том, как работает запускаемая им CGI-
программа, при использовании встроенного кода требуется поддержка
соответствующей технологии сервером, так как выполнение кода производится
внутри процесса сервера.
Особый случай встроенного кода - язык Javascript. Код, написанный на
Javascript, помещается внутри пары тэгов , передается
на сторону клиента и выполняется браузером. На стороне клиента выполняются
также программы, написанные на языке Java. Встретив в HTML-документе тэг