SlideShare una empresa de Scribd logo
1 de 48
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

Más contenido relacionado

La actualidad más candente

20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You ReadyGeoffray Gruel
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueRossi Oddet
 
Introduction à Zend Framework 2
Introduction à Zend Framework 2Introduction à Zend Framework 2
Introduction à Zend Framework 2Mickael Perraud
 

La actualidad más candente (6)

#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
Introduction à Zend Framework 2
Introduction à Zend Framework 2Introduction à Zend Framework 2
Introduction à Zend Framework 2
 

Similar a Spring mvc 3.0 web flow

les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture Mouna Maazoun
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursHoracio Gonzalez
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Spring par la pratique chap-7 - mvc
Spring par la pratique  chap-7 - mvcSpring par la pratique  chap-7 - mvc
Spring par la pratique chap-7 - mvcFlorent Breton
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Angularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la videoAngularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la videoeric German
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...Microsoft Technet France
 
Créer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopCréer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopPrestaShop
 
Tk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp Fr
Tk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp FrTk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp Fr
Tk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp FrValtech
 
Demystification de Spring Une histoire de Pattern.pptx
Demystification de Spring Une histoire de Pattern.pptxDemystification de Spring Une histoire de Pattern.pptx
Demystification de Spring Une histoire de Pattern.pptxletourneur2
 

Similar a Spring mvc 3.0 web flow (20)

les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
 
cours-gratuit.com--id-4422.pdf
cours-gratuit.com--id-4422.pdfcours-gratuit.com--id-4422.pdf
cours-gratuit.com--id-4422.pdf
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
 
Prezentare ASP.Net.pptx
Prezentare ASP.Net.pptxPrezentare ASP.Net.pptx
Prezentare ASP.Net.pptx
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Spring par la pratique chap-7 - mvc
Spring par la pratique  chap-7 - mvcSpring par la pratique  chap-7 - mvc
Spring par la pratique chap-7 - mvc
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Introducthion mvvm avec wpf
Introducthion mvvm avec wpfIntroducthion mvvm avec wpf
Introducthion mvvm avec wpf
 
Spring
SpringSpring
Spring
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Angularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la videoAngularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la video
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Créer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopCréer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShop
 
Tk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp Fr
Tk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp FrTk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp Fr
Tk08 Silverlight Une Cure De Jouvence Pour Vos Applications Asp Fr
 
Demystification de Spring Une histoire de Pattern.pptx
Demystification de Spring Une histoire de Pattern.pptxDemystification de Spring Une histoire de Pattern.pptx
Demystification de Spring Une histoire de Pattern.pptx
 

Más de Slimen Belhaj Ali (18)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring security
Spring securitySpring security
Spring security
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
objective C
objective Cobjective C
objective C
 
Android
AndroidAndroid
Android
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

Spring mvc 3.0 web flow

  • 1. Spring 3.0 MVC WebFlow 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 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
  • 4. Architecture de Spring Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
  • 5. Introduction à Spring MVC 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 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. 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. 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 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. 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
  • 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 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
  • 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
  • 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 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. 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 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
  • 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. <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 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
  • 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 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. 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