Programmation Orientée Objet et Réseau en Java

TD 6

Nous abordons ici la mise en oeuvre et le fonctionnement des servlettes en Java, ainsi que la configuration des applications web (webapp) qui les hébergent.

Exercice 1 - Installation de Tomcat

Installer Tomcat, le serveur de servlettes et de JSP du projet Jakarta. Pour cela, il suffit de télécharger l'archive disponible à la page http://www-igm.univ-mlv.fr/~roussel/JAKARTA/
et de suivre les indications données par cette page.

Vérifier que le serveur démarre correctement et tester quelques uns des exemples disponibles. Accédez également à la documentation des API de la version 2.2 des servlettes.

Exercice 2 - La servlette qui dit bonjour

Dans le répertoire d'installation (disons JAKARTA_HOME), créer une nouvelle application web de nom td6 revient à créer un nouveau répertoire sous webapp, soit ${JAKARTA_HOME}/webapp/td6). À l'intérieur de ce répertoire td6, créer un sous-répertoire WEB-INF qui contient lui-même un sous répertoire classes.

Dans le répertoire classes, écrire une classe servlette Bonjour héritant de la classe javax.servlet.http.HttpServlet. Cette classe doit redéfinir la méthode doGet() de sorte qu'elle écrive, sur le flot de sortie associé à la réponse, une page HTML contenant "Bonjour" écrit en gras. Après avoir compilé ce source par

javac -classpath ${JAKARTA_HOME}/lib/servlet.jar:. Bonjour.java
vérifier qu'elle fonctionne en accédant dans un navigateur à l'URL
http://localhost:8080/td6/servlet/Bonjour

Exercice 3 - Configuration de l'application Web

En vous inspirant du fichier web.xml de la webapp examples, créer un fichier web.xml pour la webapp td6 (dans webapp/td6/WEB-INF/web.xml) en ne conservant que les éléments nécessaires et en les modifiant de sorte que :

Vérifier (après arrêt et relance de Tomcat) que la servlette est accessible par:
http://localhost:8080/td6/servlet/Bonjour
http://localhost:8080/td6/servlet/myServlet
http://localhost:8080/td6/hello

Exercice 4 - Instances de servlettes

Dans le fichier Bonjour.java, ajouter une variable d'instance count (initialisée à 0 qui compte le nombre de fois où la servlette a été appelée (incrémentée dans la méthode doGet()). Modifier le contenu de la page retournée par la servlette afin de visualiser ce nombre. Tester votre servlette avec le chemin http://localhost:8080/td6/hello.

  1. Créer dans l'élément <servlet-mapping> du fichier web.xml un second chemin, disons helloBis, associé au même nom de servlette que le chemin hello. Vérifier que une seule instance de la servlette existe, qu'elle soit accédée par les chemins hello ou helloBis.
  2. Créer maintenant dans l'élément <servlet> du fichier web.xml un second nom, disons myOtherServlet, associé à la même classe de servlette Bonjour. Associer ce nom de servlette à tous les URL de la forme *.hello. Vérifier que deux instances de la servlette existent.

Exercice 5 - Initialisation de servlettes

Si le serveur est arrêté puis redémarré, de nouvelles servlettes sont instanciées et leur compteur est donc réinitialisé à 0.

Pour permettre de conserver un historique, une solution consiste à sauver la valeur du compteur à chaque fois que ce nombre est modifié.

  1. Pour cela, la servlette doit tout d'abord récupérer le nom d'un fichier au moment de l'instanciation. Ce nom peut être précisé dans le fichier web.xml grâce à l'élément <init-param> (cf. web.xml de la webapp examples). La valeur de ce paramètre peut ensuite être récupérée dans la servlette, par redéfinition de la méthode init(ServletConfig config), via la méthode getInitParameter() sur l'instance de ServletConfig reçue en argument.
  2. Il faut ensuite modifier le contenu du fichier lors de chaque accès à la page (attention à la concurrence).

Exercice 6 - Utilisation de formulaire

Écrire un formulaire statique (une page HTML), permettant à un client de préciser un texte qu'il désire voir afficher après "Bonjour" dans la page retournée par votre servlette. Le champ de saisie sera initialisé à "moi" et le bouton de soumission du formulaire associé à votre servlette avec la méthode GET. Tester l'association.

Maintenant que votre servlette est associée au formulaire, modifier la méthode doGet() afin de récupérer le texte entré par le client. Pour cela, utiliser la méthode getParameter() de la l'instance de HttpServletRequest reçue en argument.

Modifier le formulaire et votre servlette afin d'accéder à cette fonctionnalité via la méthode POST.


Etienne.Duris[at]univ-mlv.fr - Rémi.Forax[at]univ-mlv.fr - Gilles.Roussel[at]univ-mlv.fr - © Université de Marne-La-Vallée - Novembre 2001