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
tomcat4 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
tomcat4 stop
Vérifier que le serveur a correctement démarré en accédant depuis un
navigateur à l'URL http://localhost:8180/. 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
Dans le répertoire d'installation (MY_CATALINA_HOME), créer une nouvelle application web de nom TDbasic revient à créer un nouveau répertoire sous webapp, soit ${MY_CATALINA_HOME}/webapp/TDbasic). À l'intérieur de ce répertoire TDbasic, créer un sous-répertoire WEB-INF qui contient lui-même un sous répertoire classes. S'inspirer de l'architecture de la webapp d'exemple ~/MY_CATALINA_HOME/webapp/examples.
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 ~/MY_CATALINA_HOME/common/lib/servlet.jar:. Bonjour.javavérifier qu'elle fonctionne en accédant dans un navigateur à l'URL
http://localhost:8180/TDbasic/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 TDbasic (dans webapp/TDbasic/WEB-INF/web.xml) en ne conservant que les éléments nécessaires et en les modifiant de sorte que :
http://localhost:8180/TDbasic/servlet/Bonjour http://localhost:8180/TDbasic/servlet/bonjour http://localhost:8180/TDbasic/hello
En fonction de la version de Tomcat dont vous disposez, vous pouvez essayer d'arrêter, de redémarer ou de recharger une webapp. Pour cela, consulter la documentation concernant l'application Manager; vous pourrez être ammenés à modifier les répertoires et les fichiers dans MY_CATALINA_HOME et à créer des copies de certains fichiers plutôt que des liens symboliques, en particulier dans le répertoire conf.
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:8180/TDbasic/hello.
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é.
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é