<!-- Slide number: 1 -->
MVC
Principes de base
par: M.Abbou
<!-- Slide number: 2 -->
Plan
Introduction
MVC
MVC-Objectifs
Architecture MVC
Architecture MVC II
MVC-Web
MVC-Web 1tier: Exp d’Implémentation
MVC-Web 3tier: Exp d’Implémentation
Formation MVC-EMSI
05/06/2009
2
<!-- Slide number: 3 -->
Introduction
Le Model-View-Controller (MVC) est un modèle de conception logicielle largement répandu dans le monde des outils de développements.(J2EE, Spring, Struts,JSF,…)
Créé dans les années 1980 par Xerox PARC pour Smalltalk-80.
MVC est un Design Pattern (Patron de conception) indépendant des langages de programmation.
L'application est divisée en trois composants fondamentaux: le modèle, la vue et le contrôleur. Chacun de ces composants tient un rôle bien défini.
Formation MVC-EMSI
05/06/2009
3
<!-- Slide number: 4 -->
MVC
Le Modèle-Vue-Contrôleur organise l'interface Homme-machine d'une application logicielle en :
un modèle (objet métier, modèle de données);
une vue (présentation, interface utilisateur);
un contrôleur (logique de contrôle, gestion des événements, traitement).
Formation MVC-EMSI
05/06/2009
4
<!-- Slide number: 5 -->
MVC-Objectifs
Séparation entre
Les données
Publicité
La présentation
Les traitements
Meilleur réutilisabilité du code
Optimise les temps de développement ;
Facilite la maintenance ;
Développement horizontal.
Formation MVC-EMSI
05/06/2009
5
<!-- Slide number: 6 -->
Architecture MVC

Formation MVC-EMSI
05/06/2009
6
<!-- Slide number: 7 -->
Architecture MVC II

Formation MVC-EMSI
05/06/2009
7
<!-- Slide number: 8 -->
Architecture MVC II
L’utilisateur émet une requête.
Le contrôleur intercepte la requête de l’utilisateur.
Le contrôleur détermine quelle partie du modèle est concernée et quelle vue y est associée.
Le modèle traite les interactions avec les données, applique les règles métier et renvoie les données au contrôleur.
Le contrôleur sélectionne la vue et lui renseigne les données.
La vue présente les données à l’utilisateur.
Formation MVC-EMSI
05/06/2009
8
<!-- Slide number: 9 -->
MVC-Web
Une application web a souvent une architecture 3tier :
La couche [dao] s'occupe de l'accès aux données, le plus souvent des données persistantes au sein d'un SGBD
La couche [métier] implémente les algorithmes " métier " de l'application.
La couche [interface utilisateur] qui est l'interface (graphique souvent), permet à l'utilisateur de piloter l'application et d'en recevoir des informations.

Publicité
Formation MVC-EMSI
05/06/2009
9
<!-- Slide number: 10 -->
MVC-Web
La communication va de la gauche vers la droite :
L'utilisateur fait une demande à la couche [interface utilisateur]
Cette demande est mise en forme par la couche [interface utilisateur] et transmise à la couche [métier]
Si pour traiter cette demande, la couche [métier] a besoin des données, elle les demande à la couche [dao]
Chaque couche interrogée rend sa réponse à la couche de gauche jusqu'à la réponse finale à l'utilisateur.
Formation MVC-EMSI
05/06/2009
10
<!-- Slide number: 11 -->
MVC-Web
L'architecture MVC (Modèle – Vue – Contrôleur) prend place dans la couche [interface utilisateur] lorsque celle-ci est une interface web :
le client fait une demande au contrôleur. Celui-ci voit passer toutes les demandes des clients. C'est la porte d'entrée de l'application. C'est le C de MVC.
Le contrôleur C traite cette demande. Il peut utiliser les services de la couche métier si il en a besoin.

