litceysel.ru
добавить свой файл
1
ЛЕКЦИЯ Чем отличается Java-сервлет от Java-апплета?



В принципе, сервлет является зеркальным отражением апплета. Сервлет можно рассматривать как апплет для сервера. Сервлеты выполняются на Web-сервере так же, как апплеты выполняются в Web-браузере. Браузер может отправить запрос на выполнение сервлета напрямую; то же самое браузер делает, когда напрямую обращается к апплету.


Нужен ли для сервлетов специальный сервер?


Первое, что Вам нужно для выполнения Java-сервлетов, так это установленная на сервере Java Virtual Machine (JVM). Это аналогично выполнению Java-апплетов в браузере. Браузер, поддерживающий апплеты, просто обязан работать с виртуальной машиной. Таким образом, и серверу для выполнения сервлетов потребуется виртуальная машина.

Кроме того, сервер должен поддерживать Java Servlet API. Данный API, разработанный компанией JavaSoft, определяет, как и когда сервлет взаимодействует с сервером. По своей сути, Servlet API - это хорошо сформулированный набор функциональных команд для получения и отправления информации на сервер и с сервера. Сервлет должен уметь обращаться к специфическим для сервера переменным, дeлать переадресовывания, посылать сообщения об ошибках и т.п. Java Web Server компании Sun поддерживает Servlet API и, естественно, имеет свою JVM.


Таким образом, Java Servlet API зависит от Java-Web-сервера?

Нет. Servlet API - это набор Java-классов, которые можно скачать непосредственно с сайта Sun, и не так уж важно с каким сервером Вы работаете. Это всё называется Java Servlet Development Kit. Когда вы будете скачивать этот инструментарий, Вы найдёте в нём набор плагинов, с помощью которых Вы сможете обновить свой Netscape, IIS или Apache. Это простейшие имплементации, не претендующие на всю полноту функциональности. Но для начала их вполне достаточно. Но Вы можете воспользоваться и другими продуктами.


В Live Software специально создали JRun, с помощью которого можно работать с сервлетами, написанными для Java Servlet API, на любом сервере. JRun представляет собой набор Java-классов, реализующих весь спектр функций, необходимых для того, чтобы приложение могло выполнять сервлеты. Кроме этого, написали специфический для каждого Web-сервера код-мост для связки с JRun. В настоящее время продукт работает с Microsoft's IIS 3.0 и 4.0, Microsoft's Personal Web Server для Windows 95, и совсем недавно закончили работы над интеграцией JRun с WebSite Professional компании O'Reilly. А так же приступили к проектированию JRun под Macintosh Web server WebStar.


Разница в создании приложений из сервлетов и приложений на базе CGI


Во-первых, использование Java для разработки CGI уже значительно удобнее и менее проблематично, чем работа с С, Perl или другими программными языками. Хотя бы потому, что Java объектно-ориентированный (т.е. предназначенный для CGI) язык, и в нём более совершенна поддержка построения Web-приложений. Но что важнее, он представляет собой более простую и дружественную среду разработки. К примеру, в сервлете достаточно воспользоваться несколькими простыми командами для печати, чтобы отправить информацию в Web.

С помощью Servlet API разработчику не нужно беспокоиться о проблемах внутренних процессов сервера. Данные для форм, хедеры, cookies и прочее управляются не Вами, а соответствующими классами сервлета. Кроме того, поскольку сервлеты написаны на Java, Вы можете гонять их с одного сервера на другой, не обращая внимания на операционные среды или тип сервера. Преимущество самой технологии Java в том, что "написанное однажды работает везде".

Perl развил это понятие. Вы можете написать на Perl программу и пользоваться ею на разных серверах. Но Perl - это интерпретируемый язык, поэтому он будет медленнее загружаться и выполняться из-за необходимости обращаться к переводчику для скрипта Perl. Не секрет, что уже появились решения для запуска переводчика Perl параллельно с процессом выполнения программы, но Java пока остаётся более надёжным и устойчивым языком для разработки CGI-приложений.


А теперь об отличиях между условиями работы CGI и сервлетов. Сервер запускает всего одну виртуальную машину, а сервлет загружается только один раз при первом обращении. Ему не нужно повторно загружать до тех пор, пока его содержание не измениться. А, будучи модифицированным, сервлет может перезагрузиться без необходимости перезагрузки сервера.

Сервлет постоянно находится в памяти и поэтому быстро выполняется. Статичная или обновляемая информация может предоставляться независимо от количества обращений к сервлету, что позволяет большому кругу пользователей получить к ней доступ. Например, если нужно отправить нечто в базу данных, можно приступить к выполнению операции через самостоятельную нить и попросить пользователя вернуться ещё раз через пятнадцать минут.

Ещё одним важным моментом является тот факт, что сервлеты это модульные конструкции, каждая из которых может выполнять самостоятельную операцию, или объединяться в более сложные архитектуры. Сервлеты могут взаимодействовать друг с другом. Таким образом, можно создавать так называемые "сервлетные цепочки". Можно брать результат работы одного сервлета и передавать его другому для дальнейшей обработки. Это очень удобно, поскольку самим сервлетам без разницы, как их собираются использовать.

Примеры сервлетов


Простым примером может быть создание информационного фильтра. Предположим, у нас есть сервлет для поиска текстовых форм в базе данных и отправки их пользователю. Независимо от него, Вы можете написать ещё один сервлет, к примеру, для дифференциации языков, который будет заниматься сортировкой английских фраз и пытаться перевести их, к примеру, на французский язык. Вы можете связать их вместе, чтобы результат поиска передавался для дальнейшего перевода.


Инициировать эту операцию можно, указав последовательность сервлетов, как показано в образце:

/servlet/DBRequestServlet, FrenchTranslatorServlet


Используя сервлетные цепочки, Вы можете так переводить результат работы любого сервлета, а не только своего собственного.

В качестве другого примера можно привести привычный "модификатор". Мы написали сервлет, который берёт страницу в виде окна и трансформирует её в страницу в виде таблицы. Это наиболее удобный способ подготовки всевозможных презентаций, так часто используемых в Web. Сервлет располагает содержание страницы в том порядке и в том стиле, который Вам нужен. Если пользователь не хочет видеть тяжеловесную графику, можно пропустить документ через сервлет, который удаляет все крупные изображения. И хотя это можно делать и в CGI, сервлеты значительно проще.