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