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…