Struts 2 - Editions ENI

publicité
Les exemples cités tout au long de cet ouvrage sont téléchargeables
à l'adresse suivante : http://www.editions-eni.fr.
Saisissez la référence ENI de l'ouvrage EI2STRU dans la zone de recherche et validez.
Cliquez sur le titre du livre puis sur le lien de téléchargement.
Chapitre 1
Présentation
1. Qu'est-ce qu'un framework ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Pourquoi utiliser un framework ? . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Normes et standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Framework et développement web . . . . . . . . . . . . . . . . . . . . . 13
3. Les différents frameworks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4. Quel framework choisir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Introduction à la programmation Java Entreprise Edition . . . . . . . . 15
6. Struts 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7. Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8. Installation du framework Struts 2. . . . . . . . . . . . . . . . . . . . . . . . . 20
9. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Chapitre 2
Modèle de conception MVC et Java EE
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2. Premier projet MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3. Projet MVC avec filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2
Struts 2
Le framework de développement d'applications Java EE
Chapitre 3
Commencer avec Struts 2
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2. Fonctionnement général de Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . 42
3. Les intercepteurs Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4. Le fichier de configuration struts.xml .
4.1 La balise <package/> . . . . . . . . .
4.2 La balise <include/>. . . . . . . . . .
4.3 La balise <action/> . . . . . . . . . .
4.4 La balise <result/> . . . . . . . . . . .
4.5 La balise <param/> . . . . . . . . . .
4.6 La balise <constant/> . . . . . . . .
4.7 La balise <global-results/> . . . . .
4.8 La balise <interceptors/> . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
46
47
48
49
51
51
52
52
5. Architecture Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6. Les fichiers de propriétés struts.properties et default.properties . . . 55
7. Le fichier de propriétés de l'application web.xml. . . . . . . . . . . . . . . 59
8. Le fichier de configuration struts-default.xml . . . . . . . . . . . . . . . . . 60
9. Une première application Struts . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Chapitre 4
Gestion des traces et débogage
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2. Gestion du débogage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3. Gestion du profilage (Profiling). . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3
Table des matières
Chapitre 5
Gestion des actions
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2. Classes d'action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3. Gestion des ressources . . . . . . . . . . . . .
3.1 Accès aux ressources par classe . . .
3.2 Accès aux ressources par interface .
3.3 Passage de paramètres . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
84
85
86
91
4. Gestion dynamique du mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5. Invocation dynamique de méthodes . . . . . . . . . . . . . . . . . . . . . . . . 98
6. Gestion des résultats. . . . . . . . . .
6.1 Redirection avec paramètres
6.2 Redirection sans paramètre .
6.3 Redirection vers action . . . .
6.4 Redirection chaînée . . . . . . .
6.5 FreeMarker et Velocity . . . .
6.6 HttpHeader . . . . . . . . . . . . .
6.7 Stream . . . . . . . . . . . . . . . .
6.8 XSLT. . . . . . . . . . . . . . . . . .
6.9 PlainText. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
102
104
104
108
111
112
113
114
114
114
7. Gestion des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Chapitre 6
Bibliothèque de tag Struts
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2. Les
2.1
2.2
2.3
tags de formulaire . . . . . . . . . . . . . . . . . . . . . . .
La balise <s:form/> . . . . . . . . . . . . . . . . . . . .
Les thèmes de présentation et l’attribut theme
La balise <s:textfield/>. . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
121
122
124
127
4
Struts 2
Le framework de développement d'applications Java EE
2.4 La balise <s:password/> . . . . . . . . . . .
2.5 La balise <s:submit/>. . . . . . . . . . . . .
2.6 La balise <s:reset/> . . . . . . . . . . . . . .
2.7 La balise <s:label/> . . . . . . . . . . . . . .
2.8 La balise <s:head/> . . . . . . . . . . . . . .
2.9 La balise <s:textarea/> . . . . . . . . . . . .
2.10 La balise <s:checkbox/> . . . . . . . . . . .
2.11 La balise <s:select/> . . . . . . . . . . . . . .
2.12 La balise <s:optgroup/> . . . . . . . . . . .
2.13 La balise <s:radio/> . . . . . . . . . . . . . .
2.14 La balise <s:checkboxlist/> . . . . . . . .
2.15 Les autres balises de formulaire Struts .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
127
128
129
130
130
130
131
133
139
142
146
149
3. Les tags de contrôle . . . . . . . . . . . . . . . . . . . . . . .
3.1 La balise <s:property/> . . . . . . . . . . . . . . . .
3.2 La balise <s:a/> . . . . . . . . . . . . . . . . . . . . . .
3.3 La balise <s:action/> . . . . . . . . . . . . . . . . . .
3.4 La balise <s:param/> . . . . . . . . . . . . . . . . . .
3.5 La balise <s:bean/> . . . . . . . . . . . . . . . . . . .
3.6 La balise <s:date/> . . . . . . . . . . . . . . . . . . . .
3.7 La balise <s:set/> . . . . . . . . . . . . . . . . . . . . .
3.8 La balise <s:push/> . . . . . . . . . . . . . . . . . . .
3.9 La balise <s:url/> . . . . . . . . . . . . . . . . . . . . .
3.10 Les balises <s:if/>, <s:else/> et <s:elseif/>.
3.11 La balise <s:iterator/> . . . . . . . . . . . . . . . . .
3.12 La balise <s:append/> . . . . . . . . . . . . . . . . .
3.13 La balise <s:sort/> . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
150
150
153
153
154
155
156
157
158
158
158
159
163
165
4. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5
Table des matières
Chapitre 7
Messages et internationalisation
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
2. Mise en application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
3. Accès aux propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
4. Données multilingues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5. Sélection dynamique des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . 182
6. Accès aux ressources dans les classes. . . . . . . . . . . . . . . . . . . . . . . 184
7. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Chapitre 8
Validation des entrées
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
2. Mise en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
3. Validations . . . . . . . . . . . . . . . . . .
3.1 required. . . . . . . . . . . . . . . . .
3.2 requiredstring . . . . . . . . . . . .
3.3 stringlength. . . . . . . . . . . . . .
3.4 int . . . . . . . . . . . . . . . . . . . . .
3.5 date. . . . . . . . . . . . . . . . . . . .
3.6 e-mail . . . . . . . . . . . . . . . . . .
3.7 url . . . . . . . . . . . . . . . . . . . . .
3.8 regex . . . . . . . . . . . . . . . . . . .
3.9 fieldexpression et expression .
3.10 conversion . . . . . . . . . . . . . . .
3.11 visitor . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
195
195
195
195
197
197
197
199
199
200
203
205
4. Mise en place d'un exemple complet. . . . . . . . . . . . . . . . . . . . . . . 206
5. Gestion des messages d'erreurs et succès . . . . . . . . . . . . . . . . . . . . 212
6
Struts 2
Le framework de développement d'applications Java EE
6. Écrire un validateur . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1 L'interface Validator et les classes ValidatorSupport
et FieldValidatorSupport . . . . . . . . . . . . . . . . . . . . .
6.2 Déclarer les validateurs . . . . . . . . . . . . . . . . . . . . . .
6.3 Mise en application . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Validation dans les classes d’action . . . . . . . . . . . . .
. . . . . . . 219
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
219
220
221
228
7. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Chapitre 9
Gestion des types et conversions
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
2. Gestion des conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
3. Gestion des types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
4. Mise en application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
5. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Chapitre 10
Couche modèle et accès aux données
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
2. Mise en application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
3. L’intercepteur Preparable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
4. Accès et manipulation de données . . . . . . . . . . . . . . . . . . . . . . . . 259
4.1 Le modèle Data Access Object DAO . . . . . . . . . . . . . . . . . . . 260
5. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Table des matières
Chapitre 11
Gestion de l'upload ou chargement de données
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
2. La balise <s:file/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
3. L’intercepteur fileUpload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
4. Chargement unique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
5. Chargement multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
6. Chargement en Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
7. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Chapitre 12
Gestion du téléchargement de données
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
2. Résultat stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
3. Téléchargement dynamique de fichiers . . . . . . . . . . . . . . . . . . . . . 306
4. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Chapitre 13
Gestion des chargements de pages
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
2. Mise en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
3. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Chapitre 14
Développer des intercepteurs
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
2. Écrire un intercepteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
7
8
Struts 2
Le framework de développement d'applications Java EE
3. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Chapitre 15
Développer des résultats
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
2. Écrire un résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
3. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Chapitre 16
Gérer le double clic ou double envoi
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
2. Mise en place du jeton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
3. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Chapitre 17
Struts et Ajax JQuery
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
2. Installation du framework JavaScript . . . . . . . . . . . . . . . . . . . . . . 342
3. Technologie Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
4. Optimisations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1 Utilisation de boutons dynamiques . . . . . . . . . . . . . . . . . . . .
4.2 Gestion des boîtes (box) dynamiques pour les confirmations
et messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Utilisation du plug-in Widget . . . . . . . . . . . . . . . . . . . . . . . .
4.4 Utilisation d’outils dynamiques. . . . . . . . . . . . . . . . . . . . . . .
4.5 Utilisation d’un service d’autocomplétion
pour les recherches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 Gestion des tris dynamiques . . . . . . . . . . . . . . . . . . . . . . . . .
353
353
355
358
364
368
377
5. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
9
Table des matières
Chapitre 18
Les moteurs de templates
1. Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
2. Utilisation de Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
3. FreeMarker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
4. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Chapitre 19
XSLT
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
2. Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
3. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Chapitre 20
Plug-ins Struts
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2. Le plug-in JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
3. Le plug-in Tiles. . . . . . . . . . . . . . . . . .
3.1 Page de mise en forme du modèle
3.2 Définition du modèle . . . . . . . . .
3.3 Mise en place du plug-in Tiles . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
409
412
413
415
4. Écrire un plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
5. Utiliser le plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
6. Les autres plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
7. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Struts 2
10
Le framework de développement d'applications Java EE
Chapitre 21
Struts sans configuration
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
2. Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3. Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1 Nommage . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Annotations d’actions . . . . . . . . . . . . . . . . . .
3.3 Annotations de résultats . . . . . . . . . . . . . . . .
3.4 Annotations d’intercepteurs . . . . . . . . . . . . .
3.5 Annotations d’espace de nommage . . . . . . . .
3.6 Annotations des vues . . . . . . . . . . . . . . . . . .
3.7 Annotations des exceptions. . . . . . . . . . . . . .
3.8 Chargement automatique des configurations.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
428
429
429
432
432
437
438
438
439
4. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Annexe
1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
2. Intercepteurs Struts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
3. Object-Graph Navigation Language OGNL. . . . . . . . . . . . . . . . . . 444
4. En résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Téléchargement