Créer et déployer un premier servlet avec TomCat

LFE

Ce document est destiné à expliquer comment créer et déployer un premier servlet avec TomCat.
Ce servlet sera développé avec Eclipse.

- Titre : Créer et déployer un premier servlet avec TomCat

- Auteur : LFE

- Parution : 26 décembre 2002

- Mise à jour : 21 février 2020

- Licence : Ce document est issu de https://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- Avant-propos

- I. Installer et configurer TomCat

- I-A. Installation de TomCat

- I-B. Configuration

- I-C. Test de l'installation

- II. Configuration d'Eclipse

- III. La servlet

- III-A. Création

- III-B. Test du servlet

- III-B-1. Première méthode

- III-B-2. Seconde méthode

- IV. Déploiement final de la servlet

Avant-propos

Ce document est le fruit de l'écriture de mon premier servlet sous TomCat.
Je tiens à remercier tout particulièrement les correcteurs, aussi bien pour l'orthographe que sur les erreurs de fond.

Travaillant actuellement sous Windows, cet article est écrit en tenant compte principalement de cet OS. Toutefois, les modifications à apporter pour l'appliquer à Linux me semblent minimes et feront plus que probablement l'objet d'une mise à jour ultérieure.

La version de java utilisée est la J2SE 1.4.2_03.

L'EDI utilisé est Eclipse 2.1.2.

La version de TomCat que j'ai utilisée est la 4.1.29.

La première partie traitera de l'installation et de la configuration de TomCat.

La seconde partie traitera de la configuration d'Eclipse pour faciliter le développement des servlet TomCat.

La troisième partie traitera de la création et du test du servlet proprement dit.

La quatrième et dernière partie expliquera quant à elle, la mise en production du servlet.

I - Installer et configurer TomCat

I-A - Installation de TomCat

La première étape est de télécharger l'archive TomCat à l'adresse suivante : http://jakarta.apache.org/tomcat/index.html.

Ensuite, il faut simplement décompresser l'archive dans un répertoire. Dans le cas présent, TomCat sera installé dans le répertoire C:\TomCat.

I-B - Configuration

La variable d'environnement JAVA_HOME doit être configurée et désigner le répertoire d'installation du JDK.
La variable d'environnement CATALINA_HOME doit être configurée et désigner le répertoire d'installation de TomCat.
Sur mon poste de travail, JAVA_HOME désigne C:\J2SDK et CATALINA_HOME désigne C:\TomCat.

I-C - Test de l'installation

Avec l'explorateur, rendez-vous dans le répertoire c:\TomCat\Bin et exécutez le programme startup.bat. Une fenêtre telle que celle-ci devrait apparaître. Cette mise en route peut prendre quelques secondes.

Une fois ces messages affichés, ouvrez un navigateur et tapez l'URL suivante : http://localhost:8080. Si une fenêtre telle que celle qui suit apparaît, votre installation de TomCat est terminée.

Comme vous pouvez le constater, l'installation est tout à fait triviale.

II - Configuration d'Eclipse

La première chose à faire est de télécharger le plug-in TomCat de Sysdeo.

L'installation est tout à fait typique : décompressez l'archive dans le répertoire plugin d'Eclipse. Au prochain démarrage d'Eclipse, le plugin sera actif.

Sous Eclipse, il faut maintenant configurer le plugin. Dans le menu Fenêtres, Option Préférences, sélectionnez l'item TomCat et configurez les options version et répertoire de TomCat.

Dans la barre d'outils, nous remarquerons trois nouveaux boutons qui nous permettront de démarrer, arrêter ou redémarrer TomCat sans devoir quitter l'IDE, ce qui nous facilitera grandement la tâche.

III - La servlet

III-A - Création

Créez un nouveau projet Java, de type TomCat :

La structure suivante a été créée par l'assistant :

Créons maintenant la classe suivante dans le package com.developpez.tomcat et qui étend HttpServlet :

Nous devons maintenant surcharger la méthode doGet. La méthode la plus simple est de faire un clic droit sur la classe HttpServlet, de sélectionner l'option Source/Implémenter les méthodes et de sélectionner doGet dans la liste.
Le code est généré automatiquement, les imports ajoutés et cela sans risque d'erreur. De plus, cela évite de devoir taper le code.

Modifions le code.

surcharge de doGet

package com.developpez.tomcat;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
PrintWriter writer = res.getWriter();

writer.println("Hello World !!!");
}

}

III-B - Test du servlet

Notre servlet est écrite, TomCat est installé et configuré, il nous reste maintenant à tester.

III-B-1 - Première méthode

Cette méthode a le mérite de fonctionner, mais est à proscrire pour plusieurs raisons :

- trou de sécurité (nous pourrions exécuter n'importe quelle servlet) ;

- peu esthétique ;

- peut poser certains problèmes lors d'une mise en production.

Elle est donc présentée pour mémoire et surtout comme étant ce qui ne doit PAS être fait.

Dans le répertoire de configuration de TomCat, (c:\TomCat\conf), il faut trouver cette balise et la décommenter dans le fichier web.xml

activation de l'invoker du servlet

<!-- The mapping for the invoker servlet -->
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

C'est cette balise qui nous permet d'invoquer notre servlet.

Démarrons TomCat et entrons l'URL suivante dans un navigateur : http://localhost:8080/TestTomCat/servlet/com.developpez.tomcat.Test

Doit apparaître ce qui suit dans le navigateur :

Notons au passage comment est construite l'URL :

- l'URL permettant d'accéder à TomCat ;

- le nom de contexte, défini lors de la création du projet sous Eclipse ;

- le nom de mapping défini lors de la mise à jour du fichier web.xml ;

- le nom complet de notre classe.

III-B-2 - Seconde méthode

Cette méthode est celle qui doit être utilisée. Elle permet de garantir une certaine sécurité, permet d'avoir une URL lisible et correspond à ce qui doit se faire pour une mise en production.

Dans le projet, sous Eclipse créez un fichier web.xml dans le répertoire WEB-INF.

WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>TestTomcat</display-name>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>com.developpez.tomcat.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
</web-app>

Démarrons TomCat et entrons l'URL suivante dans un navigateur : http://localhost:8080/TestTomCat/Test

Doit apparaître la même chose que précédemment.

Nous pouvons constater que l'URL est nettement plus lisible.

Si nous effectuons maintenant une modification au code de la servlet et que nous la sauvegardons, nous pouvons constater que TomCat prend automatiquement en compte cette modification

Nous pouvons aussi surcharger la méthode doPost, de façon à répondre indifféremment suivant le mode d'interrogation du navigateur.

surcharge de la méthode doPost

protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {

doGet(arg0, arg1);
}

IV - Déploiement final de la servlet

Le déploiement de la servlet pour une mise en production est très simple. Il suffit de recopier le contenu du répertoire WEB-INF (à l'exception des sources bien sûr) dans le répertoire c:\TomCat\webapps\<le_nom_que_je_veux>.

Il faut aussi mettre à jour le fichier c:\tomcat\conf\server.xml afin de configurer le contexte pour tenir compte du servlet déployé et non de la configuration de développement.

mise à jour du contexte dans server.xml

<Context path="/TestTomCat" reloadable="true"
docBase="C:\TomCat\webapps\TestTomCat"
workDir="C:\TomCat\webapps\TestTomCat\work\org\apache\jsp" />

Lors du démarrage, TomCat le chargera automatiquement.