Tutorial4 Springmvc
Tutorial4 Springmvc
Spring MVC
1. Un client envoie une requête HTTP vers le serveur en utilisant l'URL suivante :
http://localhost:8080/SpringMVCTuto/index.html
2. Le Dispatcher Servlet intercepte la requête et utilise quatre assistants pour répondre à la
demande.
3. Le Dispatcher Servlet (DS) demande de l'aide au Handler Mapping (HM) pour trouver le
contrôleur approprié qui peut générer les données de la requête.
4. Le Handler Mapping scanne l'URL de la requête et fournit l'adresse exacte du contrôleur
qui peut générer les données pour répondre à la requête.
5. Le Dispatcher Servlet envoie ensuite la requête au contrôleur « Controller ».
6. Le contrôleur prépare les données nécessaires pour répondre à la requête et crée ou appelle
les objets responsables du traitement de ces données. Ces objets peuvent être plusieurs classes
ou modèles.
7. Le contrôleur envoie les objets Java contenant les données à la vue (View) qui sera chargée
de les afficher.
8. Le contrôleur demande de l'aide au View Resolver pour déterminer la vue appropriée qui
sera chargée d'afficher les données.
9. Le Dispatcher Servlet envoie la requête à la vue appropriée pour afficher les données.
10. La vue génère le résultat et le renvoie au Dispatcher Servlet.
11. Le Dispatcher Servlet envoie la réponse à la requête au client.
1.2 Concepts
Les notions de Dispatcher servlet, Handler Mapping, Controller, View Resolver, View seront
traités au fur et à mesure de ce tutorial.
2 Exemple à
implémenter
Handler
Mapping
Dispatcher Servlet
Requête
Controller
Réponse
Resolver View
Fournisseur
View Stock
patisserie-servletdispatcher
Controller Controller
Employe Vente
Controller Controller
…. Factures
Controller
Dispatcher Servlet
Tester et voir si le contrôleur et voir s’il s’exécute : Affichage sur la console du message
de bienvenu
4.2 @RequestMapping
Il faut ajouter l’annotation : @RequestMapping qui permet d’intercepter les requêtes qui
seront prise en charge par notre méthode
Fournisseur Stock
Controller Controller
Employe Vente
Controller Controller
…. Factures
Controller
➢ Objectif : Supprimer @ResponseBody, tester et afficher la vue dans une page web (jsp
ou html)➔Alors notre contrôleur doit retourner une vue.
1- Créer une page welcome.html ou welcome.jsp dans le dossier WEB-INF/vues, suivante :
6.1 Problème
Le contrôleur (WelcomeController) retourne le nom de la vue.
Mais ce n’est pas la bonne approche, pourquoi ?
Supposons qu’on veut changer l’emplacement ou bien de la technologie utilisée pour la vue. Il faut
modifier à chaque moment le contrôleur : violation du deuxième principe « ouverture à
l’extension, fermeture à la modification.
Solution : il faut bien utiliser la View Resolver du Spring MVC, Dans Spring
MVC, ViewResolver est utilisé pour résoudre le «nom de la vue». ViewResolver charge
l’emplacement des beans de vue à partir de la propreté prefix : (Ici : /WEB-INF/) et l’extension
de la vue avec la propriété suffix (ici : .html);
La configuration de la View Resolver doit être faite au niveau du fichier de configuration (XML
ou java), dans la cadre de notre exemple, il faut ajouter cette configuration dans le fichier
(patisserie-servletdispatcher-servlet.xml)
Alors, que faut-il configurer exactement ?
6.2 Fonctionnement
"/WEB-INF/vues/welcome.jsp"
prefix suffix
prefix et le suffix, cette classe contient ces deux attributs avec des getter/setters. Afin de
configurer View Resolver il faut ainsi configurer les deux attributs : suffix et prefix.
Question : Comment on configure le bean de cette classe avec des propriétés dans le fichier de
configuration spring ?
Changer l’emplacement du fichier ensuite développer une page .jsp ou lieu de html
Controller
Dispatcher Servlet
/patisserie/welcome
Requête
Réponse
welcome
welcome
/WEB-INF/vues/Welcome.jsp
View Resolver
prefix suffix
7 Model
La composante Model du pattern MVC pour le partage des données, est réalisé à travers
l’interface Model du spring. Le contrôleur récupère les données de la requête et renvois la
réponse à la vue à travers cette composante.
Pour notre exemple de la gestion de la pâtisserie, on va :
➢ On va afficher les données d’une commande dans une vue jsp
(consulterCommande.jsp) en appelant l’action (/commande) du contrôleur
CommandeController
➢ Ensuite on va récupérer les données de la saisie d’une commande de la vue
(passerCommande.jsp) en exécutant l’action (/passercommande) du même
contrôleur
7.1 Affichage des données d’une commande dans une vue jsp
1- On va créer un contrôleur de gestion des commandes (CommandeController) qui
affiche les produits d’une commande. Dans ce contrôleur, on ajouter l’action
« /commande » comme suit :
3- Créer une vue (page jsp) qui permet d’afficher les produits d’une commande et leurs
quantités
4- Tester
@RequestMapping("/passercommande")
public String passerCommande(Model model) {
return "passerCommande"; }
@RequestMapping("/confirmer")
public String confirmerCommande(HttpServletRequest request,Model model) {
//capturer les données reçues de la requête
String produit=request.getParameter("produit");;
String quantite=request.getParameter("qte");
Scenario
il faut être :
Exécution
Scenario
Setters
Getters
form:form Il s'agit d'une balise conteneur qui contient toutes les autres balises
de formulaire.
form:radiobutton Cette balise est utilisée pour générer les boutons radio.
form:checkbox Cette balise est utilisée pour générer les cases à cocher.
form:password Cette balise est utilisée pour générer le champ de saisie du mot de
passe.
form:textarea Cette balise est utilisée pour générer le champ de texte multiligne.
form:hidden Cette balise est utilisée pour générer le champ de saisie masqué.
4- La vue passerCommande.jsp est enrichie par les balises (taglib) du spring ce qui nous a
permis d’ajouter l’attribut « modelAttribute ».
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
9.4.2 @ModelAttribute