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.
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
<!-- 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.
<?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.
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.
<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.