Package Servlet

La structure d'application web impliquant le sous-répertoire WEB-INF est standard pour toutes les applications web Java et est spécifiée par la spécification de l'API Servlet. Étant donné un nom de répertoire de premier niveau myapp, la structure de répertoires est la suivante :

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

Le sous-répertoire WEB-INF contient le descripteur de déploiement de l'application, nommé web.xml. Tous les fichiers HTML sont situés dans le répertoire de premier niveaumyappci-dessous. Pour l'utilisateur administrateur, vous constaterez que le répertoire ROOT est le répertoire parent de myApp.

Création d'une Servlet dans un package

Le répertoire WEB-INF/classes contient toutes les classes Servlet et d'autres fichiers de classe. La structure de répertoires où se trouvent les fichiers de classe correspond à leurs noms de package. Par exemple, si vous avez un nom de classe pleinement qualifiécom.myorg.MyServlet, alors la classe Servlet doit se trouver dans le répertoire suivant :

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

L'exemple suivant crée un package nommécom.myorgpour la classe 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()
  {
      // 什么也不做
  }
}

Compilation d'une Servlet dans un package

La compilation de classes dans un package n'est pas très différente de la compilation d'autres classes. La méthode la plus simple consiste à conserver vos fichiers java avec des chemins pleinement qualifiés ; par exemple, la classe mentionnée ci-dessus sera conservée dans com.myorg. Vous devez également ajouter ce répertoire au CLASSPATH.

En supposant que votre environnement soit correctement configuré, rendez-vous dans le répertoire<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classeset compilez MyServlet.java comme suit :

$ javac MyServlet.java

Si la Servlet dépend d'autres bibliothèques, vous devez également référencer ces fichiers JAR dans le CLASSPATH. Ici, je n'ai fait référence qu'au fichier JAR servlet-api.jar parce que je n'ai utilisé aucune autre bibliothèque dans le programme Hello World.

Cette ligne de commande utilise le compilateur javac intégré, fourni avec le Sun Microsystems Java Software Development Kit (JDK). Pour que cette commande fonctionne correctement, vous devez inclure l'emplacement du Java SDK que vous utilisez dans la variable d'environnement PATH.

Si tout se passe bien, la compilation ci-dessus générera le fichierMyServlet.classdans le même répertoire. La section suivante expliquera comment déployer une Servlet compilée en production.

Empaquetage et déploiement de Servlet

Par défaut, les applications Servlet se trouvent sous <Tomcat-installation-directory>/webapps/ROOT, et les fichiers de classe sont placés dans <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes.

Si vous avez un nom de classe pleinement qualifiécom.myorg.MyServlet, alors la classe Servlet doit être située dans WEB-INF/classes/com/myorg/MyServlet.class. Vous devez créer l'entrée suivante dans le fichier web.xml situé à l'emplacement <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>

L'entrée ci-dessus doit être créée à l'intérieur des balises <web-app>...</web-app> du fichier web.xml. Il peut déjà y avoir diverses entrées disponibles dans le fichier, mais ne vous en préoccupez pas.

À ce stade, vous avez pratiquement terminé. Maintenant, démarrez le serveur Tomcat en utilisant <Tomcat-installation-directory>\bin\startup.bat (sous Windows) ou <Tomcat-installation-directory>/bin/startup.sh (sous Linux/Solaris, etc.), puis saisissez enfin ce qui suit dans la barre d'adresse du navigateur :http://localhost:8080/MyServletSi tout se passe bien, vous verrez le résultat suivant :

Hello World

Autres extensions