Spring
Spring MVC
Spring MVC
Le cœur de l’environnement Spring est un « conteneur léger» Introduction à Spring MVC Un conteneur léger sert à contenir un ensemble d’objets instanciés et initialisés, formant un contexte initial (ou une hiérarchie de contextes) pour une application. Ce contexte initial est souvent construit à partir d’une description externe (xml) décrivant les objets à créer, lesvaleurs initiales et les dépendances entre objets.
Partie 1
Jean-Marc Geib Cedric Dumoulin
Les dépendances (liens) entre objets sont automatiquement créées à partir de la description (on parle d’injection de dépendances) et non par les objets eux-mêmes par programmation. C’est le Design Pattern de l’Inversion du Contrôle : IoC
Spring MVC Exemple simplifié: Avec les classes: classPersonne { String nom; Voiture car; } class Voiture {String nom;}
Spring MVC
et la description de contexte Spring: Le contexte initial de l’application dans le conteneur SPRING sera:
Personne user nom:jean car: Voiture nom:megane vehicule
SpringMVCest un framework de présentation, pour application WEB, suivant le modèle MVC, et fondé sur le conteneur léger de SPRING Dans le cas deSpringMVCle conteneur va servir à créer: -Le contexte de l’application Web -Les objets traitant les requêtes (Controller) -Les objets créant les pages HTML ( View) -Les objets données des formulaires (Command) -Les liens avec les couches métiers et BD -Et pleins d’autres -Le mapping des URL vers les controleurs -Le mapping des vues , etc. L’inversion du contrôle permet ensuite de changer lecomportement de l’application, en modifiant la description xml du conteneur, sans changer les éléments programmés!
Spring MVC Retour sur le modèle MVC
Spring MVC La vision de SpringMVC
Une application 3tier classique:
Une application 3tier avec MVC: La org.springframework.web.servlet.DispatcherServlet est le point d’entrée générique qui délègue les requêtes à des Controller Unorg.springframework.web.servlet.mvc.Controller prend en charge une requête, et utilise la couche métier pour y répondre. Un Controller fabrique un modèle sous la forme d’une java.util.Map contenant les éléments de la réponse. Un Controller choisit une org.springframework.web.servlet.View qui sera paramétrée par la Map pour donner la page qui sera affichée.
Spring MVC L’interface Controller la plus simple(sans formulaire) n’a qu’une méthode handleRequest.
Spring MVC
URL
ModelAndView handleRequest(HttpServletRequest requete, HttpServletResponse response )
DispatcherServlet HandlerMapping
Pour un besoin spécifique d’une application il faut donc créer une classe implantant l’interface Controller et la méthode handleRequest Cette méthode reçoit la requête, doit la traiter (c’est à direfabriquer les données de réponse grâce à la couche métier) et retourner un objet ModelAndView Le principal constructeur de ModelAndViewutilisé est celui-ci:
ModelAndView (String ViewName, Map model)
Choix d’un contrôleur en fonction de l’URL
Metier
MonControleur
HttpServletRequest handleRequest ModelAndView =
Nom de vue + Model
Choix d’une vue
Il faut fournir le nom de la vue àutiliser pour créer la page de réponse et une HashMap contenant les données de réponse à y insérer.
ViewResolver
Page HTML
Vue Model
Spring MVC
Spring MVC Exemple: 2 – Un contrôleur qui fournit les membres pour affichage lors d’un requête d’affichage Exemple: 1 – Une couche métier
package metier; public class G r o u p e { private ArrayList membres=new ArrayList(); publicArrayList getMembres() { return membres; } public void setMembres(ArrayList membres) { this.membres = membres ; } public void addMembre(String membre) { if (membres.contains(membre) ) throw new MembrePresentException(); membres.add(membre); } public void removeMembre(String membre){ if (!membres.contains(membre)) throw new MembreAbsentException(); membres.remove( membre); } } package web; import…