Spring 3.0 MVC WebFlow




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Plan

       Introduction
       Spring MVC
                   Principe
                   Démonstration

       Spring WebFlow
                   Principe
                   Configuration
                   Démonstration

       Conclusion
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   2
Les Apports de Spring



                                                                                                                     Meilleure Solution
          Gains en Productivité
                                                                                                                            IOC




                                                                                                                     Alternative Légère
          Implémentation AOP
                                                                                                                          des EJB




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.                        3
Architecture de Spring




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   4
Introduction à Spring MVC



                              Spring                                                                                 Struts




                                                                                          Click



Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.            5
Spring MVC


                                                                                                  Un conteneur léger

                                                                                                une grande flexibilité

                                                                                                       Les annotations




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.       6
Spring MVC

MVC standard




                                                                                                                      MVC Spring

 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.            7
Cycle de Vie

                                                                                     Request
                                                                                                                      Handler
                                                                                              2                       Mapping
 Request                                                                            Controller

        1                                                                              Request
                                                                                                3                     Controller
                            Dispatcher                                           ModelAndView
                              Servlet
                                                                                       View Name
                                                                                                4                    ViewResolver
                                                                                            View


        6                                                                                    Model
                                                                                                    5                   View
Response
                                                                                        Response

Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.                  8
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


Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   9
Dispatcher-Servlet


         Mappage des contrôleurs:

         1.        SimpleUrlHandlerMapping : Correspondances entre motifs URL et
                   contrôleur




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   10
 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
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
Spring MVC : Mise en place


Configuration du dispatcher-servlet dans le fichier WEBINF/web.xml




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   13
Spring MVC : Mise en place


         • Implémentation du DispatcherServlet




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   14
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
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
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




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   17
18
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
 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
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

Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   21
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



Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   22
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




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   23
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
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 n'est 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
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



Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   27
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>



Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   28
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
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
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>




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   31
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" >




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   32
33
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
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




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   35
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
<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
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
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
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 physique


Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.        40
Intégration avec JSF


         • On ajoute la Servlet de Spring dans
           web.xml




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   41
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
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
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>




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   44
SecurityFlowExecutionListener




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   45
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).




Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   46
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


Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   47
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.pdf



Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   48

Spring mvc 3.0 web flow

  • 1.
    Spring 3.0 MVCWebFlow Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 2.
    Plan Introduction Spring MVC  Principe  Démonstration Spring WebFlow  Principe  Configuration  Démonstration Conclusion Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
  • 3.
    Les Apports deSpring Meilleure Solution Gains en Productivité IOC Alternative Légère Implémentation AOP des EJB Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
  • 4.
    Architecture de Spring Copyright2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
  • 5.
    Introduction à SpringMVC Spring Struts Click Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
  • 6.
    Spring MVC Un conteneur léger une grande flexibilité Les annotations Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
  • 7.
    Spring MVC MVC standard MVC Spring Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
  • 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 View Response Response Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
  • 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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
  • 10.
    Dispatcher-Servlet Mappage des contrôleurs: 1. SimpleUrlHandlerMapping : Correspondances entre motifs URL et contrôleur Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
  • 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.
    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.
    Spring MVC :Mise en place Configuration du dispatcher-servlet dans le fichier WEBINF/web.xml Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
  • 14.
    Spring MVC :Mise en place • Implémentation du DispatcherServlet Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
  • 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.
    Support des annotationspour 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.
    Support des annotationspour 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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
  • 18.
  • 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.
     La sessionHTTP 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.
    Solution  définition centraliséedes é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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
  • 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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
  • 23.
    Description d'un WebFlow • 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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
  • 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.
  • 26.
    Etats de Débutet 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 n'est 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.
    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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27
  • 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> Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28
  • 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.
    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.
    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> Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31
  • 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" > Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
  • 33.
  • 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.
    Intégration avec SpringMVC DispatcherServlet • Le contrôleur façade Spring MVC • Reçoit toutes les requêtes y compris les requêtes SWF Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
  • 36.
    La configuration minimaleimpose 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.
    <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.
    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.
    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.
    Conteneur pour lesdiffé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 physique Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
  • 41.
    Intégration avec JSF • On ajoute la Servlet de Spring dans web.xml Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
  • 42.
    On ajoute dansle 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.
    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.
    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> Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44
  • 45.
    SecurityFlowExecutionListener Copyright 2008 SpringSource.Copying, publishing or distributing without express written permission is prohibited. 45
  • 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). Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46
  • 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 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47
  • 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.pdf Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48