Exercice - Créer une application web Tomcat Java simple

Effectué

Les applications web sont largement utilisées pour gérer des tâches réelles telles que la gestion des stocks, les formulaires en ligne et les portails accessibles aux clients. Dans ce module, vous allez apprendre à créer et déployer une application web Java à l’aide d’Apache Tomcat, un serveur open source populaire.

Supposons que vous êtes développeur travaillant sur un projet pour créer une application web dynamique où les utilisateurs peuvent entrer des données et interagir avec votre plateforme en temps réel. Votre client souhaite que cette application soit disponible localement pour les tests et sur le cloud pour un accès facile. Cette configuration vous permet de tester d’abord votre ordinateur local, puis de déployer sur un environnement actif en tant que transition transparente. La création de cette configuration à partir de zéro vous offre une flexibilité pour les futures mises à jour et configurations.

Dans ce module, vous allez explorer les étapes essentielles à la création et au déploiement d’une application web Java avec Tomcat. Vous avez deux options : cloner un référentiel de projet existant pour un déploiement immédiat ou créer un nouveau projet à partir de zéro avec Maven. Ce module couvre la configuration de votre projet Maven, la configuration de Tomcat, le déploiement de l’application localement et l’utilisation d’outils tels que Maven pour gérer les dépendances et les packages.

À la fin de ce module, vous pourrez créer et déployer des applications web basées sur Java sur Tomcat, en vous préparant à prendre en charge le déploiement d’applications web localement et dans des environnements hébergés dans le cloud.

Créer une application web Java Tomcat

Dans cet exercice, vous créez une application web Java minimale qui prend une entrée et affiche le résultat à l’écran. Vous déployez ensuite l’application web localement sur votre ordinateur à l’aide de Tomcat. Vous disposez des deux options suivantes :

  • Option 1 : Clonez l’exemple de dépôt et déployez immédiatement votre application web.
  • Option 2 : Créer un projet Maven Tomcat à partir de zéro.

Option 1 : Cloner l’exemple de dépôt et déployer immédiatement votre application web

Pour cloner le dépôt, procédez comme suit :

  1. Clonez l’exemple de dépôt de projet à l’aide de la commande suivante :

    git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.git
    
    
  2. Accédez au référentiel de projet cloné à l’aide de la commande suivante :

    cd simple-tomcat-app
    

Procédez comme suit pour configurer votre serveur Tomcat local afin de pouvoir déployer localement sur Tomcat :

Avertissement

Le stockage des noms d’utilisateur et des mots de passe directement dans des fichiers de configuration tels quetomcat-users.xml et les settings.xml de Maven en texte brut n’est pas considéré comme sécurisé, et nous ne recommandons généralement pas cette pratique, en particulier pour les environnements de production. Toutefois, d’autres alternatives sont en dehors de l’étendue de ce module de formation. N’utilisez pas votre vrai nom d’utilisateur et votre mot de passe !

  1. Modifiez le fichier de configuration Tomcat conf/tomcat-users.xml afin qu’il ressemble à l’exemple suivant :

    <tomcat-users>
        <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/>
    </tomcat-users>
    
  2. Ajoutez vos informations d’identification au fichier maven ~/.m2/settings.xml à l’aide de l’exemple suivant, où vous remplacez your-tomcat-username par un nom d’utilisateur et your-tomcat-password par un mot de passe :

    <servers>
        <server>
            <id>TomcatServer</id>
            <username>your-tomcat-username</username>
            <password>your-tomcat-password</password>
        </server>
    </servers>
    
  3. Utilisez la commande suivante pour empaqueter et déployer votre application web :

    mvn clean package cargo:deploy
    

Après le déploiement, vous pouvez accéder à votre application à l’adresse http://localhost:8080/simple-tomcat-app.

Option 2 : Créer un projet Maven Tomcat à partir de zéro

Pour créer un projet Maven Tomcat à partir de zéro, vous utilisez plusieurs procédures, en commençant par créer le projet Maven et en terminant par le déploiement de votre application web sur Tomcat.

Créer un projet Maven

Pour créer un projet Maven pour votre application web Java, utilisez la commande suivante :

mvn archetype:generate \
    -DgroupId=com.example \
    -DartifactId=simple-tomcat-app \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false

La sortie suivante est classique :

