Файл: Средства создания программ выполняемых на стороне сервера (Технология Java Servlets).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 03.07.2023

Просмотров: 116

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

  Серверные языки не имеют недостатки, так как при правильном выборе ядра и при не перенасыщения различными утилитами веб-приложений, то работе на сайте ничего не угрожает. Но необходимо изначально правильно продумать структуры данных в БД, так как при имении структуры данных, нужно изменять и само приложение.

Глава 2. Технология CGI

2.1 Технология CGI, заголовки ответов и запросов CGI

Web-приложение подобно обычному приложению за исключением того, что оно общается с пользователем через Web-броузер. Вначале Web-приложения использовались для: задач, специфичных для World Wide Web, — для заполнения форм, ведения сетевых дискуссий, покупок в сетевых магазинах. Однако мир World Wide Web не стоит на месте, и сейчас для многих традиционных приложений появились их Web-близнецы. Такие программы используются для назначения деловых встреч и установления контактов, для доступа к географическим картам, предоставляемым специальными серверами, для ведения электронной переписки[Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013]. 

Краткая история CGI

Одним из первых Web-серверов был NCSA HTTPD, название которого происходит от имени организации National Center for Supercomputing Applications (Национальный вычислительный центр}, где работали многие будущие создатели броузера Netscape. Одной из существенных черт программы NCSA HTTPD была технология CGI, реализованная в версии 1.0.

Поскольку NCSA HTTPD был одним из первых широко распространенных серверов (наряду с сервером CERN), технология CGI стала фактическим стандартом для создания Web-приложений. Поддержка CGI была осуществлена в сервере CERN в апреле 1994 года.

В те времена, когда NCSA выпустила сервер HTTPD, единственным способом создания Web-приложений было использование CGI. Поскольку эта технология оказалось простой и удачной, а исходные тексты программы NCSA HTTPD распространялись свободно, все последующие серверы делались с поддержкой CGI[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

В наши дни все популярные Web-серверы на платформах UNIX и Windows NT поддерживают CGI. Даже серверы производства Macintosh для связи с внешними программами тоже применяют технологию, сходную с CGI.


После того как NCSA разработала технологию CGI и внедрила ее в свой сервер, были разработаны и осуществлены многие альтернативные способы создания Web-приложений. Некоторые из них: Microsoft Active Server Pages, Allaire's Gold Fusion, PHP и др [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .]. 

Что такое CGI-программа

CGI-программа выполняется на Web-сервере в ответ на запрос, сделанный броузером. Сервер в этом случае является как бы посредником между броузером и CGI-программой — он передает программе запрос броузера и возвращает броузеру информацию, выданную программой. Например, программа может получить от броузера название некоторого товара, посмотреть в таблице цену этого товара и вернуть полученную цену пользователю (броузеру). Или программа может принять от пользователя некоторый текст комментария и переслать его в виде почтового сообщения создателю Web-узла. Для написания такой программы можно использовать почти любой язык программирования — CGI определяет только стандарт интерфейса между Web-сервером и программой, которую вы пишете Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013] .

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

Запускаться из командной строки простым вводом ее имени. (Например, для выполнения Java-программы нужно запустить виртуальную машину Java, т.е.  набрать в командной строке Java имя_программы, а это делает ее непригодной в качестве CGI-программы.) 

Генерировать правильный заголовок типа данных, которые она возвращает  (content type header) [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013]. 

Программа может возвращать данные любого типа, например HTML-текст, рисунки в формате GIF, простой текст, документы Microsoft Word, аудиофайлы и пр. Заголовок типа возвращаемых данных сообщает броузеру о типе данных, для того чтобы обеспечить их правильную обработку. Позже мы обсудим создание такого заголовка.


В общих чертах, это все. Если Web-сервер может запустить программу на выполнение и если программа возвращает правильные данные, она может быть использована в качестве CGI-программы. Ниже мы подробнее обсудим, что такое правильные данные и какими еще свойствами должна обладать CGI-программа [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009].

Как работает CGI-программа

Интерфейс программы, выполненной по технологии CGI, необычайно прост. Если вы знакомы с какой-нибудь операционной системой из семейства UNIX, вам будет совсем просто понять основные концепции этой технологии.

CGI — это стандарт, или набор правил, определяющих, как Web-сервер и внешняя по отношению к нему программа общаются между собой. Для иллюстрации того, как это все работает, приведем описание полного сеанса HTTP, чтобы вам было легче понять взаимосвязь явлений. 

