TP2 : Etude des servlets

De $1

Version de 17:14, 29 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Ce TP est consacré à l'étude des servlets. Nous allons étudier des exemples en Java EE 5 (où de nombreux éléments sont indiqués dans le descripteur web.xml, comme le mapping des servlets sur des URLs), mais aussi des exemples en Java EE 6 où les annotations de code sont omniprésentes.

Etude d'un projet contenant de nombreux exemples J2EE 1.4

Oui, il s'agit d'exemples en J2EE 1.4 (l'ancêtre de Java EE 5, lui-même ancêtre de Java EE 6 !). Ils sont toujours d'actualité, les seules choses qui peuvent changer en Java EE 6 sont les annotations de code qui permettraient de se passer d'une partie de ce qui est spécifié dans le descripteur web.xml (nous allons l'étudier un peu plus tard...)

Ouverture du projet

Sous netbeans, faites file/nouveau projet, puis choisissez dans les exemples le projet suivant :

Snap1.jpg

Cela va ouvrir dans netbeans un projet Java web contenant de nombreux exemples :

Snap3.jpg

Lancer le projet, tester les exemples, regarder le code source

Faites clic droit / run sur le projet, cela va ouvrir une page avec la liste des exemples de servlets que vous allez étudier. Regardez l'exécution, les URLs, et le code source.

Regardez aussi le vrai code source des servlets (dans le package par défaut, sous "src").

Notez au passage la manière dont l'aspect "multi-langue" est géré (à l'aide de fichiers de propriétés et de la classe ResourceBundle) :

 

ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.getLocale());

Cette ligne indique que l'on ira chercher les "ressources" dans un fichier LocalStrings.properties par défaut, contenant des couples clé=valeur. Selon la langue du système, on ira chercher dans un fichier LocalStrings_fr.properties, LocalStrings_es.properties, LocalStrings_en.properties, etc le fichier de base étant celui par défaut.

Puis ensuite, lorsqu'on veut manipuler une chaine de caractères pour l'affichage : 

String title = rb.getString("helloworld.title");

On retrouvera la valeur de cette chaîne de caractère dans le fichier LocalStrings_fr.properties si on est en français. Double cliquez sur le nom du fichier pour voir son contenu :

 

helloworld.title=Salut le Monde!

requestinfo.title=Exemple d''information sur la requête
requestinfo.label.method=Méthode:
...

Regardons la partie "servlets" du fichier de configuration web.xml

Double cliquez sur le fichier web.xml qui se trouve sous "configuration". Netbeans doit ouvrir une "vue" de ce fichier, vous pouvez en cliquant sur le bouton "XML" passer à la vue XML du fichier. Il contient de nombreuses informations. Pour le moment, nous allons nous intéresser à la partie "servlets", notamment au mapping entre les servlets et les URLs qui permettent de les invoquer.

Vue "servlet" du fichier web.xml :

Snap5.jpg

 Comme vous pouvez le voir, on peut utiliser des expressions régulières pour associer non pas un URL à une servlet, mais aussi plusieurs ! Ici la servlet RequestInfoExample est associée à tous les URLs de type /servlet/RequestInfoExample/*

Executez donc cet exemple, et modifiez l'URL, par exemple en ajoutant "toto" à la fin :

Snap6.jpg

Regardez dans le source comment on peut récupérer le "/toto". Cet exemple montre comment on peut par exemple, développer une Servlet qui utilise l'URL complet pour un paramètre permettant par exemple d'aller chercher "toto" dans une base de données. Imaginez : http://www.monsite.com/disques/Beatles/AbbeyRoad, et une unique servlet "disques" qui saura à partir de cet URL aller chercher le disque "Abbey Road" des Beatles dans sa base de données.

Modification de la page d'accueil par défaut du projet

Lorsqu'on exécute le projet il affiche la page par défaut du projet. On peut préciser quelle est cette page dans le descripteur web.xml, on peut même en indiquer plusieurs (si la première n'existe pas, c'est la seconde qui sera utilisée, etc.). Par défaut, c'est la page index.html qui est affichée. Les pages web se situent sous "Web Pages" dans la structure de projets de netbeans. 

  1. Modifiez maintenant cette page pour que cela soit le fichier reqinfo.html qui soit affiché par défaut (on doit voir le source de l'exemple du screenshot précédent s'afifcher),
  2. Modifiez maintenant la page par défaut pour que cela soit la servlet HelloWorldExample qui soit affichée (cela doit afficher non pas le source mais l'exécution de la servlet, soit le message "Salut le monde !"

NOTE : il se peut que vous deviez faire shift-reload sur votre navigateur pour que la page s'affiche réellement, cela dépend des navigateurs et des options de cache.