3. La servlet▲
3.1. 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 !!!"
);
}
}
3.2. Test du servlet▲
Notre servlet est écrite, TomCat est installé et configuré, il nous reste maintenant à tester.
3.2.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 estéthique
- 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
- et enfin le nom complet de notre classe
3.2.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
prends automatiquementen 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);
}