Struts 2 : première application

L'objectif de cet article est d'expliquer comment mettre en place le framework Struts 2 : (configuration des fichiers,  implémentation des actions, implémentation des jsp). Pour ceci, nous allons créer une application de gestion d'utilisateur se basant sur le framework Struts 2. Dans une première étape, nous nous limitons à l'implémentation de l'action d'authentification afin  de se concentrer sur les bases nécessaires pour la configuration et l'utilisation de Struts 2. Ensuite, nous ajouterons d'autres fonctionnalités d'ajout, suppression et modifications des utilisateurs et des droits.

Nous intégrerons par la suite, dans les prochains articles, les framework Freemark, Hibernate et Spring.

Présentation du Struts 2

Contrairement à ce que peut indiquer le nom, Struts 2 n’est pas une continuation de Struts 1 mais une fusion entre les frameworks Struts 1 et WebWork.
Struts 2 est créé pour répondre aux  faiblesses de Struts 1 et particulièrement le fort couplage des actions avec le framework et l’obligation de re-décrire un javabean pour récupérer un formulaire.

Le cycle de vie standard de Struts 2 est définit par le schéma ci-dessous :

cycle de vie de struts
  • Une fois le « dispatcher filter » passé, la requête est soumise aux intercepteurs. Ces derniers ont pour rôle d’effectuer des pre/post traitements sur la requête (gestion des exceptions, upload de fichier, validation...).
  • L’action est instanciée, peuplée puis le formulaire est validé.
  • Invocation de la méthode contenant la logique de l’action.
  • Délégation de l’affichage à la vue.
Application Gestion des utilisateurs

Pour commencer, créez sous eclipse un nouveau projet web « UserAdmin ».
Ajoutez au projet les librairies suivantes :
  1. struts2-core.jar
  2. xwork.jar
  3. ognl.jar
  4. freemarker.jar
  5. commons-logging.jar
Ces librairies sont obligatoires pour créer un projet Struts 2.
La structure du projet est décrite par le schéma ci-dessous :

structure application

Dans ce qui suit, nous allons décrire en détail les fichiers de configuration (web.xml et struts.xml) du projet.

Fichier de configuration web.xml

La configuration minimale du fichier web.xml pour  un projet Struts 2  est la suivante :

web.xml

Les éléments les plus importants dans le fichier web.xml sont filter et filter-mapping utilisés pour la configuration du FilterDispatcher.

Le FilterDispatcher est la servlet de base du framework Struts 2, il permet  de traiter toutes les requêtes en entrée, il permet l'accès aux éléments de base (ConfigurationManager, ActionMapper, ObjectFactory …)  du framework pour traiter les requêtes.

Fichier de configuration struts.xml

struts.xml

Le fichier struts.xml permet de configurer le mapping entre l'URL et l'implémentation de l'action. Ce fichier doit être  dans le dossier  src.

Le fichier struts.xml peut contenir les balises suivantes: constant, package, include, et  bean.
La balise constant :
Struts 2 permet de définir des constantes dans le ficher de configuration struts.xml, ces constantes peuvent être aussi définies dans le fichier de configuration struts.properties.

Il faut juste faire attention à l'ordre de chargement des fichiers de configuration de Struts car une constante définie dans un fichier peut être 'overiden' dans un autre fichier chargé après.

L'ordre de chargement des fichiers de configuration est le suivant:
  1. web.xml
  2. default.properties dans  Struts JAR
  3. struts.properties  dans  WEB-INF/classes
  4. struts-plugin.xml dans chaque plug-in JAR
  5. struts.xml dans WEB-INF/classes
La balise package :
La configuration de l'application peut être fragmentée en package. On peut par exemple créer un package pour chaque module de l'application ou par chaque fonctionnalité.
La synthaxe est la suivante:

<package name="test" extends="struts-default" abstract="false" namespace="/tests" >


</package>
  • name: nom du package, il doit être unique.
  • extends: un package peut extends un autre package, ce qui permet d'accéder à toutes les propriétés du package parent.
  • abstract: si le package est abstract il ne peut pas être accédé à partir d'une URL, il est juste utilisé pour l'organisation de la configuration.
  • namespace: indique le chemin depuis laquelle les actions vont être accessible.
Il est recommandé d'étendre le package par défaut struts-default pour ne pas être obliger à redéfinir des intercepteurs nécessaire pour le fonctionnement de Struts 2.

Les Actions

Créer les actions LoginAction et LogoutAction

actions

La seule contrainte pour les actions, avec Struts 2, est le fait qu’elles doivent implémenter au moins une méthode du type  'no-argument' qui doit retourner un String ou un objet Result, si non on peut utiliser la méthode execute ().

Avec Struts 2, il n'est pas obligatoire d'hériter d'une action générique, mais les actions peuvent hériter de la classe générique ActionSupport  qui implémente la méthode execute().

La classe ActionSupport  implémente plusieurs interface telles que Action, Validateable et  ValidationAware interfaces.

Les jsp

Créer les pages login.jsp et success.jsp

jsp

Pour télécharger l'application cliquez ici application
 
Conclusion
Dans cet article, nous avons vu la configuration minimale pour un projet se basant sur le framework Struts 2. Dans les prochains articles, nous allons voir en détail des aspects plus avancés de Struts 2.

 Référence
Struts 2 in Action par DONALD BROWN, CHAD MICHAEL DAVIS et SCOTT STANLIC