Formation MVC-EMSI
05/06/2009
11
<!-- Slide number: 12 -->
MVC-Web
Le contrôleur choisit la réponse (= vue) à envoyer au client
Choisir la réponse à envoyer au client nécessite plusieurs étapes :
choisir l'objet qui va générer la réponse. C'est ce qu'on appelle la vue V, le V de MVC. Ce choix dépend en général du résultat de l'exécution de l'action demandée par l'utilisateur.
lui fournir les données dont il a besoin pour générer cette réponse. En effet, celle-ci contient le plus souvent des informations calculées par le contrôleur. Ces informations forment ce qu'on appelle le modèle M de la vue, le M de MVC.
Formation MVC-EMSI
05/06/2009
12
<!-- Slide number: 13 -->
MVC-Web
Le contrôleur C demande à la vue choisie de s'afficher. Il s'agit le plus souvent de faire exécuter une méthode particulière de la vue V chargée de générer la réponse au client.
Le générateur de vue V utilise le modèle M préparé par le contrôleur C pour initialiser les parties dynamiques de la réponse qu'il doit envoyer au client.
La réponse est envoyée au client. La forme exacte de celle-ci dépend du générateur de vue. Ce peut être un flux HTML, PDF, Excel, ...
Formation MVC-EMSI
05/06/2009
13
Publicité
<!-- Slide number: 14 -->
MVC-Web: Implémentation
Pour implémenter le modèle MVC dans une application Web :
Le contrôleur est assuré par une servlet unique. C'est le C de MVC.
Toutes les requêtes du client contiennent un attribut action, par exemple (http://.../appli?action=liste)
Selon la valeur de l'attribut action, la servlet fait exécuter une méthode interne de type [doAction(...)].
La méthode [doAction] exécute l'action demandée par l'utilisateur. Pour cela, si besoin est, elle utilise la couche [métier].
Formation MVC-EMSI
05/06/2009
14
<!-- Slide number: 15 -->
MVC-Web: Implémentation
Selon le résultat de l'exécution, la méthode [doAction] décide d'une page JSP à afficher. C'est la vue V du modèle MVC.
La page JSP a des éléments dynamiques qui doivent être fournis par la servlet. La méthode [doAction] va fournir ces éléments. C'est le modèle de la vue, le M de MVC. Ce modèle est placé le plus souvent dans le contexte de la requête (request.setAttribute(" clé ", "valeur "))
La méthode [doAction] fait afficher la vue en transmettant le flux d'exécution à la page JSP choisie. Elle utilise pour cela, une instruction du genre : getServletContext().getRequestDispatcher(" pageJSP ").forward(request, response)
Formation MVC-EMSI
05/06/2009
15
<!-- Slide number: 16 -->
MVC-Web: Implémentation
De façon générale, une application web MVC à base de servlets et pages JSP a l'architecture suivante :
Ce modèle d'architecture (Design Pattern) MVC est appelée le modèle " Front Controller " ou encore modèle à contrôleur unique: une servlet unique traite toutes les requêtes de tous les utilisateurs.

Formation MVC-EMSI
05/06/2009
16
<!-- Slide number: 17 -->
MVC-Web: Implémentation
Pour une application Web simple, cette architecture est suffisante:
une seule servlet joue le rôle du contrôleur.
deux servlets de deux applications différentes :
ont le même mécanisme pour déterminer quelle méthode [doAction] il faut exécuter pour traiter l'action demandée par l'utilisateur.
ne diffèrent que par le contenu de ces méthodes [doAction].
Factoriser le traitement dans une servlet générique.
Déléguer le traitement à des classes externes.
Faire le lien entre l'action demandée par l'utilisateur et la classe qui doit la traiter à l'aide d'un fichier de configuration (Struts, Spring, …)
Formation MVC-EMSI
05/06/2009
17
Publicité
<!-- Slide number: 18 -->
Plan
Introduction
MVC
MVC-Objectifs
Architecture MVC
Architecture MVC II
MVC-Web
MVC-Web: Implémentation
MVC-Web 1tier: Exp d’Implémentation
MVC-Web 3tier: Exp d’Implémentation
Formation MVC-EMSI
05/06/2009
18
<!-- Slide number: 19 -->
MVC-Web 1tier: Exp d’Implémentation
Voir le TP 1
Formation MVC-EMSI
05/06/2009
19
<!-- Slide number: 20 -->
Plan
Introduction
MVC
MVC-Objectifs
Architecture MVC
Architecture MVC II
MVC-Web
MVC-Web: Implémentation
MVC-Web 1tier: Exp d’Implémentation
MVC-Web 3tier: Exp d’Implémentation
Formation MVC-EMSI
05/06/2009
20