1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 

Struts - Un framework MVC pour vos applications J2EE

3.4.Les vues

Dans le pattern MVC, le composant Vue se concerne sur une seule chose : la création de la couche présentation que voit l’utilisateur. Ce composant ne doit contenir qu’un strict minimum de logique métier et d’analyse complexe.
Les composants Vues sont le plus souvent ceux associés à la réponse de la requête HTTP. Dans le cas de Struts ce sont les JSP qui représente le plus souvent cette vue. En effet, ces fichiers génèrent le HTML qui sera envoyé au client.
Un des avantages des JSP est que l’on peut tout aussi bien intégrer du HTML, des balises JSP ou encore des scriptlets Java dans un même fichier. Cependant l’inconvénient est que la tâche des concepteurs web en est alors complexifiée pour le maintient du look and feel ! De plus un développeur Java est trop facilement attiré par la tendance à abuser des scriplets et à inclure la logique métier (ou instructions conditionnelles) directement dans la JSP !
Avec le pattern MVC, ce problème est résolut car il isole le modèle, les traitements et la/les vues. De plus Struts fournit un ensemble de balises JSP personnalisées servant à construire les composants de la Vue. On retrouve des balises tels que : <html:text>, <logic:iterate> qui donnent aux développeurs Java et aux concepteurs web la possibilité de construire des fonctionnalités sans utiliser de scriplet Java.

3.4.1.Les Tag-lib Struts

Les balises personnalisées du framework Struts constituent une part importante. En effet, elle simplifie grandement le développement de page JSP (composant Vue) et les relient aux autres composants.
Ces balises vous permettront de débugger plus rapidement vos applications car leur nom et description sont un avantage considérable contrairement aux scriplets.
Les balises Struts sont regroupées en quatre groupes :
  • Html : gère l’ensemble des balises html (champs texte, file …)
  • Logic : gère la logique de vos Vue (itération, condition …)
  • Bean : gère l’accès aux bean (et à leur propriétés) de votre application (page, request, session …)
  • Nested : regroupe html, logic, bean en ajoutant une arborescence pour l’accès au bean
Tous les descripteurs de ces bibliothèques sont inclus dans le framework sous le nom de : struts-<<type>>.tld. Par exemple : struts-html.tld représente le descripteur de la bibliothèque html.

3.4.1.1.Struts-Html

Cette bibliothèque est principalement utilisée pour la gestion des formulaires dans Struts. Cependant elle couvre la majorité des balises de base du HTML.
Voici le tableau récapitulatif des tags disponibles :
Tag Name
Description
base
Affiche la balise HTML <Base>
button
Affiche un bouton
cancel
Affiche un bouton de cancel
checkbox
Affiche une checkbox
errors
Affiche l’ensemble des errors de traitement de la requête (champs non valides …)
file
Affiche un champ fichier
form
Définit une balise <form>
frame
Affiche une frame HTML
hidden
Affiche un champ caché
html
Affiche un tag html
image
Affiche un champ image (formulaire)
img
Affiche une balise img
javascript
Affiche le contenu javascript permettant d’effectuer une validation côté client d’un formulaire (utilisation avec le plugin Validator)
link
Affiche une ancre HTML
messages
Affiche l’ensemble des messages accumulés lors de l’exécution de la requête
multibox
Affiche une checkbox
option
Affiche un champ Option
options
Affiche une collection d’options dans un tag Select
optionsCollection
Affiche une collection d’options dans un tag Select
password
Affiche un champ mot de passe
radio
Affiche un bouton radio
reset
Affiche un bouton de reset
rewrite
Affiche une url lié au context en cours
select
Affiche un champ Select
submit
Affiche un bouton envoyer
text
Affiche un champ texte
textarea
Affiche un champ textarea (zone de texte)
xhtml
Affiche un tag XHTML

3.4.1.2.Struts-Logic

Cette bibliothèque contient un ensemble de tags utilisés dans la gestion de condition, itération suivant des objets, et gestion de flux de l’application.

Tag Name
Description
empty
Evalue le contenu du corps de la balise si la variable est null ou vide.
equal
Evalue si le contenu du corps de la balise si la variable est égale à la valeur spécifiée.
forward
Transfert le contrôle à la page spécifiée dans l’entrée ActionForward.
greaterEqual
Evalue le contenu du corps de la balise si la variable est plus grande ou égale à la valeur spécifiée.
greaterThan
Evalue le contenu du corps de la balise si la variable est strictement plus grande que la valeur spécifiée.
iterate
Répète le contenu du corps de la balise suivant la collection spécifiée.
lessEqual
Evalue le contenu du corps de la balise si la variable est inférieure ou égale à la valeur spécifiée.
lessThan
Evalue le contenu du corps de la balise si la variable est strictement inférieure à la valeur spécifiée.
match
Evalue le contenu du corps de la balise si la valeur spécifiée est une sous chaine appropriée de la variable.
messagesNotPresent
Génère le contenu du corps de la balise le message spécifique n’est pas présent dans la requête.
messagesPresent
Génère le contenu du corps de la balise le message spécifique est présent dans la requête.
notEmpty
Evalue le contenu du corps de la balise si la variable est ni null ou ni vide ni une collection vide (testée par isEmpty() de l’interface Collection).
notEqual
Evalue si le contenu du corps de la balise si la variable n’est pas égale à la valeur spécifiée.
notMatch
Evalue le contenu du corps de la balise si la valeur spécifiée n’est pas une sous chaine appropriée de la variable.
notPresent
Génère le contenu du corps de la balise la valeur spécifique n’est pas présente dans la requête.
present
Génère le contenu du corps de la balise la valeur spécifique est présente dans la requête.
redirect
Ecrit un header HTTP Redirect dans la réponse.

3.4.1.3.Struts-Bean

Cette bibliothèque est utilisée pour lire et écrire les données contenues dans des beans, voir même les bean eux-mêmes, ou encore définir de nouveaux beans.

Tag Name
Description
cookie
Définit une variable de script basée sur la valeur du cookie spécifié.
define
Définit une variable de script basée sur la valeur du bean spécifié.
header
Définit une variable de script basée sur la valeur du header spécifié.
include
Charge la réponse depuis une application dynamique et inclut celle-ci dans un bean (type String).
message
Affiche le contenu d’un message internationnalisé) dans la réponse.
page
Expose un spécifique objet du context de la page à un bean.
parameter
Définit une variable de script basée sur la valeur du paramètre (requête) spécifié.
resource
Charge une ressource demandée et inclut celle-ci dans un bean (type String ou InputStream).
size
Définit une variable de script basée sur la taille d’une Collection ou Map spécifié.
struts
Expose l’objet de configuration struts à un bean.
write
Affiche le contenu d’une propriété d’un bean dans la page (out).

3.4.1.4.Struts-Nested

Cette bibliothèque est un peu spéciale car elle regroupe les trois précédentes. Cependant elle permet de structurer vos tags suivant l’arborescence de vos beans.
Voici les trois tags supplémentaires :
Tag Name
Description
nest
Définit un nouveau niveau que les tag fils pourront utiliser.
writeNesting
Définit une variable de script basée sur le niveau courant.
root
Démarre une racine d’une hiérarchie.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Pattern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design pattern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée