- •Раздел 12. Веб-сервера
- •12.2. Стандарт cgi
- •Раздел 13. Технология Java Servlet
- •Пример сервлета
- •Компиляция сервлетов
- •Структура веб-модуля
- •Запуск сервлета
- •Архив веб-модуля
- •13.2. Структура и жизненный цикл сервлета
- •Работа сервлетов в многопоточной среде
- •13.3. Основные классы Servlet api Класс HttpServletRequest (запрос)
- •Класс HttpServletResponse (ответ)
- •Класс HttpServlet (сервлет)
- •Класс ServletContext (взаимодействие с сервлет-контейнером)
- •13.4. Cookies и сессии
- •13.5. Отладка сервлетов
- •Раздел 14. Технология JavaServer Pages
- •14.1. Введение в jsp
- •14.2. Жизненный цикл jsp-страниц
- •Действия
- •14.4. Язык выражений
- •Предопределенные объекты
- •14.5. Библиотеки тегов
- •Раздел 14. Технология JavaServer Pages
- •14.1. Введение в jsp
- •14.2. Жизненный цикл jsp-страниц
- •Действия
- •14.4. Язык выражений
- •Предопределенные объекты
- •14.5. Библиотеки тегов
Структура веб-модуля
Начиная с версии спецификации Java Servlet 2.2, которая была принята в 1999 г., процесс внедрения сервлетов на веб-сервер стандартизирован и теперь на всех сервлет-контейнерах этот процесс примерно одинаков.
Все сервлеты и вспомогательные файлы объединяются в так называемые «веб-приложения» или «веб-модули», которые уже размещаются на веб-сервере.
Все файлы веб-модуля размещаются в одном каталоге. Этот каталог должен иметь определенную структуру и включает следующие элементы:
Каталог/файл, назначение |
Описание |
/ документы |
В корне веб-модуля располагаются файлы, которые будут непосредственно доступны клиенту для загрузки с веб-сервера (HTML-файлы, CSS-файлы, изображения, JSP-страницы и т. п.). Например: myapp/index.html, myapp/style.css, myapp/img/pic1.jpg, myapp/guestbook.jsp. |
/WEB-INF/web.xml конфигурационный файл веб-модуля |
Этот файл также называют дескриптором развертывания (deployment descriptor) или просто дескриптором веб-модуля. В каталоге WEB-INF часто располагают и другие конфигурационные файлы, которые используются веб-модулем. |
/WEB-INF/classes/ каталог с классами |
Здесь размещаются откомпилированные сервлеты и любые другие классы. Например: myapp/WEB-INF/classes/HelloServlet.class. |
/WEB-INF/lib/ библиотеки классов |
Сюда можно поместить библиотеки, которые используются веб-модулем. Например: myapp/WEB-INF/lib/mysql_driver.jar. |
Одно из основных назначений дескриптора web.xml — это указание URL, по которым будут доступны сервлеты для клиентов. Пример web.xml:
<?xml version="1.0"?>
<web-app>
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
В теге servlet-class указан класс сервлета, в url-pattern — URL сервлета, servlet-name — это название сервлета, которое используется в пределах web.xml.
Запуск сервлета
Чтобы выполнить сервлет HelloServlet с помощью веб-сервера Tomcat, необходимо выполнить следующие шаги:
-
В каталоге webapps создать подкаталог для веб-модуля (назовем его myapp), расположив файлы следующим образом:
C:\Tomcat\webapps\myapp
└───WEB-INF
│ web.xml
└───classes
└───HelloServlet.class
Каталог расположения Tomcat может отличаться.
-
Запустить Tomcat, если он еще не запущен (bin\startup).
-
Набрать в браузере: http://localhost:8080/myapp/hello (или адрес сервера вместо localhost, если сервер находится на другом компьютере).
Архив веб-модуля
Если веб-модуль заархивировать в JAR-архив (архиватор поставляется вместе с J2SE) и переименовать в файл с расширением WAR (например, myapp.war), то получим так называемый «web archive» (архив веб-модуля).
Если такой файл разместить в каталоге webapps, то Tomcat его автоматически разархивирует и сделает доступным клиентам.