Présentation du framework

Apache Struts est un framework open-source gratuit pour la création d’applications Web en Java. Il a été initialement développé par Craig Mc Clanahan qui l’a donné au projet Jakarta d’Apache en mai 2000. 

Le framework fournit son propre contrôleur Web et s’intègre avec d’autres technologies proposant le modèle et la vue.

Pour le modèle, le framework peut interagir avec des technologies d’accès aux données tel que JDBC (Java Database Connectivity), EJB (Enterprise Java Beans) et Hibernate. Pour la vue, le framework fonctionne aussi bien avec les JavaServer Pages, incluant les JSTL (Java Standard Tag Libraries) et JSF.

Le contrôleur de Struts agit comme un pont entre le modèle de l’application et la vue Web. Lorsqu’une requête est reçue, le contrôleur invoque la classe Action. La classe Action consulte alors le modèle pour examiner et mettre à jour l’état de l’application. Le framework fournit une classe ActionForm pour faciliter le transfert de données entre le modèle et la vue. Dans la plupart des cas, le modèle est représenté par un ensemble de JavaBeans.

(Source : http://struts.apache.org/1.x/index.html)

Configuration de Struts en quelques mots  

Une application Web Java utilise souvent un descripteur de déploiement nommé « web.xml » permettant d’initialiser les ressources tel que les servlets (module de code Java exécuté sur un serveur d’application) et les taglibs (librairies de balises).

De la même manière, le framework utilise un fichier de configuration nommé « struts-config.xml » pour initialiser ses propres ressources. Ces ressources incluent les ActionForm pour la collecte des données entrées par l’utilisateur, les ActionMappings pour la direction de ses données vers les Actions côté serveur, et  les ActionForwards pour la sélection des pages de sortie. 

Voici une explication de la terminologie employée dans Struts : 

ActionForm

Il représente un formulaire HTML avec lequel l’utilisateur interagit à travers une ou plusieurs pages. On devra y fournir les attributs permettant de garder l’état du formulaire avec des getters et des setters pour y accéder.

 Le framework remplit les attributs par les paramètres de la requête et envoi le formulaire après validation à la méthode execute de l’action appropriée.

L’objet ActionForm offre peut agir aussi en tant que « firewall » entre HTTP et Action en fournissant un mécanisme de validation automatique des données d’un formulaire.

Grâce à la méthode validate, le ActionForm produit des messages d’erreurs prédéfinis dans l’application. Bien entendu, cette validation peut être ignorée.

 ActionMapping

A fin de fonctionner correctement, notre servlet contrôleur a besoin de savoir comment chaque URI (uniform resource identifier) de requête doit être acheminé (mapped) à la classe Action appropriée. Les informations nécessaires sont encapsulées dans une classe Java appelée  ActionMapping, qui elle-même tire ses informations de la balise action du fichier « struts-config.xml ». Les propriétés les plus importantes de cette balise sont les suivantes :

  • type : Nom complet de la classe Java d’implémentation de l’Action utilisé par le mapping.
  • name : Nom de l’ActionForm qu’utilisera l’Action. Ce nom est défini dans la balise <form-bean> du fichier struts-config.
  • path : Chemin utilisé pour désigner le mapping.
  • Balise forward : Couple Jeton/Chemin vers la cible.

Exemple de balise action :

 <action input=”/LoginForm.jsp”

 name=”NewStrutsActionForm”                

 path=”/login”                       

type=”com.myapp.actions.NewStrutsAction”>

<forward name=”success” path=”/loginsuccessful.jsp”/>

</action> 

Actions 

Le but de la classe Action est de traiter une requête via sa méthode execute et de retourner unActionForward qui détermine où le contrôle doit être dirigée (par exemple une JSP ou une autre Action) pour produire la réponse voulue.

 public ActionForward execute(ActionMapping mapping,

                    ActionForm form,

                    ServletRequest request,

                    ServletResponse response)

                    throws Exception;

 Voici l’explication des objets en paramètres :

  • mapping : La « carthographie » de sélection de la cible.
  • form : Le bean ActionForm associé à cette requête.
  • request : La requête HTTP traitée.
  • response : La réponse HTTP traitée.

(Source : http://struts.apache.org/1.x/index.html)