Transcript Document

Formation Struts
(Struts 1.3.8)
www.objis.com - Formation STRUTS
1
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
2
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
3
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
4
Rappels J2EE
 Architecture
 Livraisons
 Services
 Modularité
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
5
Architecture J2EE
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
6
Livraisons J2EE
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
7
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 Binding
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
8
Architecture multicouche
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
9
Introduction STRUTS
 Historique
 Pattern MVC2
 Cycle de vie requête HTTP
 Avantages / Inconvénients
 Concurrents
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
10
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
11
Modèle – Vue – Controleur (MVC)
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
12
Modèle – Vue – Controleur (MVC)
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
13
MVC avec Struts
Vue = JSP, HTML, XML...
Controleur = servlet ActionServlet
Modèle (métier) = JavaBean, EJB, Web service...
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
14
Modèle – Vue – Controleur (MVC)
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
15
Cycle de vie d'une requête
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
16
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.
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
17
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
18
Concurents Struts
 Spring MVC ( Conteneur léger, Injection dép.)
 AJAX (Javascript + XML asynchrone)
 WebWork / Struts 2
 JSF (Java Server Faces)
 Tapestry
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
19
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 Tiles
www.objis.com - Formation
SPRING
20
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
21
Controleur : configuration web.xml
configuration via struts-config.xml
gestion par controlleur URLs type http://serveur/page.do
www.objis.com - Formation
SPRING
22
Controleur :
configuration struts-config.xml
Liste beans formulaire (associés à une jsp)
mapping URL / Action Struts
Textes, multilinguisme
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.
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
24
Bean formulaire (<form-beans>)
Page web et bean form associé
1 champ -->1 variable
www.objis.com - Formation
SPRING
25
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
26
DynaActionForm (<form-beans>)
struts-config.xml
HelloAction.java
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
27
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 strutsconfig.xml
– request/response : objets HttpServletRequest,
www.objis.com - Formation
HttpservletResponse
SPRING
28
Action Struts : Exemple
Codage de l'action
Configuration de l'action dans struts-config.xml
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
29
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)
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
30
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
31
Bibliothèque
de balises
Struts 1.3.8
www.objis.com - Formation
SPRING
32
Validation coté serveur : exemple
www.objis.com - Formation
SPRING
33
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/>
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
34
Validation coté serveur :
mise en oeuvre
AdressForm.java
MessageRessource.properties
www.objis.com - Formation
SPRING
35
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 strutsconfig.xml)
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
36
Validation coté client
www.objis.com - Formation
SPRING
37
Validation coté client :
mise en oeuvre
struts-config.xml
validation.xml
MessageRessource.properties
38
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
39
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)
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
40
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
41
Tiles : mise en oeuvre
struts-config.xml
web.xml :
init-param du controleur
JSP
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
42
Exemple tiles-def.xml
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
43
Exemple template.jsp
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
44
Exemple vue tiles
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
45
Accès aux données : DataSource
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
46
DataSource :
configuration avec struts 1.2.9
Conseil : Utiliser/compléter l'exemple
commenté présent dans struts-blank.war
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
47
DataSource :
récupération avec struts 1.2.9
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
48
DataSource :
configuration avec struts 1.3.8
context.xml
web.xml
www.objis.com - Formation
SPRING
49
DataSource :
récupération avec struts 1.3.8
Accès à la base de données via JNDI Lookup
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
50
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
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
51
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
Module
'par
defaut'
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
52
Applications modulaires
 Utiliser org.apache.struts.actions.SwitchAction
Switch vers module B
Switch vers module par defaut
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
53
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
 ...
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
54
10 tutoriaux STRUTS 1
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
55
Pour aller plus loin
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
56
Contact :
[email protected]
www.objis.com
www.objis.com
- Formation
STRUTS
www.objis.com
- Formation
SPRING
57