Programmation des Réseaux avec Java

Servlettes avec Tomcat

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

Tomcat, le serveur de servlettes et de JSP du projet Jakarta, est déjà "installé" sur le serveur de vos comptes, mais nécessite de créer un répertoire sur vos machines. Au premier lancement de la commande
tomcat start
un répertoire MY_CATALINA_HOME est créé sur votre compte.

Important : vous n'oublierez pas avant de vous déloger d'arrêter le serveur avec la commande
tomcat stop

Vérifier que le serveur a correctement démarré en accédant depuis un navigateur à l'URL http://localhost:8080/. Testez les exemples de servlettes et de JSP. Accédez également à la documentation, et en particulier aux javadoc des API des servlettes et des JSP.

Exercice 2 - La servlette qui dit bonjour

La documentation qui est accessible lorsque le serveur tourne (http://localhost:8080/tomcat-docs/) décrit des bonnes pratiques de développement et de déploiement des applications web. En particulier, elle préconise de stocker les "sources" de développement dans un répertoire différent de celui qui est utilisé par Tomcat pour "servir" l'application Web correspondante. Le "passage" entre répertoire de développement et le répertoire d'"exploitation", ainsi que toutes les phases de compilation, pourront être prises en charge par l'outil ant à l'aide d'un fichier build.xml dont la trame est donnée dans la documentation.

  1. En guise de répertoire de développement, créez un répertoire TDbasic sur votre compte (ailleurs que dans le répertoire MY_CATALINA_HOME. Dans ce répertoire, créez trois répertoires (comme décrit dans la section 3) First webapp du guide utilisateur de la documentation).
  2. Dans le répertoire TDbasic/web/WEB-INF/, copiez le fichier d'exemple de configuration qui est fourni par la documentation web.xml, et modifiez le afin d'associer d'une part, le nom de servlette bonjour à la classe fr.umlv.ttt.servlet.Bonjour (en utilisant un élément <servlet>), et d'autre part le nom de servlette bonjour au pattern URL /hello (en utilisant un élément <servlet-mapping>) ;
  3. Dans le répertoire TDbasic/web, créer un fichier d'accueil index.html qui propose un lien permettant d'accéder à la servletvia son nom /hello ;
  4. Dans le répertoire TDbasic/src, créer le fichier contenant le source Java : TDbasic/src/fr/umlv/servlet/tdbasic/Bonjour.java (inspirez vous des exemples pour le code) ;
  5. Pour pouvoir compiler ce source, de même que pour pouvoir réaliser toutes les opérations de déploiement, copiez à la racine du répertoire TDbasic le fichier de configuration ant donné en exemple dans la documentation build.xml, et modifiez le pour l'adapter à votre cas (les principales modifications concernent le manager : voir la partie Custom Ant Task Definition)
  6. Vérifier que votre configuration est correcte en faisant des compilations, installations, suppressions, etc. (la liste des cibles de ant est obtenue par ant -projecthelp).

Exercice 3 - Configuration de l'application Web et instances de servlettes

À partir du fichier Bonjour.java, créer une nouvelle classe Java TDbasic/src/fr/umlv/servlet/tdbasic/SimpleCounter.java en ajoutant un champ count (initialisé à 0) qui compte le nombre de fois où la servlette a été appelée (incrémentée dans la méthode doGet()).

  1. Modifier le contenu de la page retournée par la servlette afin de visualiser ce nombre.
  2. Dans le fichier web.xml, créer deux nouveaux éléments <servlet>, l'un de nom compteurA et l'autre de nom compteurB, tous les deux associés à la classe fr.umlv.servlet.tdbasic.SimpleCounter.java.
  3. Par ailleurs, créer quatre éléments <servlet-mapping> : associer les URL /compteA et /compteAbis au nom de servlette compteurA, et les URL /compteB et /compteBbis au nom de servlette compteurB.
  4. Mettre à jour le fichier index.html pour qu'il permette d'accéder à ces différents URLs, et tester l'évolution des différents compteurs. Qu'en déduisez vous sur l'existance des instances de servlettes.

Exercice 4 - 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 à sauvegarder la valeur du compteur dans un fichier. Ce peut être fait à chaque fois que ce nombre est modifié ou bien lorsque la servlette est arrêtée.

Tester ces fonctionalités.

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 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 © Université de Marne-La-Vallée - Mars 2006