Fournir un framework Web Java Open Source prenant en charge :
Struts externalise les interactions entre requête et actions ainsi que le contrôle de validité des formulaires.
Struts applique le DP MVC qui répartit les responsabilités entre :
Lors de la réception d'une requête Web, la servlet de Struts examine l'URL demandé et lui cherche une correspondance (mapping) dans les classes d'actions spécifiées par le développeur. Une instance de cette classe d'action est récupérée (d'un pool) et exécutée.
Cette exécution effectue divers appels métiers, prépare généralement un formulaire (form bean) nécessaire à la vue et retourne un code symbolique indiquant le résultat de son action. La servlet reçoit ce code et lui troue une correspondance (mapping) de vue (JSP) à afficher.
La JSP importe les balises Struts et les utilise pour insérer simplement des données du formulaire (form bean) dans la page retournée à l'utilisateur.
Les formulaires sont des JavaBeans héritant de org.apache.struts.action.ActionForm
.
Etant gérés dans un pool, ils doivent avoir un constructeur par défaut.
Les vues sont des JSP utilisant des TagLibs Struts telles que :
struts-html
pour la construction de code HTML (y compris formulaires depuis Struts 1.1)struts-bean
pour l'accès aux propriétés de JavaBeans (modèles) struts-nested
pour la version de ces TagLib intégrant la notion de hiérarchieTout formulaire se :
reset()
populate()
validate()
.
Le contrôleur est constitué de :
org.apache.struts.action.ActionServlet
fournie par Struts ou dérivéeorg.apache.struts.action.Action
. En tant
que commande, une action n'a qu'à redéfinir le code de sa méthode execute()
pour indiquer ce qu'elle
fait lorsqu'on l'invoque. Cette méthode retourne un ActionForward
représentant le résultat de
l'exécution. C'est en fonction de ce résultat que la prochaine vue à afficher (ou autre action à exécuter) est
choisie d'après la configuration Struts. Cependant, plusieurs autres actions plus spécialisées sont disponibles :
DispachAction
, qui exécute telle ou telle méthode (pas uniquement execute()
) en
fonction d'un paramètre de la requête soumise. Ceci est pratique lorsque l'action varie
fortement en fonction des paramètres (création, suppression, mise à jour par exemple).
LookupDispatchAction
qui considère le paramètre d'action comme provenant directement des
boutons de l'interface utilisateur.ForwardAction
, qui n'effectue rien d'autre que de rediriger vers une destination (une vue
typiquement). Ceci évite d'avoir à écrire des classes d'action aussi simples.Une WebApp utilisant Struts ajoute sous son répertoire WEB-INF
un (ou plusieurs)
fichier(s) de configuration Struts définissant :
Struts Version 1 Commentaire Release 0 1 Module Technologie FixPack 1 Java J2SE 1.2 JDBC 2.0 Optionnel Servlet 2.2 JSP 1.1 Commons DBCP GenericDataSource
(non JNDI)Oui DataBase Connection Pool File Upload Oui Logging Oui Pool Oui Pooling d'objets Services Oui Validator Contribution Oui Validation de formulaires via expressions régulières, code JavaScript généré BeanUtils org.apache. struts.utils
Oui Introspection via des scriplets Collections org.apache. struts.utils
Oui Digester org.apache. struts.digester
Oui XMLMapping XML vers Java, souvent utilisé pour la lecture de fichiers de configuration. XML JAXP 1.0 1.1 DTD Message-Resources Non Oui Internationalisation Erreurs Declarative Non Oui Formulaires ActionForm Oui Formulaires implémentés (classes) DynaBeans Non Oui Formulaires déclaratifs (XML) Actions Action Oui DispachAction Non Oui LookupDispatchAction ForwardAction Non Oui TagLib Tiles Framework d'assemblage de JSP Html options Oui option Oui optionsCollection Non Oui Remplir des options HTML à partir d'une collection. message Oui Insertion d'un libellé. messages Non Oui Itération d'une collection de messages dans la classe ActionMessages. ActionForm Oui image Oui img Oui SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags Oui Logic empty/notEmpty Non Oui Nested Taglib Beans write Non Oui cookie Non Oui header Non Oui parameter Non Oui Util LocalStrings Non Oui LabelValueBean Non Oui Collection clés/valeurs utilisables pour la baslise <html:options> ou ailleurs. MessageResources Non Oui Escape any single quote characters that are included in the specified message string. computeParameters Non Oui Allow a transaction token to be the only parameter in . RequestUtils Non Oui Change to encode ampersands when building a query string.
GenericDataSource
) est livrée pour les infrastructures qui en manquent (Tomcat par exemple).ServletContext
de la WebApp. Mieux vaut leurs
préferer les sources de données fournies par le serveur applicatif (WAS, WLS), qui ont l'avantage d'être plus performantes et accessibles
via le service de nommage (API JNDI). Des DataSource JNDI existent depuis Struts 1.1