-
Question sur MVC
Je suis entrain d’étudier le MVC et franchement j'ai des questions que je voudrais échanger avec vous les réponses si vous permettez
Bon voici on dit que jsf se base sur le modèle mvc.J'ai trés bien compris que la view sont les pages xhtml,jsp ... mais le controlleur j'ai pas très bien saisie car en jsf on peut créer un managed bean appelé aussi backed bean ou controlleur. Est-ce-que c'est le même controlleur?
Merci
-
Bonjour,
Sans être experte: la vue tu l'as bien compris, le modèle c'est la table dans la base de données (plusieurs occurrences d'un objet de la même classe Java).
Le contrôleur c'est ce qui fait la liaison entre les deux. Si tu l'appèles DAO, managed bean, backing bean ou truc mouche: ce sera toujours une public class MonobjetController implements Serializable{} (préférablement déclarée dans un fichier MonobjetController.java qui lui aussi doit se trouver dans un package MonProjet.jsf) qui englobe tes méthodes d'accès (en lecture ou écriture) à l'objet stocké dans la DB.
-
et Pourquoi on dit souvent que le controlleur c'est la facesServlet?
-
Parce que c'est la servlet qui intercepte les requêtes et redirige les actions vers les beans concernés.
-
Donc si je me suis très bien comprendre lorsque le client souhaite visiter une page ça revient à dire qu'il envoie une requête vers le contrôleur et c'est au contrôleur qui va appeler la page (view).c'est ça?
-
-
très bien alors merci et le modèle c'est quoi son rôle exactement ? est-ce-que lorsque je développe la page par exemple jsf et je met le #{ nom du bean. attribut } c'est ici ça veut dire que j'ai invoqué l'attribut qui se trouve dans le modèle?
-
en fait du MVC (voire MVP) il y en a partout "à tous les étages" ...
JSF est lui même MVC, car il a un contrôleur (servlet), des vues (pages ou composants UI) et des modèles internes pour ses différents composants.
Ensuite si tu fais une application en appliquant MVC à un plus haut niveau tu auras tes pages que tu considéreras uniquement comme de la vue, les ManagedBeans comme des "mini controleurs" qui tapent sur un model local "les attributs des managed bean" ...
Ensuite à un plus haut niveau encore, tu pourras considérer que tout ce qui est JSF est de la vue et que ce niveau "tape" sur une couche de service d'accès à ton modèle (par exemple des EJB) ... qui eux iront taper sur de la DAO, etc.
Bref ... :-) ça découpe, ça découple.:mrgreen: dans tous les sens.
Ce qui est important dans le concept MVC et que de nombreuses personnes oublient c'est le design pattern Observer / Observable entre la vue et le modèle. Le modèle avertissant de ses modifications toutes les vues qui l'écoute (tout ou partie du modèle).
Sinon, si le contrôleur est un "passe plat" entre le modèle et la vue et qu'il transforme les informations et déclenche les traitements, alors c'est plutôt du MVP (Model View Presenter). La aussi trop méconnu ... mais bcp utilisé sans le savoir. Certains font du MVP et annoncent faire du MVC, par méconnaissance.
Et pour répondre à ta dernière question, le modèle c'est ton métier "pur" ... des classes qui "stockent" tes données métiers, dénuées de toute problématique d'affichage, ainsi que l'ensemble des traitement métier aussi.
-
Merci pour ta réponse J'ai très bien compris beaucoup de choses et j'ai besoin d'un dernier truc concernant ce sujet c'est que à quoi consiste le rôle du contrôleur secondaire au niveau MVC 1 ?