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