Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 405

Ильдар Шаукатович Хабибуллин

Контейнеры сервлетов создаются как часть Web-сервера или как встраиваемый в него модуль. Большую популярность получили встраиваемые контейнеры Tomcat, разработанные сообществом Apache Software Foundition в рамках проекта Jakarta, Resin фирмы Caucho, JRun фирмы Macromedia. Точное распределение обязанностей между Web-сервером и контейнером сервлетов выпадает на долю их производителей.

Сервер Tomcat можно скопировать со страницы и установить отдельно. Удобнее скопировать его дистрибутив в виде zip-файла, его надо просто развернуть в какой-либо каталог. Для выполнения всех примеров этой и следующей главы понадобится Tomcat версии не меньше 7, "умеющий" выполнять Servlet 3.0 и JSP 2.2.

Web-приложение

Как правило, сервлет не выполняется один. Он работает в составе Web-приложения. Web-приложение (web application) составляют все ресурсы, написанные для обслуживания запросов клиента: сервлеты, JSP, страницы HTML, документы XML, другие документы, изображения и чертежи, музыкальные и видеофайлы. Спецификация "Java Servlet Specification" описывает структуру каталогов, содержащих все эти ресурсы. Она изображена на рис. 26.1.

Как видно из рисунка, все, что относится к данному Web-приложению, содержится в одном каталоге, имя которого будет именем Web-приложения. В примере это каталог InfoAppl. В этом каталоге обязательно должен быть каталог WEB-INF и необязательно другие каталоги и файлы. Все, что находится в каталоге WEB-INF и его подкаталогах, недоступно клиенту. Это "внутренняя кухня" Web-приложения. То, что расположено в приложении вне каталога WEB-INF, доступно клиенту.

В каталоге WEB-INF должен быть конфигурационный XML-файл с именем web.xml, в котором описано Web-приложение: его ресурсы, их адреса и связи между ресурсами.

Это минимальный состав Web-приложения — каталог с его именем, в нем подкаталог WEB-INF, а в нем файл web.xml. Впрочем, при использовании аннотаций даже файл web.xml становится необязательным.

Скомпилированные сервлеты обычно располагаются в подкаталогах каталога WEB-INF/classes в соответствии со своей структурой пакетов и подпакетов.

InfoAppI

—WEB-INF-г

web.xml

classes

myservlets

— index.html index, htm index.jsp

sdotags—

lib-pjstl.jar

-standard .jar

—sdotaglib.tld — tags-info.tag

InfoServlet.class

RegPrepServlet.class

HeadTag.class QueryTag.class

'—images

logo.gif

header.jpg

Рис. 26.1. Структура каталогов Web-приложения

Все Web-приложение целиком часто упаковывается в один файл по технологии JAR. Такой файл обычно получает расширение war (Web ARchive). Этот файл можно переносить с одного Web-сервера на другой, при этом многие контейнеры сервлетов могут запускать Web-приложение прямо из архива, не распаковывая его. Серверу Tomcat достаточно занести WAR-архив или всю структуру каталогов приложения в каталог webapps. Сервер его "увидит" и немедленно, без перезапуска, вовлечет в работу. Необходимость распаковки архива или работа прямо с архивом указывается при настройке Tomcat в его конфигурационном файле server.xml.