Использование прикладной программы
Технологии обработки данных на Web-сервере
Web-серверы хранят информацию в виде текстовых файлов, называемых также Web-страницами. Помимо текста, такие страницы могут содержать ссылки на другие страницы (расположенные на том же самом или другом Web-сервере), ссылки на графические изображения, аудио- и видеоинформацию, различные объекты ввода данных (поля, кнопки, формы и т. д.), а также другие объекты.
Различают пассивные и активные Web-серверы. Если страницы сервера содержат только статическую текстовую и мультимедийную информацию, а также гипертекстовые ссылки на другие страницы, то Web-сервер называется пассивным. Когда же страницы Web-сервера содержат формы или гиперссылки с параметрами, то Web-сервер должен тем или иным способом обеспечить обработку запросов, возможно используя внешние источники данных (файлы или базы данных), т.е. быть активным.
Существуют два варианта реализации обработки данных активным Web-сервером:
· организация взаимодействия Web-сервера с прикладной программой;
· обработка специальным образом выделенных фрагментов Web-страниц Web-сервером либо установленными на нем программными расширениями (plug-ins).
Процесс обработки данных с использованием прикладных программ приведен на рис. 4.6.1.
Рис. 4.6.1. Обработка данных на Web-сервере с использованием прикладных программ
Когда пользователь в форме Web-страницы нажимает кнопку передачи данных на сервер (эта кнопка определяется элементом input со значениями type="submit" или type="image"), Web-браузер формирует запрос для запуска программы на сервере. Имя программы указывается в атрибуте action элемента form.
В запросе также указываются параметры формы и их значения. Способ пересылки параметров указывается в атрибуте method элемента form. Этот атрибут может иметь одно из двух значений: "get" или "post" (см. 4.6.2.1).
Пример 4.6.5. Формирование запроса для передачи данных формы на сервер:
1. Формирование запроса для method="get":
В Web-странице задана следующая форма:
<form action="cgidir/connect.pl" method="get">
<input type="text" name="login" id="login">
<input type="text" name="password" id="password">
<input type="submit" value="OK">
</form>
Если после ввода имени пользователя – "Ivanov" в первое текстовое поле и пароля – "stud1" во второе текстовое поле нажать кнопку "OK", Web-браузер сформирует следующий запрос обращения к программе на языке Perl:
GET /cgidir/connect.pl?login=Ivanov&password=stud1 HTTP 1.1
пустая строка
Если задано значение method="post", то параметры формы передаются в теле запроса.
2. Формирование запроса для method="post":
В форме в предыдущем примере значение атрибута method method="get"изменено на method="post". При тех же введенных в форме данных запрос Web-браузера будет иметь следующий вид:
GET /cgidir/connect.pl HTTP 1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
пустая строка
login=Ivanov&password=stud1
Выполнение программы и параметры, необходимые для ее выполнения могут быть также заданы в атрибуте href гиперссылки (элемента <a>). Запрос будет сформирован и передан на сервер при щелчке мышью по гиперссылке.
Пример 4.6.6. Формирование запроса в гиперссылке:
Гиперссылка в Web-странице имеет следующий вид:
<a href="/cgidir/calcul.pl?a=32&b=12">
Вычисление суммы 32 и 12</a>
При щелчке по этой гиперссылке Web-браузер сформирует следующий запрос:
GET /cgidir/ calcul.pl?a=32&b=12 HTTP 1.1
пустая строка
Сформированный запрос передается Web-серверу, который выполняет поиск программы в реальном каталоге сервера по заданному в запросе имени виртуального каталога. Если программа найдена, она запускается на выполнение под управлением операционной системы сервера.
Чтобы передать полученные в запросе параметры запущенной программе, используется интерфейс общего шлюза – CGI (Common Gateway Interface). Этот интерфейс между Web-сервером и запущенной программой функционирует следующим образом. Если в запросе указан метод GET, то параметры передаются программе через переменные окружения, а при использовании метода POST – через стандартный поток ввода (в языке C и некоторых других языках – файл stdin). После окончания выполнения программы результат ее выполнения (сформированная Web-страница) передается Web-серверу через стандартный выводной поток (в языке C и некоторых других языках – файл stdout).
В процессе выполнения программа может обращаться к данным, размещенным в файлах или базах данных и выполнять над этими данными различные операции: чтение, запись или модификацию.
В принципе, программу с использованием интерфейса CGI можно написать на любом языке программирования, допускающем использование переменных окружения, а также стандартных потоков ввода и вывода (например, C или C++), однако исторически сложилось так, что наиболее часто для написания программ CGI используется интерпретируемый язык Perl. Его реализации имеются для всех операционных систем (ОС), используемых на сервере (основные ОС – это Windows, а также ОС семейств Unix и Linux).
Аналогичным образом могут использоваться программы специального вида (сервлеты), написанные на языке Java, однако в этом случае программы должны быть предварительно установлены в специальный каталог (контейнер), поэтому для сервлетов используется специальный сервер, например, Sun Java System Application Server, реализации которого существуют для ОС Windows, Linux и Sun Solaris.
Сформированная Web-страница по сети передается Web-сервером Web-браузеру, который выводит ее на экран, при необходимо обращаясь с запросами к Web-серверу для получения элементов Web-страницы, хранящихся в отдельных файлах: изображений, внешних таблиц стилей, внешних сценариев и т.д.