English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Пакет Servlet

Структура веб-приложений,涉及到WEB-INF подкаталога, является стандартной для всех Java веб-приложений и определена спецификацией Servlet API.

/myapp
    /images
    /WEB-INF
        /classes
        /lib

Подкаталог WEB-INF содержит описание部署 приложения, называемое web.xml. Все файлы HTML расположены в корневом каталоге myapp Для пользователя admin你会发现 каталог ROOT является родительским каталогом myApp.

Создание Servlet в пакете

Каталог WEB-INF/classes содержит все классы Servlet и другие файлы классов, структура каталога классов соответствует их именам пакетов. Например, если у вас есть полностью квалифицированное имя класса com.myorg.MyServletтогда этот класс Servlet должен находиться в следующем каталоге:

/myapp/WEB-INF/classes/com/myorg/MyServlet.class

Ниже приведен пример создания пакета с именем com.myorg класса MyServlet.

// Название пакета
package com.myorg;  
// Импорт необходимых java библиотек
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
 
  private String message;
 
  public void init() throws ServletException
  {
      // Выполнение необходимых инициализаций
      message = "Hello World";
  }
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // Установка типа содержимого ответа
      response.setContentType("text/html;charset=UTF-8");
 
      // Реальная логика находится здесь
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()}
  {
      // Ничего не делает
  }
}

Компилирование Servlet в пакете

Компилирование классов в пакете не сильно отличается от компилирования других классов. Самый простой способ - сохранить java файлы с полным именем пути, как упомянутый класс, который останется в com.myorg. Также вам нужно добавить этот каталог в CLASSPATH.

Предположим, что ваше окружение настроено правильно, перейдите в <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes Каталог, и скомпилировать MyServlet.java, как показано ниже:

$ javac MyServlet.java

Если Servlet зависит от других библиотек, то вам также нужно указать эти JAR файлы в CLASSPATH. Здесь я использую только файл JAR servlet-api.jar, так как в программе Hello World я не использую другие библиотеки.

Эта команда использует встроенный компилятор javac, который входит в Java Software Development Kit (JDK, полное название Java Software Development Kit) от Sun Microsystems. Для того чтобы эта команда работала корректно, необходимо включить путь к Java SDK, который вы используете в переменной окружения PATH.

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

Пакетизация и развертывание Servlet

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

Если у вас есть полноценное имя класса com.myorg.MyServletЕсли это так, то этот класс Servlet должен быть расположен в WEB-INF/classes/com/myorg/MyServlet.class, и вам нужно создать следующий раздел в файле web.xml, который находится в <Tomcat-installation-directory>/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-installation-directory>\bin\startup.bat (на Windows) или <Tomcat-installation-directory>/bin/startup.sh (на Linux/Solaris и т.д.) для запуска сервера Tomcat, а затем в адресной строке браузера введите http://localhost:8080/MyServletЕсли все будет хорошо, вы увидите результат ниже:

Привет мир