[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /home/XXXXXXXX/LearnProjects/simple-tomcat-maven-app
[INFO] Parameter: package, Value: com.microsoft.azure.samples
[INFO] Parameter: groupId, Value: com.microsoft.azure.samples
[INFO] Parameter: artifactId, Value: azure-javaweb-app-simple
[INFO] Parameter: packageName, Value: com.microsoft.azure.samples
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /private/tmp/TMP/azure-javaweb-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.657 s
[INFO] Finished at: 2024-10-18T12:39:41-07:00
[INFO] ------------------------------------------------------------------------

Vous disposez maintenant d’un nouveau projet web Maven dans un dossier nommé simple-tomcat-app. Les fichiers et répertoires suivants sont maintenant disponibles :

└── simple-tomcat-app
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   ├── resources
        │   └── webapp
        │       ├── index.jsp
        │       └── WEB-INF
        │           └── web.xml
        └── test
            ├── java
            └── resources

Modifier le fichier Maven pom.xml

Modifiez le fichier pom.xml en procédant comme suit :

  1. Ouvrez pom.xml et définissez la version Java sur 21 à l’aide de l’exemple suivant :

    <java.version>21</java.version>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    
  2. Ajoutez des plug-ins de déploiement Tomcat et Azure à l’aide de l’exemple suivant :

    <!-- Tomcat 10 Maven Plugin -->
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven3-plugin</artifactId>
      <version>1.9.9</version>
      <configuration>
        <!-- Container Configuration -->
        <container>
          <containerId>tomcat10x</containerId>
          <type>remote</type>
        </container>
        <!-- Configuration for Remote Deployment -->
        <configuration>
          <type>runtime</type>
          <properties>
            <cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri>
            <cargo.remote.username>cargo</cargo.remote.username>
            <cargo.remote.password>your-cargo-password</cargo.remote.password>
          </properties>
        </configuration>
        <!-- Deployable Artifact Configuration -->
        <deployables>
          <deployable>
            <groupId>${project.groupId}</groupId>
            <artifactId>${project.artifactId}</artifactId>
            <type>war</type>
            <properties>
              <context>${project.artifactId}</context>
            </properties>
          </deployable>
        </deployables>
      </configuration>
    </plugin>
    

Voici le contenu complet du fichier pom.xml :

<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>simple-tomcat-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>simple-tomcat-app</name>
  <properties>
    <java.version>21</java.version>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>6.0.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>simple-tomcat-app</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.10.1</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>
      <!-- Tomcat 10 Maven Plugin -->
      <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven3-plugin</artifactId>
        <version>1.9.9</version>
        <configuration>
          <!-- Container Configuration -->
          <container>
            <containerId>tomcat10x</containerId>
            <type>remote</type>
          </container>
          <!-- Configuration for Remote Deployment -->
          <configuration>
            <type>runtime</type>
            <properties>
              <cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri>
              <cargo.remote.username>cargo</cargo.remote.username>
              <cargo.remote.password>your-cargo-password</cargo.remote.password>
            </properties>
          </configuration>
          <!-- Deployable Artifact Configuration -->
          <deployables>
            <deployable>
              <groupId>${project.groupId}</groupId>
              <artifactId>${project.artifactId}</artifactId>
              <type>war</type>
              <properties>
                <context>${project.artifactId}</context>
              </properties>
            </deployable>
          </deployables>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Créer une interface web

Pour ajouter une page web, modifiez le fichier src/main/webapp/index.jsp à l’aide de l’exemple suivant :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Simple Tomcat App</title>
</head>
<body>
    <h1>Welcome to the Simple Tomcat App</h1>
    <form action="hello" method="get">
        <label for="name">Enter your name:</label>
        <input type="text" id="name" name="name">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

Créer un servlet

Un servlet est une classe de programmation Java utilisée pour étendre les fonctionnalités d’un serveur en gérant les requêtes et en générant du contenu dynamique. Les servlets s’exécutent côté serveur dans un conteneur web( par exemple Apache Tomcat) et sont principalement utilisés pour traiter les requêtes HTTP dans les applications web. Lorsqu’un client( par exemple, un navigateur web) envoie une demande à un serveur web, le servlet traite la requête. Le servlet effectue toute logique métier nécessaire , par exemple, l’accès aux bases de données ou l’appel d’autres services, puis génère une réponse ( souvent sous la forme html) pour renvoyer au client. Servlets permettent aux développeurs de créer des applications web dynamiques indépendantes de la plateforme à l’aide de Java.

Pour créer un servlet, procédez comme suit :

  1. Mettez à jour la structure de fichiers pour ajouter un servlet à l’aide de la commande suivante :

    mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.java
    
  2. Mettez à jour le contenu du fichier HelloSeverlet.java à l’aide de l’exemple de code suivant :

    package com.example;
    
    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;
    
    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String name = request.getParameter("name");
            response.setContentType("text/html");
            response.getWriter().write("<h1>Hello, " + name + "!</h1>");
        }
    }
    

Votre nouvelle structure de fichiers ressemble à ceci :

└── simple-tomcat-app
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   │   └── com
        │   │       └── example
        │   │           └── HelloServlet.java
        │   ├── resources
        │   └── webapp
        │       ├── index.jsp
        │       └── WEB-INF
        │           └── web.xml
        └── test
            ├── java
            └── resources

Déployer localement sur Tomcat

Procédez comme suit pour configurer votre serveur Tomcat local afin de pouvoir le déployer :

Avertissement

Le stockage de noms d’utilisateur et de mots de passe directement dans des fichiers de configuration tels quetomcat-users.xml et les settings.xml de Maven en texte brut n’est pas sécurisé et n’est généralement pas recommandé, en particulier pour les environnements de production. Toutefois, d’autres alternatives sont en dehors de l’étendue de ce module de formation. N’utilisez pas votre vrai nom d’utilisateur et votre mot de passe !

  1. Modifiez la conf/tomcat-users.xml du fichier de configuration Tomcat à l’aide de l’exemple suivant :

    <tomcat-users>
        <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/>
    </tomcat-users>
    
  2. Ajoutez vos informations d’identification au fichier settings.xml~/.m2/ de Maven à l’aide de l’exemple suivant, en remplaçant your-tomcat-username par un nom d’utilisateur et your-tomcat-password un mot de passe :

    <servers>
        <server>
            <id>TomcatServer</id>
            <username>your-tomcat-username</username>
            <password>your-tomcat-password</password>
        </server>
    </servers>
    

Déployer votre application web sur Tomcat

Utilisez la commande suivante pour empaqueter et déployer votre application web :

mvn clean package cargo:deploy

Une fois le déploiement effectué, votre application est disponible à l’adresse http://localhost:8080/simple-tomcat-app.