57
Formation Struts www.objis.com - Formation STRUTS 1 (Struts 1.3.8)

Formation Struts - Formation STRUTS 1 (Struts 1.3.8)

Embed Size (px)

Citation preview

Page 1: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

Formation Struts

www.objis.com - Formation STRUTS 1

(Struts 1.3.8)

Page 2: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

A propos d’Objis…

Centre de formation depuis 2005

Spécialiste technologies Java/J2ee

Formations intra/inter entreprises

Théorie (30%) et pratique (70%)

Paris – Lyon – Dakar

www.objis.com

2www.objis.com - Formation STRUTS

Page 3: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Formateur : Douglas Mbiandou

Ingénieur INSA Lyon (2000)

8 ans d'expériences projets SI

Architecte / Formateur Java

Directeur technique Objis (www.objis.com)

Président Club Solidarité Numérique•www.club-solidarite-numerique.org

3www.objis.com - Formation STRUTS

Page 4: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

SOMMAIRE (3j)

• Rappels J2EE• Historique, présentation, positionnement• Configuration struts : struts-config.xml• Actions et formulaires• Bibliothèque de balise Struts• Validation de formulaires : Validator• Gestion d'erreurs• Industrialisation d'écrans avec Tiles• Application multi modules• Intégration avec Hibernate• Intégration avec EJB• Conclusion – ressources

4www.objis.com - Formation STRUTS

Page 5: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Rappels J2EE

Architecture

Livraisons

Services

Modularité

5www.objis.com - Formation STRUTS

Page 6: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Architecture J2EE

6www.objis.com - Formation STRUTS

Page 7: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Livraisons J2EE

7www.objis.com - Formation STRUTS

Page 8: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Services J2EE

JNDI : Java Naming Directory Interface

JCA : Java Connector Architecture

JTA : Java Transaction API

JPA : Java Persistence API

JMS : Java Message Service

JAAS : Java Authentication & Authorisation Service

JAX-WS : Java API for XML Web Services

JAXB : Java API for XML Binding8www.objis.com - Formation STRUTS

Page 9: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Architecture multicouche

9www.objis.com - Formation STRUTS

Page 10: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Introduction STRUTS

Historique

Pattern MVC2

Cycle de vie requête HTTP

Avantages / Inconvénients

Concurrents

10www.objis.com - Formation STRUTS

Page 11: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Historique Struts

Initiative du projet Jakarta (jakarta.apache.org)

MVC system for JSP technology

Juillet 2001: Struts 1.0

Craig Mac Clanahan

Struts n'est pas une spécification

11www.objis.com - Formation STRUTS

Page 12: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Modèle – Vue – Controleur (MVC)

12www.objis.com - Formation STRUTS

Page 13: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Modèle – Vue – Controleur (MVC)

13www.objis.com - Formation STRUTS

Page 14: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

MVC avec Struts

Vue = JSP, HTML, XML...

Controleur = servlet ActionServlet

Modèle (métier) = JavaBean, EJB, Web service...

14www.objis.com - Formation STRUTS

Page 15: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Modèle – Vue – Controleur (MVC)

15www.objis.com - Formation STRUTS

Page 16: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Cycle de vie d'une requête

16www.objis.com - Formation STRUTS

Page 17: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Avantages Struts

Gère les formulaires et actions de l'utilisateur

Réduit la répétition de code,

Augmente flexibilité et fiabilité,

Réduit le couplage entre composants.

Framework de présentation le plus réputé.

Nombreux développeurs Struts.

17www.objis.com - Formation STRUTS

Page 18: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Inconvénients Struts

Utilisable uniquement env web : servlets / jsp•param HttpServletRequest, HttpServletResponse

Pas de mécanisme standard d'interception des actions.

•gestion Sécurité, Logging, accès DB...

Séparation entre action et formulaire peu justifiée. •Augmente nb de classes à écrire

Absence de mécanisme d'accès à une couche métier

18www.objis.com - Formation STRUTS

Page 19: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Concurents Struts

Spring MVC ( Conteneur léger, Injection dép.)

AJAX (Javascript + XML asynchrone)

WebWork / Struts 2

JSF (Java Server Faces)

Tapestry

19www.objis.com - Formation STRUTS

Page 20: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Composantes et outils Struts

Controleur

Les 5 sections de struts-config.xml

Bean Formulaire & DynaForm

Action Struts

Bibliothèque de balises

Accès aux données JDBC

Validation de formulaire : Validator

Création d'écrans avec Tiles20

Page 21: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Le Controleur

Servlet org.apache.struts.action.ActionServlet (présent dans struts.jar)

Configuré dans web.xml et struts-config.xml

Gère toutes les requêtes qui respectent un certains format à spécifier (ex : *.do)

Assure redirection vers autre action ou bien vue

