Servlets - Emballage

La structure de l'application Web impliquant le sous-répertoire WEB-INF est standard pour toutes les applications Web Java et spécifiée par la spécification de l'API du servlet. Étant donné un nom de répertoire de premier niveau de myapp. Voici à quoi ressemble cette structure de répertoires -

/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 doivent être conservés dans le répertoire de niveau supérieur qui est myapp . Pour l'utilisateur administrateur, vous trouverez le répertoire ROOT comme répertoire parent.

Création de servlets dans des packages

Le répertoire WEB-INF / classes contient toutes les classes de servlet et autres fichiers de classe, dans une structure qui correspond à leur nom de package. Par exemple, si vous avez un nom de classe qualifié complet decom.myorg.MyServlet, alors cette classe de servlet doit être située dans le répertoire suivant -

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

Voici l'exemple pour créer une classe MyServlet avec un nom de package 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.
   }
}

Compilation de servlets dans des packages

Il n'y a rien de bien différent pour compiler une classe disponible dans package. Le moyen le plus simple est de conserver votre fichier java dans un chemin complet, comme mentionné ci-dessus, la classe serait conservée dans com.myorg. Vous devrez également ajouter ce répertoire dans CLASSPATH.

En supposant que votre environnement est correctement configuré, entrez <Tomcat-installationdirectory>/ webapps / ROOT / WEB-INF / classes et compilez MyServlet.java comme suit

$ javac MyServlet.java

Si le servlet dépend d'autres bibliothèques, vous devez également inclure ces fichiers JAR sur votre CLASSPATH. J'ai inclus uniquement le fichier JAR servlet-api.jar car je n'utilise aucune autre bibliothèque dans le programme Hello World.

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

Si tout se passe bien, la compilation ci-dessus produirait MyServlet.classfichier dans le même répertoire. La section suivante explique comment un servlet compilé serait déployé en production.

Déploiement de servlet packagé

Par défaut, une application de servlet se trouve dans le chemin <Tomcat-installationdirectory> / webapps / ROOT et le fichier de classe résiderait dans <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes.

Si vous avez un nom de classe complet de com.myorg.MyServlet, alors cette classe de servlet doit être située dans WEB-INF / classes / com / myorg / MyServlet.class et vous devrez créer les entrées suivantes dans web.xml fichier situé dans <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>

Au-dessus des entrées à créer dans les balises <web-app> ... </web-app> disponibles dans le fichier web.xml. Il peut y avoir plusieurs entrées dans ce tableau déjà disponibles, mais peu importe.

Vous avez presque terminé, commençons maintenant le serveur tomcat en utilisant <Tomcat-installationdirectory> \ bin \ startup.bat (sous Windows) ou <Tomcat-installationdirectory> /bin/startup.sh (sous Linux / Solaris etc.) et enfin tapez http://localhost:8080/MyServletdans la zone d'adresse du navigateur. Si tout se passe bien, vous obtiendrez le résultat suivant -

Hello World