Démarrage avec les Servlets JavaEE : Création, Déploiement et Test de Projets Maven

Configuration de Tomcat et JDK

Tomcat est un serveur d'applications web basé sur Java, essentiel pour déployer des applications Servlet. Il est crucial d'assurer la compatibilité entre votre version de Tomcat et votre environnement Java Development Kit (JDK).

Pour les versions modernes de Java (JDK 17 et ultérieures), Apache Tomcat 10.x est recommandé. Par exemple, vous pouvez télécharger une version compatible depuis les archives Apache Tomcat :

https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.0-M15/bin/apache-tomcat-10.1.0-M15-windows-x64.zip

L'installation de Tomcat nécessite la configuration des variables d'environnement appropriées, notamment JAVA_HOME et CATALINA_HOME. Des guides détaillés sont disponibles sur le site d'Apache Tomcat ou via la documentation officielle.

Introduction à l'API Servlet et Maven

L'API Servlet est un ensemble de classes Java qui permettent de gérer les requêtes et les réponses HTTP dans une application web. Maven simplifie la gestion des dépendances et le cycle de vie de construction des projets Java, y compris les projets web basés sur des Servlets.

Compatibilité des Versions

Assurez-vous que votre version de l'API Servlet est compatible avec votre serveur d'applications Tomcat. Par exemple, Tomcat 10.x est conçu pour fonctionner avec l'API Servlet 6.0, qui fait partie de Jakarta EE 10.

Structure du Projet Maven pour Servlet

Pour un projet web utilisant l'API Servlet, le fichier pom.xml de Maven doit être configuré avec le type de packaging war (Web ARchive) et inclure la dépendance pour l'API Servlet. Voici un exemple de configuraton minimale pour un projet utilisant JDK 17 et Servlet 6.0 :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>mon-application-servlet</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- Dépendance pour l'API Servlet Jakarta EE 10 (Servlet 6.0) -->
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>6.0.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- Plugin pour le compilateur Java -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
            </plugin>
            <!-- Plugin pour la création du fichier WAR -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.4.0</version>
            </plugin>
        </plugins>
    </build>
</project>

La portée (scope) provided indique que cette dépendance sera fournie par le conteneur de Servlets (Tomcat) au moment de l'exécution et ne doit pas être incluse dans l'archive WAR.

Configuration du Descripteur de Déploiement (web.xml)

Le fichier web.xml est le descripteur de déploiement standard pour les applications web Java. Il se trouve généralement dans le répertoire src/main/webapp/WEB-INF/. Pour une application simple, une configuration minimale peut ressembler à ceci :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">
    <display-name>Application Servlet Simple</display-name>
</web-app>

Bien que les annotations (comme @WebServlet) aient réduit la nécessité d'une configuration extensive dans web.xml, ce fichier reste pertinent pour des configurations globales ou complexes.

Développement de la Servlet

Une Servlet est une classe Java qui étend jakarta.servlet.http.HttpServlet et surcharge généralement les méthodes doGet() ou doPost() pour traiter les requêtes HTTP correspondantes. L'annotation @WebServlet permet de mapper l'URL de la Servlet sans configuration explicite dans web.xml.

Voici un exemple simple de Servlet qui répond avec "Bonjour, Monde !" à toute requête GET. Créez ce fichier sous src/main/java/com/example/servlets/BonjourServlet.java :

package com.example.servlets;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "bonjourServlet", urlPatterns = {"/bonjour"})
public class BonjourServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest requete, HttpServletResponse reponse)
            throws ServletException, IOException {
        reponse.setContentType("text/html");
        reponse.setCharacterEncoding("UTF-8");

        PrintWriter out = reponse.getWriter();
        out.println("");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Ma Première Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Bonjour, Monde depuis ma Servlet!</h1>");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }

    @Override
    public String getServletInfo() {
        return "Une Servlet simple pour dire bonjour.";
    }
}

Compilation et Packaging de l'Application

Une fois le code de la Servlet et les fichiers de configuration en place, l'application peut être compilée et empaquteée en un fichier WAR (Web ARchive) à l'aide de Maven. Naviguez vers le répertoire racine de votre projet dans un terminal et exécutez la commande suivante :

mvn clean package

Cette commande va nettoyer les artefacts précédents, compiler votre code Java, et construire le fichier WAR dans le répertoire target/ de votre projet. Le nom du fichier WAR sera généralement <artifactId>-<version>.war (par exemple, mon-application-servlet-1.0-SNAPSHOT.war).

Déploiement et Test de l'Application

Pour déployer l'application sur Tomcat, suivez ces étapes :

  1. Copiez le fichier WAR : Placez le fichier WAR généré (par exemple, mon-application-servlet-1.0-SNAPSHOT.war) dans le répertoire webapps/ de votre installation Tomcat (par exemple, C:\apache-tomcat-10.1.0-M15\webapps\). Tomcat décompressera automatiquement l'archive.
  2. Démarrez Tomcat : Exécutez le script de démarrage de Tomcat. Sur Windows, c'est startup.bat situé dans le répertoire bin/ de Tomcat.
  3. Accédez à l'application : Ouvrez un navigateur web et accédez à l'URL de votre Servlet. Si Tomcat s'exécute sur le port par défaut (8080) et que le contexte de votre application est le nom du fichier WAR sans l'extension (par exemple, mon-application-servlet-1.0-SNAPSHOT), l'URL sera :
    http://localhost:8080/mon-application-servlet-1.0-SNAPSHOT/bonjour

Vous devriez voir le message "Bonjour, Monde depuis ma Servlet!" affiché dans votre navigateur.

Étiquettes: JavaEE Servlet Maven Tomcat web development

Publié le 27 juin à 06h38