Appelé à travers URL / lien HTML

21www.objis.com - Formation STRUTS

Page 22: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Controleur : configuration web.xml

22

configuration via struts-config.xml

gestion par controlleur URLs type http://serveur/page.do

Page 23: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Controleur : configuration struts-config.xml

mapping URL / Action Struts

Textes, multilinguisme

Liste beans formulaire (associés à une jsp)

Page 24: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Les 5 sections de struts-config.xml

<form-beans> : Liste des formulaires Struts

<action-mappings> : Partie la plus importante. permet de lier une URL à une action.

<message-ressources> : fichier de propriété

<global-exeptions> : gestion des exceptions

<global-forwards> : donne des noms génériques aux pages jsp. ces noms peuvent être utilisés depuis n'importe quelle action struts.

24www.objis.com - Formation STRUTS

Page 25: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Bean formulaire (<form-beans>)

25

1 champ -->1 variable 1 champ -->1 variable

Page web et bean form associéPage web et bean form associé

Page 26: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DynaActionForm (<form-beans>)

Extension de FormBean

Plus besoin de coder le bean 'à la main' !

FormBean généré dynamiquement par Struts

Configuration dans struts-config.xml

Utilisation directe dans l'action

26www.objis.com - Formation STRUTS

Page 27: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DynaActionForm (<form-beans>)

27

HelloAction.javaHelloAction.java

struts-config.xmlstruts-config.xml

www.objis.com - Formation STRUTS

Page 28: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Action Struts

