Spring mvc 3.0 web flow

1,630 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,630
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
79
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Spring mvc 3.0 web flow

  1. 1. Spring 3.0 MVC WebFlowCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  2. 2. Plan Introduction Spring MVC  Principe  Démonstration Spring WebFlow  Principe  Configuration  Démonstration ConclusionCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
  3. 3. Les Apports de Spring Meilleure Solution Gains en Productivité IOC Alternative Légère Implémentation AOP des EJBCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
  4. 4. Architecture de SpringCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
  5. 5. Introduction à Spring MVC Spring Struts ClickCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
  6. 6. Spring MVC Un conteneur léger une grande flexibilité Les annotationsCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
  7. 7. Spring MVCMVC standard MVC Spring Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
  8. 8. Cycle de Vie Request Handler 2 Mapping Request Controller 1 Request 3 Controller Dispatcher ModelAndView Servlet View Name 4 ViewResolver View 6 Model 5 ViewResponse ResponseCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
  9. 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 servletCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
  10. 10. Dispatcher-Servlet Mappage des contrôleurs: 1. SimpleUrlHandlerMapping : Correspondances entre motifs URL et contrôleurCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
  11. 11.  2. BeanNameUrlHandlerMapping : Les noms du bean sont les URL il est là par défaut dans le contexte Web.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
  12. 12. Déclaration du ViewResolver Déclaration du ViewResolver Mappage des noms logiques des vues avec les implémentations réelles.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
  13. 13. Spring MVC : Mise en placeConfiguration du dispatcher-servlet dans le fichier WEBINF/web.xmlCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
  14. 14. Spring MVC : Mise en place • Implémentation du DispatcherServletCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
  15. 15. Spring MVC : Mise en place • Implémentation du contrôleur OU AbstractController Implémentation de la méthode «onSubmitl() »Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
  16. 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.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
  17. 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éfautCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
  18. 18. 18
  19. 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.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
  20. 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.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
  21. 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 navigationCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
  22. 22. Spring WebFlow • Spring Web Flow est un sous-projet de Spring Framework. • Il permet de définir et dexécuter des enchaînements de pages dans une application web. • Il est utilisable de façon autonome, mais on peut aussi lintégrer avec un MVC webCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
  23. 23. Description dun 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 finieCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
  24. 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 »Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
  25. 25. 25
  26. 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 "> <end-state id=" cancelled" view="/fin.jsp" /> Si start-state nest pas défini, létat de démarrage est le premier état trouvé dans la liste.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
  27. 27. View State • Correspond à une page que lon 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-stateCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27
  28. 28. Action State • Lobjectif dun action state est dexécuter du code non visuel • On peut comparer un action state à la partie contrôleur dun MVC. <action-state id="makeBooking"> <evaluate expression="bookingAction.makeBooking()"/> <transition on="ok" to= " viewRecap" /> <transition on=« No" to="Error" /> </action-state>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28
  29. 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>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
  30. 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.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30
  31. 31. Exécuter une action "on start" • Une action "on start" est invoquée au démarrage du web flow, afin dinitialiser 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>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31
  32. 32. Exécuter une action "on render" • le principe dune action "on render" consiste à exécuter du code Java avant laffichage de la vue. <view-state id="searchResults"> <on-render> <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" /> </on-render> <transition on="next" to " viewResult" >Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
  33. 33. 33
  34. 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>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34
  35. 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 SWFCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
  36. 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.FlowHandlerA dapter"> <property name="flowExecutor" ref="flowExecutor" /> </bean>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
  37. 37. <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerM apping"> <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>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37
  38. 38. Spring application contexte Reçoit toutes les requêtes y compris DispatcherServlet les requêtes SWF FlowController Contrôleur Spring MVC qui reçoit les demandes de Flow et les transmet à FlowExecutor pour le traitement.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
  39. 39. FlowExecuter Contient la logique de traitement des demandes de Spring Web Flow. Fournit les Flow dont le FlowRegistry FlowExecutor a besoin.Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39
  40. 40. Conteneur pour les différents services FlowBuilderServic dont le FlowRegistry a besoin pour la es construction des Flow View Crée des view factories FactoryCreator ViewResolver Traduit les noms de vue logique à ressources physiqueCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
  41. 41. Intégration avec JSF • On ajoute la Servlet de Spring dans web.xmlCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
  42. 42. On ajoute dans le fichier de configuration de flow : <faces:flow-builder-services id="flowBuilderServices" /> <bean id="facesContextListener" class="org.springframework.faces.webflow.FlowFacesCo ntextLifecycleListener" />Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42
  43. 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éCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43
  44. 44. Elément Sécurisé • Lélément sécurisé désigne que son élément contenant devrait appliquer le contrôle dautorisation <view-state id="secured-view"> <secured attributes="ROLE_USER" /> ... </view-state>Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44
  45. 45. SecurityFlowExecutionListenerCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 45
  46. 46. Configurer Spring Security • Spring Security permet de gérer laccès aux ressources dune application Java. • Toute ressource sollicitée par un appelant est rendue accessible si, dune part, lappelant sest identifié, et si dautre part, il possède les droits nécessaires (des rôles dans le vocabulaire Spring Security).Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46
  47. 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 » MVCCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47
  48. 48. Références • http://static.springsource.org • http://netbeans.org/kb/docs/web/quicks tart-webapps-spring.html • http://www.springparlapratique.org/extr aits/splpv2-chap-7.pdfCopyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48

×