spring mvc 3.0 web flow
TRANSCRIPT
![Page 1: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/1.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Spring 3.0 MVC WebFlow
![Page 2: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/2.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
Plan
Introduction
Spring MVCPrincipe
Démonstration
Spring WebFlowPrincipe
Configuration
Démonstration
Conclusion
![Page 3: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/3.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
Les Apports de Spring
Gains en Productivité Meilleure Solution
IOC
Implémentation AOPAlternative Légère
des EJB
![Page 4: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/4.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
Architecture de Spring
![Page 5: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/5.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
Introduction à Spring MVC
Spring
Click
Struts
![Page 6: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/6.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
Spring MVC
Un conteneur léger
une grande flexibilité
Les annotations
![Page 7: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/7.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
Spring MVC
MVC standard
MVC Spring
![Page 8: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/8.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
Cycle de Vie
Request
Dispatcher Servlet
Handler Mapping
Controller
ViewResolver
View
ModelAndView
1
2
3
4
5
Request
Request
Controller
View Name
View
Model
ResponseResponse
6
![Page 9: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/9.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
Dispatcher-Servlet
Dispatcher-Servlet Ou contrôleur de façade
Unique point d’accès de l’application
Web.
Redirige les traitements vers le bon
contrôleur
Implémenté par le biais d’une servlet
![Page 10: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/10.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
Dispatcher-Servlet
Mappage des contrôleurs:
1. SimpleUrlHandlerMapping : Correspondances entre motifs URL et contrôleur
![Page 11: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/11.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
2. BeanNameUrlHandlerMapping : Les noms du bean sont les URL il est là par défaut dans le contexte Web.
![Page 12: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/12.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
Déclaration du ViewResolver
Déclaration du ViewResolver
Mappage des noms logiques des vues avec les implémentations réelles.
![Page 13: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/13.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
Spring MVC : Mise en place
Configuration du dispatcher-servlet dans le fichier WEBINF/web.xml
![Page 14: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/14.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
Spring MVC : Mise en place
• Implémentation du DispatcherServlet
![Page 15: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/15.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
Spring MVC : Mise en place
OU
AbstractController
Implémentation de la méthode «onSubmitl() »
• Implémentation du contrôleur
![Page 16: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/16.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
Support des annotations pour les contrôleur
A partir de la version 2.5 de Spring, la configuration des contrôleurs se réalise par l’intermédiaire d’annotations. Cet aspect peut être mis en œuvre de deux manières :
1. Spécifier une implémentation de l’interface HandlerMapping fondée sur les annotations.
![Page 17: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/17.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
Support des annotations pour les contrôleur
2. Utilisation de la balise component-scan de l’espace de nommage
context afin de détecter tous les composants présents et notamment
les contrôleurs Spring MVC
Il est recommandé de n’utiliser la première approche que si une
personnalisation de la stratégie de mappage des requêtes est envisagée.
La seconde approche reste donc celle à utiliser par défaut
![Page 18: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/18.jpg)
18
Démo
![Page 19: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/19.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
Problématique
• La conception et la mise en œuvre d’applications pour lesquelles la navigation se trouve restreinte et prédéfinie par des règles précises se révèlent particulièrement complexes:
La configuration des enchaînements de traitements est difficile.
La vérification de la validité des enchaînements est complexe à mettre en œuvre.
![Page 20: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/20.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
La session HTTP n’est pas entièrement adaptée pour stocker les données d’un flot de traitements.
La réutilisation des différents flots Web est complexe à implémenter.
![Page 21: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/21.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
Solution
définition centralisée des éléments du flot et de leurs enchaînements
configuration du flot fondée sur une grammaire XML dédiée
notion de transitions mise en œuvre dans la configuration du flot afin de cadrer et sécuriser la navigation
![Page 22: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/22.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
Spring WebFlow
• Spring Web Flow est un sous-projet de Spring Framework.
• Il permet de définir et d'exécuter des enchaînements de pages dans une application web.
• Il est utilisable de façon autonome, mais on peut aussi l'intégrer avec un MVC web
![Page 23: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/23.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
Description d'un Web Flow
• Un flow ou processus de navigation est tout simplement une machine à états finie
• Ces états peuvent être facilement décrits en UML dans des diagrammes d’activité
• Exécution = transitions d’un état vers une liste d’états connue et finie
![Page 24: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/24.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
Configuration du « Flow »
• Décrit dans un fichier xml dont le nom du fichier est de la forme (*-flow.xml)
• Le fichier xml va décrire: les états de la machine à états finie les transitions entre ses états les différentes actions déclenchées
• Par défaut, le premier état est l’état de départ « Start-State »
![Page 25: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/25.jpg)
25
Les types d’états
![Page 26: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/26.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
Etats de Début et de Fin
• Les états de début et de fin d’un flot correspondent à des états particuliers.
<flow start-state=" enterBookingDetails ">
Si start-state n'est pas défini, l'état de démarrage est le premier état trouvé dans la liste.
<end-state id=" cancelled" view="/fin.jsp" />
![Page 27: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/27.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27
View State
• Correspond à une page que l'on souhaite afficher
• Les différents événements déclenchés par la vue doivent être définis en tant que transitions
<view -state id="reviewBooking"> <transition on="confirm" to="bookingConfirmed" /> <transition on="revise" to="enterBookingDetails" /> <transition on="cancel" to="bookingCancelled" /> </view-state
![Page 28: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/28.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28
Action State
• L'objectif d'un action state est d'exécuter du code non visuel
• On peut comparer un action state à la partie contrôleur d'un MVC.
<action-state id="makeBooking"> <evaluate expression="bookingAction.makeBooking()"/> <transition on="ok" to= " viewRecap" /> <transition on=« No" to="Error" /> </action-state>
![Page 29: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/29.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
Decision State
• Aiguillage :un état peut correspondre à un aiguillage fondé sur une ou plusieurs conditions afin d’accéder à d’autres états.
<decision-state id="moreInforamtionsNeeded"> <if test="interview.moreInformationsNeeded()" then="answerQuestions" else="finish" />
</decision-state>
![Page 30: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/30.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30
Sub Flow State
• Lancement de sous-flots d’exécution. Un état peut déclencher l’exécution d’un sous-flot de traitement et permettre le passage de paramètres d’un flot à un autre.
![Page 31: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/31.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31
Exécuter une action "on start"
• Une action "on start" est invoquée au démarrage du web flow, afin d'initialiser des variables utilisées par la suite dans le web flow
<flow start-state=" enterBookingDetails "><on-start> <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)“ result="flowScope.booking" /></on-start>
![Page 32: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/32.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
Exécuter une action "on render"
• le principe d'une action "on render" consiste à exécuter du code Java avant l'affichage de la vue.
<view-state id="searchResults"><on-render> <evaluate expression="bookingService.findHotels(searchCriteria)"result="viewScope.hotels" /></on-render><transition on="next" to " viewResult" >
![Page 33: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/33.jpg)
33
Démo
![Page 34: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/34.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34
Configuration Spring
• Pour utiliser SWF dans une application, il faut demander au conteneur Spring de démarrer le moteur SWF
<beans ….> <webflow:flow-executor id="flowExecutor " flow-registry="flowRegistry " /><webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices"> <webflow:flow-location path="/flows/*-flow.xml"/> </webflow:flow-registry> ... </beans>
![Page 35: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/35.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
Intégration avec Spring MVC
DispatcherServlet
• Le contrôleur façade Spring MVC
• Reçoit toutes les requêtes y compris les requêtes SWF
![Page 36: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/36.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
La configuration minimale impose la déclaration des beans suivants : « flow builder services », « flow handler adapter » et « flow handler mapping » et « flowController ».
<webflow:flow-builder-services id="flowBuilderServices" />
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"> <property name="flowExecutor" ref="flowExecutor" /> </bean>
![Page 37: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/37.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"> <property name="flowRegistry" ref="flowRegistry"/> <property name="order" value="0"/> </bean>
<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController"><property name="flowExecutor" ref="flowExecutor" />
</bean>
![Page 38: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/38.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
Spring application contexte
DispatcherServletReçoit toutes les requêtes y compris les requêtes SWF
Contrôleur Spring MVC qui reçoit les demandes de Flow et les transmet à FlowExecutor pour le traitement.
FlowController
![Page 39: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/39.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39
FlowExecuterContient la logique de traitement des demandes de Spring Web Flow.
FlowRegistryFournit les Flow dont le FlowExecutor a besoin.
![Page 40: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/40.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
FlowBuilderServices
Conteneur pour les différents services
dont le FlowRegistry a besoin pour la
construction des Flow
View FactoryCreator
Crée des view factories
ViewResolver Traduit les noms de vue logique à ressources physique
![Page 41: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/41.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
Intégration avec JSF
• On ajoute la Servlet de Spring dans web.xml
![Page 42: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/42.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42
On ajoute dans le fichier de configuration de flow :
<faces:flow-builder-services id="flowBuilderServices" />
<bean id="facesContextListener"class="org.springframework.faces.webflow.FlowFacesContextLifecycleListener" />
![Page 43: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/43.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43
Sécurisation des flows
• Configurer Spring Security avec l’authentification et l’autorisation
• Annoter la définition du flow avec un élément sécurisé pour définir les régles de sécurité
• Ajouter SecurityFlowExecutionListener au processus des régles de sécurité
![Page 44: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/44.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44
Elément Sécurisé
• L'élément sécurisé désigne que son élément contenant devrait appliquer le contrôle d'autorisation
<view-state id="secured-view"><secured attributes="ROLE_USER" />...</view-state>
![Page 45: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/45.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 45
SecurityFlowExecutionListener
![Page 46: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/46.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46
Configurer Spring Security
• Spring Security permet de gérer l'accès aux ressources d'une application Java.
• Toute ressource sollicitée par un appelant est rendue accessible si, d'une part, l'appelant s'est identifié, et si d'autre part, il possède les droits nécessaires (des rôles dans le vocabulaire Spring Security).
![Page 47: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/47.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47
Conclusion
• « Spring MVC » offre une approche intéressante fondée sur les mécanismes d’injection de dépendances et les métadonnées configurées dans des annotations.
• Les principaux atouts du « framework » résident dans son ouverture ainsi que dans la modularité et l’isolation des composants du « pattern » MVC
![Page 48: Spring mvc 3.0 web flow](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557c304cd8b42acc738b48a4/html5/thumbnails/48.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48
Références
• http://static.springsource.org
• http://netbeans.org/kb/docs/web/quickstart-webapps-spring.html
• http://www.springparlapratique.org/extraits/splpv2-chap-7.pdf