Académique Documents
Professionnel Documents
Culture Documents
24 octobre 2022
Model MVC
Introduction
● Les plateformes de développement des applications web y compris Java EE n’imposent
aucun rangement particulier du code.
● Cela rende le code mal organisé et difficile à maintenir
− par exemple retrouver un bout de code ou une fonction qu’on veut modifier.
● Pour éviter ce problème, les développeurs utilisent les bonnes pratiques de
développement qu’on appelle les Patrons de conception ou Design Pattern (en
anglais).
88
C’est quoi un design pattern ?
● Un design pattern ou un modèle de conception est une feuille de route qui permet de
décrire les grandes lignes d’une solution.
● Il est issus de l'expérience des concepteurs et développeurs d'applications
● Capitalisation des expériences, les structurées en modèles et considérées comme
standard
89
Le Model MVC
● Le modèle MVC : Model-Vue-Controlleur, en anglais Model–View–Controller.
● MVC est un modèle de conception logicielle largement répandu, fort et utile.
● Néanmoins, il faut retenir que c’est un modèle de conception, il est donc indépendant du
langage de programmation.
● MVC est fortement recommandé comme modèle pour la plate-forme JEE.
● MVC découpe littéralement l'application en couches distinctes,
− Impacte très fortement l'organisation du code
90
Architecture MVC
Requête HTTP
Controller
Réponse HTTP
View Model
Client
Serveur
91
Architecture MVC : Vue
● C’est la partie de votre code qui s’occupera de la présentation des données à
l’utilisateur,
● Elle retourne une vue des données venant du modèle,
● C’est elle qui est responsable de produire les interfaces de présentation de votre
application à partir des informations qu’elle dispose,
● Il peut s'agir d'une interface HTML/JSP,
● Mais n'importe quel composant graphique peut jouer ce rôle.
92
Architecture MVC : Contrôleur
● Se charge d'intercepter les requêtes de l'utilisateur,
● Appeler le modèle
● Puis de retourner une réponse avec l’aide de la couche Modèle et Vue.
● Il ne doit faire aucun traitement.
● Il ne fait que de l'interception et de la redirection.
93
Architecture MVC : Model
● C’est la partie de votre code qui exécute la logique métier de votre application.
● Ceci signifie qu’elle est responsable de récupérer les données, de les convertir selon les
concepts de la logique de votre application tels que le traitement, la validation,
l’association et tout autre tâche concernant la manipulation des données.
● Les données peuvent être liées à une base de données, des EJBs, des services Web,
etc.
94
MVC en pratique
Requête HTTP
C: Servlets
Réponse HTTP
V: pages JSP M: Objets Java
Client
Stockage
des données
Serveur
95
Application
Nous souhaitons de créer une application JEE qui permet de calculer l’IMC d’un utilisateur
en se basant sur le model MVC.
L’IMC est calcué sur la base de la taille en m et du poids en kg.
La formule de calculi est comme suit : imc= poids / taille²
96
Architecture de l’application
Traitement
97
Structure global du projet
Metier
Contrôleur
Web Model
Vue
98
Couche Metier
package metier;
package metier;
@Override
public double calculerImc(int poids, double taille) {
double imc = poids/(taille*taille);
// TODO Auto-generated method stub
return imc;
}
}
99
Couche Metier
package metier;
100
Creation de la vue
<html>
<head>
<meta charset="ISO-8859-1">
<title>IMC</title>
</head>
<body>
<div>
<p> Ma page </p>
</div>
</body>
</html>
http://localhost:8080/IMC_MVC/VueImc.jsp
101
Creation du Controleur
public class ControleurServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse rep)
throws ServletException, IOException {
req.getRequestDispatcher("VueImc.jsp").forward(req,rep);
}
}
102
Creation du descripteur de deploiement : web.xml
<display-name>IMC_MVC</display-name>
<servlet>
<servlet-name>cs</servlet-name>
<servlet-class>web.ControleurServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cs</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
http://localhost:8080/IMC_MVC/index.do
103
Modification de la vue : Creation du formulaire
104
Modification du controleur : Methode doPost
105
Creation du Model (bean)
public void setPoids(int poids) {
package web;
this.poids = poids;
}
public class ImcModel {
public double getTaille() {
private int poids;
return taille;
private double taille;
}
private double imc;
public void setTaille(double taille) {
this.taille = taille;
public int getPoids() {
}
return poids;
public double getImc() {
}
return imc;
}
public void setImc(double imc) {
public ImcModel() { this.imc = imc;
super(); }
}
public ImcModel(int poids, double taille, double imc) {
super();
this.poids = poids;
this.taille = taille;
this.imc = imc;
}
106
Modification du controleur : Methode doPost
/*stocker dans le model*/
ImcModel model= new ImcModel();
model.setPoids(poids);
model.setTaille(taille);
<div>
IMC :<%=model.getImc()%>
</div>
108