Структура веб-приложения, включающая подкаталог WEB-INF, является стандартной для всех веб-приложений Java и определяется спецификацией API сервлета. Дано имя каталога верхнего уровня myapp. Вот как выглядит эта структура каталогов:
/myapp /images /WEB-INF /classes /lib
Подкаталог WEB-INF содержит дескриптор развертывания приложения с именем web.xml. Все файлы HTML должны храниться в каталоге верхнего уровня, который является myapp . Для пользователя-администратора вы найдете каталог ROOT в качестве родительского каталога.
Создание сервлетов в пакетах
Каталог WEB-INF / classes содержит все классы сервлетов и другие файлы классов в структуре, которая соответствует имени их пакета. Например, если у вас есть полное имя класса com.myorg.MyServlet , этот класс сервлета должен находиться в следующем каталоге:
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
Ниже приведен пример создания класса MyServlet с именем пакета com.myorg.
// Name your package package com.myorg; // Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { private String message; public void init() throws ServletException { // Do required initialization message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); // Actual logic goes here. PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // do nothing. } }
Компиляция сервлетов в пакетах
Нет ничего особенного в том, чтобы скомпилировать класс, доступный в пакете. Самый простой способ — сохранить ваш Java-файл по полному пути, как указано выше, класс будет храниться в com.myorg. Вам также необходимо добавить этот каталог в CLASSPATH.
Предполагая, что ваша среда настроена правильно, перейдите в каталог <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes и скомпилируйте MyServlet.java следующим образом
$ javac MyServlet.java
Если сервлет зависит от каких-либо других библиотек, вы должны также включить эти файлы JAR в свой CLASSPATH. Я включил только JAR-файл servlet-api.jar, потому что я не использую никакую другую библиотеку в программе Hello World.
В этой командной строке используется встроенный компилятор javac, поставляемый с Sun Microsystems Java Software Development Kit (JDK). Чтобы эта команда работала правильно, вы должны указать расположение Java SDK, которое вы используете, в переменной среды PATH.
Если все пойдет хорошо, приведенная выше компиляция выдаст файл MyServlet.class в том же каталоге. В следующем разделе объясняется, как скомпилированный сервлет будет развернут в производстве.
Развертывание упакованного сервлета
По умолчанию приложение сервлета находится в пути <Tomcat-instaldirectory> / webapps / ROOT, а файл класса будет находиться в <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes.
Если у вас есть полное имя класса com.myorg.MyServlet , то этот класс сервлета должен находиться в WEB-INF / classes / com / myorg / MyServlet.class, и вам потребуется создать следующие записи в файле web.xml, расположенном по адресу в <каталог-установки Tomcat> / webapps / ROOT / WEB-INF /
<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.myorg.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping>
Над записями, которые будут созданы внутри тегов <web-app> … </ web-app>, доступных в файле web.xml. В этой таблице уже могут быть различные записи, но не берите в голову.
Вы почти закончили, теперь давайте запустим сервер Tomcat, используя <Tomcat-installationdirectory> \ bin \ startup.bat (в Windows) или <Tomcat-InstallationDirectory> /bin/startup.sh (в Linux / Solaris и т. Д.) И, наконец, наберите http: // localhost: 8080 / MyServlet в адресной строке браузера. Если все будет хорошо, вы получите следующий результат —