Cours Partie 4 Spring MVC par l’exemple

Rappels

Nous pour suivons dans cet article le travail fait dans les précédents articles:
• Spring MVC par l’exemple–partie 1: [http://tahe.developpez.com/java/springmvc-part1]
• Spring MVC par l’exemple–partie 2: [http://tahe.developpez.com/java/springmvc-part2]
• Spring MVC par l’exemple–partie 3: [http://tahe.developpez.com/java/springmvc-part3]

Spring MVCdansune architecture 3tier – Exemple 1

Présentation

Jusqu’à maintenant, nous nous sommes contentés d’exemples à visée pédagogique. Pour cela, ils se devaient d’être simples.
Nous présentons maintenant, une application basique mais néanmoins plus riche que toutes celles présentées jusqu’à maintenant. Elle aura la particularité d’utiliser les trois couches d’une architecture 3tier :
L’application web correspondante va permettre de gérer un groupe de personnes avec quatre opérations :
• liste des personnes du groupe
• ajout d’une personne au groupe
• modification d’une personne du groupe
• suppression d’une personne du groupe

Le projet Eclipse / Tomcat

Le projet de l’application s’appelle [spring-mvc-37] :
• la couche [dao] est contenue dans le paquetage [istia.st.springmvc.personnes.dao]
• la couche [metier] ou [service] est contenue dans le paquetage [istia.st.springmvc.personnes.service]
• la couche [web] ou [ui] est contenue dans le paquetage [istia.st.springmvc.personnes.web]
• le paquetage [istia.st.springmvc.personnes.entites] contient les objets partagés entre différentes couches
• le paquetage [istia.st.springmvc.personnes.tests] contient les tests Junit des couches [dao] et [service]

La représentation d’une personne

L’application gère un groupe de personnes. Les copies d’écran page 3 ont montré certaines des caractéristiques d’une personne.
Formellement, celles-ci sont représentées par une classe [Personne] :
• une personne est identifiée par les informations suivantes :
• id : un n° identifiant de façon unique une personne
• nom : le nom de la personne
• prenom : son prenom
• dateNaissance : sa date de naissance
• marie : son état marié ou non
• nbEnfants : son nombre d’enfants
• l’attribut [version] est un attribut artificiellement ajouté pour les besoins de l’application. D’un point de vue objet, il aurait été sans doute préférable d’ajouter cet attribut dans une classe dérivée de [Personne]. Son besoin apparaît  lorsqu’on fait des cas d’usage de l’application web. L’un d’entre-eux est le suivant :
Au temps T1, un utilisateur U1 entre en modification d’une personne P. A ce moment, le nombre d’enfants est 0.
Il passe ce nombre à 1 mais avant qu’il ne valide sa modification, un utilisateur U2 entre en modification de la même personne P. Puisque U1 n’a pas encore validé sa modification, U2 voit le nombre d’enfants à 0. U2 passe le nom de la personne P en majuscules. Puis U1 et U2 valident leurs modifications dans cet ordre. C’est la modification de U2 qui va gagner : le nom va passer en majuscules et le nombre d’enfants va rester à zéro alors même que U1 croit l’avoir changé en 1.

La couche [dao]

La couche [dao] est constituée des classes et interfaces suivantes :
• [IDao] est l’interface présentée par la couche [dao]
• [DaoImpl] est une implémentation de celle-ci où le groupe de personnes est encapsulé dans un objet [ArrayList]
• [DaoException] est un type d’exceptions non contrôlées (unchecked), lancées par la couche [dao]
L’interface [IDao] est la suivante :
1. package istia.st.springmvc.personnes.dao;
2.
3. import istia.st.springmvc.personnes.entites.Personne;
4.
5. import java.util.Collection;
6.
7. public interface IDao {
8. // liste de toutes les personnes
9. Collection getAll();
10. // obtenir une personne particulière
11. Personne getOne(int id);
12. // ajouter/modifier une personne
13. void saveOne(Personne personne);
14. // supprimer une personne
15. void deleteOne(int id);
16. }

Cours Spring MVC par l'exemple

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *