Ce TP est à rendre via spiral pour le 3/12/2010, 23h30. Il faut rendre un .zip contenant les deux projets maven (sans les répertoires target) ainsi que les fichiers SQL (éventuellement modifiés) des TPs précédents. Ne pas oublier de mentionner les deux étudiants du binôme.

Forum

L'objectif de ce TP est de réunir le travail des TP précédents dans une application Web Java de forum simplifié.

Mise en place

Télécharger, décompresser et ouvrir dans Netbeans le projet suivant: forum.zip. Ce projet est un embryon d'application Web Java. Pour exécuter le projet, depuis la ligne de commande, lancer mvn tomcat:run; depuis Netbeans, clic-droit → Custom → Run Tomcat.

L'application peut être visualisée à l'adresse suivante: http://localhost:8080/Forum.

Remarque

Le serveur web est démarré des que l'affichage suivant apparait:

INFO: Starting Coyote HTTP/1.1 on http-8080

Pour stopper le serveur, il faut arrêter l'exécution de Maven (carré rouge).

Remarque

Il peut être nécessaire:

  1. d'ajuster la dépendance présente dans le fichier pom.xml1) afin de refléter les déclarations du fichier pom.xml du projet du TP précédent;
  2. de compiler le projet du TP précédent afin de le rendre disponible pour le projet de l'application Forum.

Accueil

Les pages statiques sont placées dans Web Pages2). Modifier le fichier index.html pour remplacer le lien par un formulaire permettant de choisir l'identifiant de la salle.

Étude du projet

Si ce n'est déjà fait, étudier les différents fichiers fournis dans le projet. La classe SalleServlet contient une méthode processRequest qui est appelée lorsque le serveur Web veut afficher la page http://localhost:8080/Forum/SalleServlet. Comprendre le fonctionnement de cette méthode puis modifier celle-ci pour afficher un message de bienvenue. Modifier à nouveau le code de la méthode pour afficher une éventuelle action demandée par l'utilisateur, cette action étant passée comme la valeur du paramètre action de la page Web3).

Étudier également la documentation de la classe XQueryUtil, ainsi que le code des tests de XQueryTest.

Présentation XQuery

Créer un fichier simple.xq dans le répertoire src/main/resources et y placer la requête XQuery de la méthode processRequest. Changer le code de cette dernière pour utiliser ce fichier en utilisant executeResourceQuery au lieu de executeQuery.

Modifier la requête pour y intégrer un formulaire contenant les informations nécessaires à la création d'un message. Ce formulaire possédera un input caché4) nommé action dont la valeur sera creerMessage.

Données XML de la salle

Modifier processRequest pour:

  • Récupérer les données5) de la salle demandée au format XML. On pourra utiliser la vue définie au TP XML <-> Relationnel.
  • Modifier la requête simple.xq pour pouvoir transformer ces données en xhtml qui sera intégré à la page produite. On pourra pour cela s'inspirer des requêtes XQuery du premier TP.
  • Utiliser le XML fabriqué dans la requête SQL comme données pour la requête XQuery. On pourra pour cela s'inspirer du code de testXMLParams.

Ajout de message

Implémenter l'ajout de message6) dans processRequest. On utilisera pour cela la méthode de création de message du TP de mapping objet <-> relationnel.

Une fois le message ajouté, on affichera le contenu de la salle, avec en plus un message de confirmation de la création du message.

Pour finir ...

  • Implémenter (fomulaire + code métier) l'ajout de salle et de membre.
  • Faire les modifications nécessaires pour avoir un afichage des messages trié par date d'envoi.
  • Créer une variation thread.xq de la requête XQuery simple.xq qui fera un affichage arborescent par fil de discussion. Permettre de choisir7) le type d'affichage (par date ou par fil).
1)
situé dans Project Files
2)
i.e. le répertoire src/main/webapp
3)
on peut s'inspirer du traitement du paramètre id
4)
de type hidden
5)
i.e. le titre, les messages, etc.
6)
au cas où l'action est creerMessage
7)
via un paramètre de la page