Сеанс HTTP (процесс передачи данных по протоколу HTTP) начинается с того, что клиент (обычно это Web-броузер) запрашивает некоторый ресурс у Web-сервера. Вы, конечно, помните, что всякий ресурс однозначно определяется своим URL (uniform resource locator). Когда речь идет о простых статических Web-страницах, ресурс представляет собой файл, a URL — положение этого файла на сервере [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Предположим, в нашем случае URL выглядит так: http://www.гсЗ.org/cgibook/index.html

Этот URL соответствует файлу с именем index.html, расположенному в подкаталоге cgibook каталога Web-сервера. Если каталог Web-сервера — /home/httpd/htdocs, тогда URL указывает на следующий файл:

/home/httpd/htdocs/cgibook/index.html.

Если Web-серверу удается найти и прочитать этот файл, содержимое файла передается запросившему его броузеру.

Если же URL указывает на CGI-программу, все обстоит немного сложнее. Давайте для примера рассмотрим следующий URL:  http://www.rc3.org/cgi-bin/example.cgi

В данном случае запрошенным ресурсом является программа с именем example . cgi. Что именно делает эта программа — не важно, важно то, что когда сервер видит, что затребована программа, он запускает ее на выполнение и передает возвращенные ею данные броузеру [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009].

Это процесс существенно отличается от обмена статическими HTML-файлами. Прежде всего, возникает гораздо больше поводов для ошибочной ситуации. Когда запрошена CGI-программа, сервер должен проверить следующее. 

Существует ли запрошенный файл? 


Действительно ли запрошенный файл является CGI-программой? (Это мы обсудим в следующей главе.) 

Есть ли разрешение на выполнение этой программы? 

Выполнилась ли программа без ошибок? 

Соответствуют ли выходные данные программы запросу броузера? (Эту проверку мы рассмотрим чуть ниже.) 

Только в случае положительного ответа на все эти вопросы сервер может успешно обслужить запрос. Если хотя бы на один из вопросов получен отрицательный ответ, возникает сообщение об ошибке или просто происходит не то, что ожидалось [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013]. 

Как выполняется запрос

Как мы уже говорили выше, CGI-программа должна генерировать заголовок типа возвращаемых данных, для того чтобы броузер знал, что возвращает программа. Типы возвращаемых данных определяются стандартом MIME. Обычно стандарт MIME ассоциируется с почтовыми сообщениями, но в случае с типом данных работает та же самая система, что и с типом данных, вложенных в сообщение электронной почты. В табл. 1.1 перечислены типы данных, которые может возвращать CGI-программа [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Если программа возвращает текст HTML, она должна генерировать такой заголовок типа данных:

Content-type: text/html

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

Content type: text/html 

Необходимый заголовок отделен от собственно содержания двумя символами перевода строки. (Обратите внимание — два перевода строки выглядят как одна пустая строка!) Кроме того, сервер может включить в передаваемые данные другие заголовки и другие блоки данных. В этом случае полный ответ сервера броузеру может выглядеть так:

НТТР/1.1 200 ОК

Date: Sun, 30 Jul 2000 04:21:37 GMT

Server: Apache/1.3.3

Connection: close

Content type: text/html 

Как данные передаются CGI-программе

Перед тем как передавать данные серверу, эти данные должны быть специальным образом обработаны (из них должны быть исключены некоторые символы, имеющие специальное значение для сервера). Чаще всего для этого применяется техника, называемая URL-кодированием. Эта техника состоит в маскировании символов, которые могут вызвать проблемы. Например, знак "?" применяется для того, чтобы отделить в URL имя файла от строки запроса. Если же строка запроса сама по себе содержит символ "?", то это может ввести сервер в заблуждение, поэтому такие специальные символы в данных, передаваемых из форм, должны быть закодированы [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].


Аналогичная проблема возникает со знаками пробела и знаками "+". Поскольку "+" используется вместо пробела в обычном потоке данных, в данных формы он также должен быть закодирован. Далее мы познакомимся с тем, как работает техника кодирования и полезными библиотеками, которые облегчают эту работу. 

Доводы за и против CGI

Написание Web-приложений с помощью CGI имеет как достоинства, так и недостатки.

Сначала рассмотрим преимущества CGI-программирования. Самое главное преимущество состоит в том, что эта технология не зависит от платформы, другими словами, CGI-программы применимы в операционных системах UNIX и Windows NT и почти для любого Web-сервера. Написав программу, вы можете быть уверены, что ее можно перенести на любой компьютер и на любой сервер (конечно, с точностью до компиляции, но об этом — немного позже) Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

Кроме того, написание CGI-программы не требует от вас использования какого-то конкретного языка программирования; вам не придется изучать новый язык только для того, чтобы написать CGI-программу. А если вы выберете независимый от платформы язык интерпретирующего типа вроде Perl, вы просто можете переносить свои программы из среды UNIX в Windows NT и обратно. [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .]

Еще одно преимущество CGI-программирования — необычайно простой интерфейс. Вам не понадобятся никакие специальные библиотеки и функции API. Все взаимодействие CGI-программы с Web-сервером основано на обычных UNIX-концепциях стандартного ввода и вывода и переменных среды (stdin, stdout и environment variables).

Теперь упомянем о недостатках. Единственный серьезный недостаток дает о себе знать, когда вы пишете свою программу на языке интерпретирующего типа. При каждом запросе на выполнение CGI-программы приходится запускать интерпретатор, обрабатывать программу и затем ее выполнять. Если для каждого запроса запускается интерпретатор Perl, это может сделать общение с вашим Web-приложением крайне неэффективным. Насколько серьезно это проявится в действительности, зависит от мощности вашего Web-cepвepa, от того, насколько часто выполняется запрос на CGI-программу, и от того, насколько программа быстро загружается в память Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

Многие серверы приложений используют компактные, высокоэффективные CGI-программы в качестве шлюза между своими приложениями и Web-сервером.