spring mvc 3.0 web flow

Post on 13-Jun-2015

1.197 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related