Сервлеты - Упаковка

Структура веб-приложения, включающая подкаталог 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.
   }
}

Компиляция сервлетов в пакеты

Нет ничего особенного в компиляции класса, доступного в package. Самый простой способ - сохранить ваш 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 (JDK). Чтобы эта команда работала правильно, вы должны указать расположение используемого вами Java SDK в переменной среды PATH.

Если все пойдет хорошо, приведенная выше компиляция выдаст MyServlet.classфайл в том же каталоге. В следующем разделе будет объяснено, как скомпилированный сервлет будет развернут в производственной среде.

Пакетное развертывание сервлетов

По умолчанию приложение сервлета находится по пути <каталог-установки-Tomcat> / webapps / ROOT, а файл класса будет находиться в <каталог-установки-Tomcat> / webapps / ROOT / WEB-INF / classes.

Если у вас есть полное имя класса com.myorg.MyServlet, то этот класс сервлета должен находиться в WEB-INF / classes / com / myorg / MyServlet.class, и вам нужно будет создать следующие записи в web.xml файл, расположенный в <Tomcat-installationdirectory> / 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в адресной строке браузера. Если все пойдет хорошо, вы получите следующий результат -

Hello World