TD de Programmation Orientée Objet Introduction à Struts

  • Objectifs : ce TP a pour objectif de vous familiariser avec le framework d'application Web MVC : Struts
Il s’agit d’écrire une application Web pour la consultation de notes d’étudiants (voir TP précédents). Une première fonctionnalité qui permet de visualiser l’histogramme des notes pour une matière et une année donnée a été élaborée et vous est fournie. Votre travail va consister à doter cette application de nouvelles fonctionnalités :
  • l'affichage de toutes les notes d'un étudiant pour une année donnée,
  • l'affichage de toutes les notes d'un étudiant pour une matière donnée.
Les notes des étudiants sont stockées dans une base de données dont le schéma définit trois tables (voir figure 1) :
La table ETUDIANTS définie par quatre colonnes :
• NUMERO_ETUDIANT, un entier, le numéro de l’étudiant (identifiant unique)
• NOM, une chaîne de caractères, le nom de famille de l’étudiant,
• PRENOM, une chaîne de caractères, le prénom de l’étudiant,
• DATE_NAISS, une date, la date de naissance de l’étudiant.
La table MATIERES définie par deux colonnes :
• CODE_MATIERE, une chaîne de caractères qui correspond à un code unique pour chaque matière
• INTITULE, une chaîne de caractères qui correspond à l’intitulé de la matière.
La table NOTES définie par quatre colonnes
• NUMERO_ETUDIANT, un entier qui correspond à un numéro d’étudiant défini dans la table ETUDIANTS
• CODE_MATIERE, une chaîne de caractères qui correspond à un code de matière défini dans la table MATIERES
• ANNEE, un entier qui correspond à une année
• NOTE, un entier qui correspond à la note obtenue par l’étudiant pour cette matière à l’année donnée.

 
Exercice 1 : Tester l’application existante
  1. Téléchargez le fichier NotesStruts-V1.zip qui contient l’application de consultation des histogrammes de notes sous la forme d’un projet NetBeans et décompressez cette archive.
  2. Lancez NetBeans et ouvrez le projet NotesStruts-V1 que vous venez de télécharger
  3. Configurez ce projet de manière à ce qu’il utilise vote base de test comme source de données. Pour cela modifiez le fichier de configuration context.xml afin que la source de données définie corresponde à votre base de données.
  4. Testez le bon fonctionnement de cette application.

Exercice 2 : Consultation des notes pour un étudiant et une année donnés
Il s’agit d’ajouter une fonctionnalité qui permet pour un étudiant donné de consulter les notes qu’il a obtenues dans les différentes matières pour une année donnée, comme le montre l’écran ci-dessous.
1) Création d'une classe ActionFormBean
Il s'agit d'écrire une classe ActionFormBean qui permettra de récupérer et valider les données du formulaire.
  1. Ouvir de l'assistant de création de fichiers (New->File) et sélectionner la catégorie Struts et le type de fichier Struts ActionForm Bean

     
  2. Indiquer le nom de la classe (NotesEtudAnneeActionForm) et son package (pl2.notes.struts.forms)

     
  3. Modifier le code de la classe NotesEtudAnneeActionForm afin qu'elle :
    • définisse deux attributs correspondant aux champs du formulaire (Attention le nom de ces attributs doit être identique à celui paramètres du formulaire),
    • définisse les méthodes get... et set... correspodant à ces attributs,
    • redéfinisse la méthode validate afin qu'elle teste la validité des attributs et dans le cas contraire retourne un message d'erreur correspondant :
      • l'année n'est pas une chaîne vide et est un nombre
      • le numéro d'étudiant n'est pas une chaîne vide et est un nombre.
      Pour ce faire vous pourrez vous appuyer sur ce qui a été fait pour la classe HistogrammeNotesActionForm associé au formulaire de sasie de l'année et de la matière pour produire un histogramme de notes. Les messages d'erreurs sont définis dans le fichier ApplicationRessources.properties (package pl2.notes). Ceux pour la validté de la note sont identiques à ceux utilisés dans la classe NotesAnneeMatiereActionForm, par contre vous devrez y rajouter les messages concernant la validité du numéro d'étudiant.
2) Création d'une classe Action
Il s'agit d'écrire une classe Action vers laquelle le contrôleur générique de Struts redirigera la requête lorsque l'utilisateur soumet le formulaire permettant de sélectionner le numéro de l'étudiant et l'année.
  1. Ouvir de l'assistant de création de fichiers (New->File) et sélectionner la catégorie Struts et le type de fichier Struts Action
     
  2. Indiquer le nom de la classe (NotesEtudAnne), son package (pl2.notes.struts.actions) et son path (/notesEtudAnnee)
     
  3. Associer à cette classe l'ActionFormBean créé précédemment et qui servira à récupérer et valider les paramètres du formulaire.
     
  4. Modifier le code de la classe NotesEtudAnnee en redéfinissant la méthode execute afin qu'elle :
    • construise une objet Etudiant correspondant au numéro d'étudiant fourni par le formulaire en utilisant un objet IEtudiantDAO (le code est similaire au code l'actionHistogrammeNotesAction dont vous pourrez vous inspirer)
    • si l'étudiant n'existe pas il faut, comme pour la méthode validate de NotesEtudAnneeForm, définir un message d'erreur et faire en sorte que votre rédigire vers la page du formulaire. Le code correspondant est le suivant :
      // création du (des) message(s) d'erreur
      ActionMessages errors = new ActionMessages();
      errors.add("error.etud", new ActionMessage("error.etud.notfound"));
      // sauve les messages d'erreur comme attribut de la requête avec comme clé Action.ERROR_KEY
      saveErrors(request, errors);
      // retour vers la page du formulaire (en fait vers l'input défini 
      // dans la description de l'action dans le fichier struts-config.xml)
      return mapping.getInputForward();
    • sinon construire pour cet étudiant la liste de ses notes pour l'année donnée (la méthode correspondnate est déjà définie dans la classe IEtudiantDAO, il vous suffit de l'appeler) et rediriger vers la page tableauNotesEtudAnnee.jsp. Pour cela, il vous faudra modifier le fichier de configuration struts-config.xml afin que la clé que vous utilisez dans l'instruction mapping.FindForward() dans le code de votre classe NotesEtudAnnee soit associée à la ressource tableauNotesEtudAnnee.jsp. Pour faire cette ajout dans le fichier struts-config.xml :
      1. ouvrir le fichier struts-config.xml, effectuer un clic droit et choisir l'item Add Forward
            Précisez le nom du forward (qui doit être le même que celui utilisé dans votre code), le nom de la ressource cible et l'action associée (qui doit être l'action notesEtudAnneeque vous venez de créer)
      2. Vérifer que le forward a correctement été ajouté à la description de votre action dans le fichier struts-config.xml
3) tester la fonctionnalité

Exercice 3 : Consultation des notes pour un étudiant donné et une matière donnée.
Il s’agit d’ajouter une fonctionnalité qui permet pour un étudiant donné de consulter les notes qu’il a obtenues dans une matière donnée au cours des différentes années.

Vous contruirez une page formulaireEtudiantMatiere.jsp et une page tableauEtudMatiere.jsp en vous inspirant des pages des fonctionnalités déjà définies. Ensuite vous créerez un bean de validation du formulaire NotesEtudMatiereActionForm et une action NotesEtudMatiere sur le modèle de ce qui a eté fait dans l'exercice 2.

Aucun commentaire:

Enregistrer un commentaire

commenatires

Les Outils Important