TP 4 Synchronisation D'une Nouvelle Donnée Entre Les Servlets Et Les JSP
TP 4 Synchronisation D'une Nouvelle Donnée Entre Les Servlets Et Les JSP
TP 4 Synchronisation D'une Nouvelle Donnée Entre Les Servlets Et Les JSP
AZROUMAHLI
Pour ce TP, nous utilisons la solution « JEE_DEMO3.rar ». Vous pouvez se guider par le fichier « JEE_DEMO4_Code_Snippets.pdf »
disponible sur Teams volet (S2-JEE).
Après l’extraction de « JEE_DEMO3.rar ». Dans l’IDE Eclipse, copier les fichiers dans l’emplacement du projet « JEE_DEMO »
Modifier les parameter de projet web : proprieties >Web Project Settings.
Redémarrer le serveur et exécuter le projet pour vérifier la configuration de l’application.
Noter bien, la nouvelle arborescence de votre projet : le contenu de « src/main/java », de « webapp/ressources » et de
« webapp/WEB-INF/Views »
Pour ce TP on nous allons seulement vérifier si les valeurs sont nulles. En réalité, vous pouvez ajouter toutes les conditions
dont votre application a besoin.
Mettre un attribut errors (attribut de la requête HttpRequest) à faux :
o Ouvrir le fichier « com.emsi.Controllers/Contact.java » qui contient la classe Contact
o Dans la méthode doPost(), avant de tester la validité des données nous allons Ajouter la méthode :
request.setAttribute("errors", false);
Utiliser la méthode setAttribute de l’objet httpRequest pour enregistrer les erreurs d’un formulaire :
o Zoomer sur les paramètres un à un en ajoutant des attributs d’erreur spécifique pour chaque erreur :
Redémarrer le serveur et exécuter le projet pour vérifier la configuration de l’application, qu’est-ce que vous remarquez ?
Comment pouvons-nous résoudre ce problème ? (Indication : modifier l’attribut errors dans la méthode doget()).
………………………………………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………………………………………
Dans le cas où aucune erreur est soulevée, enregistrez les données saisies par l’utilisateur :
o Ouvrir le fichier « com.emsi.Controllers/Contact.java » qui contient la classe Contact.
o Avant le constructeur public Contact(){} ajouter l’attribut contactMsg un objet de type ContactDob :
o Dans la méthode doPost(), dans la partie else() de la partie de validation des données, utiliser les setters de la
classe ContactDob pour sauvegarder les données saisies par l’utilisateurs :
Page 2 sur 3
4IIR : Outils de développement 3 - JEE Pr. C. AZROUMAHLI
Etape 5 : Création d’une servletListner
L’écouteur servletListner est un objet qui va garder les informations des objets manipuler dans le context, lors de
l'exécution de l’application. Ce contexte est actif tant que l’application est en cours d’exécution
Créer un objet présentant le contexte de la servlet :
o Ouvrir le fichier « com.emsi.Controllers/Contact.java » qui contient la classe Contact.
o Avant la redirection vers la servlet Index, ajouter la déclaration du ServletContext :
ServletContext sc=this.getServletContext();
Au lieu de créer à chaque fois une nouvelle liste (ArrayList<ContactDob> msgList = new ArrayList<ContactDob>()), nous
allons récupérer la liste existante à partir du contexte de la servlet. De cette manière si la liste existe déjà alors nous allons
ajouter à cette liste et non la remplacer.
La première fois un formulaire est soumis, la liste est vide ! C’est-à-dire que l’attribut msgList n’est pas encore définit dans
le contexte de la servlet ! Ainsi ArrayList<ContactDob> msgList = (ArrayList<ContactDob>) sc.getAttribute("msg"); égale
à NULL.
Faites attention que le servlet utilise la bibliothèque jakarta. Si non, changer la bibliothèque javax par jakarta.
Ici, le Listner est Lifecycle Listner dans les événements de contexte de servlet (Servlet context events). Le
contexte de la servlet va être créé et ce Listner va écouter la création du contexte de servlet lorsque l’application
démarre la première fois.
Ajouter les deux méthodes : contextInitialized(…) et contextDestroyed(…) de cette interface.
o Dans le fichier « com.emsi.controllers/EmsiListner.java», après le constructeur, ajouter les deux méthodes
public void contextInitialized(ServletContextEvent event) {…}
public void contextDestroyed(ServletContextEvent event) {…}
La méthode contextInitialized(ServletContextEvent event) est utilisée quand le contexte de servlet vient d’être créé.
Configurer le Listner « EmsiListner » :
o À l’appel de l’initialisation du context, demander à event le contexte de la servlet.
o Créer la liste des messages saisies par les utilisateurs de l’application : msgList
o Si la liste est vide (c’est-à-dire première fois l’application est déployée et premier formulaire a été soumis), créer
une nouvelle liste des messages vides. Et ajouter la nouvelle liste dans le contexte de l’application.
ArrayList<ContactDob> msgList = (ArrayList<ContactDob>) sc.getAttribute("msgs");
if(msgList==null) {
System.out.println("Création d'un nouvelle liste des messages");
msgList=new ArrayList<ContactDob>();
sc.setAttribute("msgs", msgList);
}
Redémarrer le serveur et exécuter le projet pour vérifier la configuration de l’application.
Page 3 sur 3