Objectif : effectuer traitement (généralement à travers instanciation d'une couche métier bean/EJB) puis renvoyer l'utilisateur vers nouvelle page, représentée par ActionForward.

Hérite de org.apache.struts.action.Action

méthode execute() à 4 paramètres

• mapping : permet de retrouver les vues décrites dans

<forward> de struts-config.xml . Ex : mapping.findFormard

(“error”).

• form: formulaire struts décrit (form-bean) dans struts-

config.xml

– request/response : objets HttpServletRequest, HttpservletResponse 28

Page 29: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Action Struts : Exemple

29

Codage de l'action

Configuration de l'action dans struts-config.xml

www.objis.com - Formation STRUTS

Page 30: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Récupération d'objet dans une Action Struts

Pour travailler avec un objet à partir d'une action Struts, nous le crééons (en dur) avec les techniques suivantes

• New()

• JNDI Lookup

INCONVENIENT : cela créée un couplage (statique) fort entre l'objet demandeur et l'objet apellé.

Application : Accès couches services et DAO (Data Access Object)

SOLUTION : injection de dépendances (ex : Spring)30www.objis.com - Formation STRUTS

Page 31: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Bibliothèque de balises

Objectif : aider le développeur à créer des Vues JSP

5 librairies•Bean : manipuler javabean dans JSP•HTML : d'excellente qualité, intuitive. Créer formulaires.•Logic : boucles et branchement conditionnels•Nested : Imbrication. Utile pour les arbres d'objets.•Tiles : Inclusion et paramétrage de fragment tiles.

Détronés progressivement par tags JSTL/EL

31www.objis.com - Formation STRUTS

Page 32: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Bibliothèque de balises

32

Struts 1.3.8Struts 1.3.8

Page 33: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validation coté serveur : exemple

33

Page 34: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validation coté serveur : méthodologie

Il faut redéfinir la méthode validate(ActionMapping mapping,HttpServletRequest request) de l'ActionForm et y implémenter les validations.

Si aucune erreur n'est constatée, la méthode retourne null ou une instance de ActionErrors de taille 0.

Si une erreur est constatée, une instance de ActionErrors contenant une ou plusieurs instances de ActionMessage (ActionError pour d'anciennes versions de Struts) est retournée. Les messages d'erreurs sont alors affichés grâce à la balise <html:errors/>

34www.objis.com - Formation STRUTS

Page 35: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validation coté serveur : mise en oeuvre

35

MessageRessource.propertiesMessageRessource.properties

AdressForm.javaAdressForm.java

Page 36: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validator : présentation

Technologie de validation de formulaire Struts coté client ou Serveur. Souvent utilisé coté client.

Beaucoup de code javascript déja prêt et implémenté dans des classes Jaa (voir validation-rules.xml ). Messages d'erreurs pour • Champs email, entier, chaine, carte de crédit,...

Validation coté client (contraitement à validation coté serveur via validate() du bean formulaire)

Plug-in Struts intégré (balise <plug-in> dans struts-config.xml)

36www.objis.com - Formation STRUTS

Page 37: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validation coté client

37

Page 38: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validation coté client : mise en oeuvre

38

validation.xmlvalidation.xml

MessageRessource.propertiesMessageRessource.properties

struts-config.xmlstruts-config.xml

Page 39: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Validation client : méthodologie

1 : Installer Plug-in validator dans struts-config.xml.

2 : Configurer et ajouter les messages d'erreurs à afficher.

3 : Créer et mettre à jour \WEB-INF\validation.xml avec règles. Attention si pb langue : <formset language=”fr”>

4 : Inclure <html:javascript formName=”NomFormbean”/> dans JSP ,juste avant la fermeture du formulaire (</html:form>)

5 : Ajouter onsubmit=”return validateNomFormbean(this);”lors de la déclaration du formulaire Struts

39www.objis.com - Formation STRUTS

Page 40: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Tiles : présentation

Technologie de création de vues (MVC)

Création de vues par héritage (extends)

Nommer les pages au lieu de donner leur chemin complet

Réutiliser des composants de présentation (Ex : Internationalisation)

40www.objis.com - Formation STRUTS

Page 41: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

mise en oeuvre Tiles : méthode

1 : Ajout du <plug-in> Tiles dans struts-config.xml + vérif présence de struts-tiles.jar dans \WEB-INF\lib + config web.xml

2 : Créer le fichier modèle : template.jsp (“header”, “body”, “left”,...)

3 : Créer fichier \WEB-INF\tiles-def.xml avec une première 'definition'. Ex : definition “accueil” basée sur le fichier modèle (<tiles:insert page='template.jsp'> avec des <tiles:put> de header.jsp, body.jsp...)

4 : Créez d'autres vues héritant de la vue “accueil” par héritage. •Ex la vue index (<definition name=”contact” extends=”accueil”>)

5 : Modifier les <forward> dans struts-config.xml avec noms de vues Tiles . Ex : <action path=”/accueil” forward=”accueil” > 

6 : Packager et Tester l'application

41www.objis.com - Formation STRUTS

Page 42: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Tiles : mise en oeuvre

42

JSPJSP

struts-config.xmlstruts-config.xml

web.xml :init-param du controleur

web.xml :init-param du controleur

www.objis.com - Formation STRUTS

Page 43: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Exemple tiles-def.xml

43www.objis.com - Formation STRUTS

Page 44: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Exemple template.jsp

44www.objis.com - Formation STRUTS

Page 45: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Exemple vue tiles

45www.objis.com - Formation STRUTS

Page 46: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Accès aux données : DataSource

46www.objis.com - Formation STRUTS

Page 47: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DataSource : configuration avec struts 1.2.9

47

Conseil : Utiliser/compléter l'exemple

commenté présent dans struts-blank.war

Conseil : Utiliser/compléter l'exemple

commenté présent dans struts-blank.war

www.objis.com - Formation STRUTS

Page 48: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DataSource : récupération avec struts 1.2.9

48www.objis.com - Formation STRUTS

Page 49: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DataSource : configuration avec struts 1.3.8

49

context.xmlcontext.xml

web.xmlweb.xml

Page 50: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DataSource : récupération avec struts 1.3.8

50

Accès à la base de données via JNDI LookupAccès à la base de données via JNDI Lookup

www.objis.com - Formation STRUTS

Page 51: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

DataSource : Méthodologie

1 : Ajouter le driver JDBC dans librairies chargées par le serveur d'application (Ex : dans \lib pour Tomcat6)

2 : Suivant version de Struts•struts 1.2.x : Ajouter balise <datasource> dans struts-config.xml•Struts 1.3.x : Configurer DataSource (web.xml + context.xml)

3 : Créer la classe Action qui va utiliser la Datasource(Ex : DatabaseAction)

4 : Mapper dans struts-config.xml l'action avec vue (JSP/Tiles)associée au succes de l'action (ex :'success')

5 : Tester l'application

51www.objis.com - Formation STRUTS

Page 52: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Applications modulaires

1 : Préparer un fichier de configuration pour chaque module (struts-module1.xml , struts-module2.xml...)

2 : Informer le controlleur de vos modules

3 : Utiliser les Actions pour se référer aux pages

52

Module

'par

defaut'

www.objis.com - Formation STRUTS

Page 53: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Applications modulaires

Utiliser org.apache.struts.actions.SwitchAction

53

Switch vers module par defaut

Switch vers module B

www.objis.com - Formation STRUTS

Page 54: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Autres Formations Objis

Architectures SOA

Mise en oeuvre ESB (ServiceMix , Mule)

Développement de services web

Développement et Conception XML

Développement Struts

Développement Hibernate

...

54www.objis.com - Formation STRUTS

Page 55: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

55www.objis.com - Formation STRUTS

10 tutoriaux STRUTS 1

Page 56: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

56www.objis.com - Formation STRUTS

Pour aller plus loin

Page 57: Formation Struts  - Formation STRUTS 1 (Struts 1.3.8)

www.objis.com - Formation SPRING

Contact :

[email protected]

www.objis.com

57www.objis.com - Formation STRUTS