Composants du framework Struts

De Wikipractice.

Sommaire

Composants du contrôleur

ActionServlet

Cette classe constitue le cœur du framework Struts : c’est le servlet contrôleur du modèle MVC 2. Le servlet reçoit les requêtes http en provenance de l’utilisateur. Il les analyse et décide du comportement à adopter en réponse à la requête de l’utilisateur. Le comportement de l’application est défini dans un fichier de configuration (struts-config.xml). Le servlet peut opter pour diriger la requête de l’utilisateur vers une page JSP ou vers un autre servlet qui se chargera d’exécuter une action. Le servlet est aussi responsable de valider la requête si un bean de type ActionForm a été défini préalablement dans le fichier de configuration (struts-config.xml). Le servlet contrôleur est toujours unique pour assurer l’existence d’un seul point d’entrée pour l’application. Cependant, la classe ActionServlet est extensible pour permettre l’exécution de certaines méthodes au moment du démarrage de l’application.

Action

Le rôle de la classe Action est de traiter les requêtes qui lui sont envoyées par le servlet contrôleur. Quand le servlet contrôleur décide de déléguer une requête à un servlet Action, il appelle la méthode perform() de ce dernier. Le servlet Action se charge alors de mettre à jour les beans du modèle et, lorsque c’est nécessaire, de commander la mise à jour de la base de données. Quand le traitement est complété, la classe Action retourne un objet de type ActionForward qui identifie le prochain composant (ex. : page JSP) qui aura le contrôle de la requête. On peut créer autant de servlets que nécessaire en héritant de la classe Action. En général, il existe un servlet par action. L’ajout d’une commande ou la modification d’une commande peuvent, par exemple, être considérés comme des actions.

ActionForm

La classe ActionForm permet au développeur de créer un bean contenant les données saisies par l’utilisateur dans un formulaire HTML. Lorsque l’utilisateur appuie sur le bouton submit au bas du formulaire HTML, il envoie une requête au serveur contenant tous les champs du formulaire. Si le fichier de configuration struts-config.xml indique l’existence d’un bean pour le formulaire, le servlet contrôleur met à jour automatiquement les propriétés du bean avec les champs du formulaire puis il appelle la méthode validate() du bean ActionForm. Cette méthode effectue alors la validation du formulaire et retourne un objet de type ActionErrors contenant toutes les erreurs détectées. Si la validation réussit, le bean ActionForm est envoyé au servlet Action à l’aide de la méthode perform(). Par contre, si la validation échoue, la requête est dirigée cette fois vers une page JSP qui affichera la ou les erreurs de validation. (Note : Pour que le servlet contrôleur puisse mettre à jour automatiquement les propriétés du bean, il faut absolument que les champs du formulaire et les propriétés du bean possèdent le même nom.)

Web.xml

Le fichier web.xml est responsable de la configuration de l’application. Il identifie le servlet contrôleur ainsi que les librairies de tags utilisées par l’application. Au démarrage de l’application, le serveur Web lie le fichier web.xml et démarre le servlet contrôleur. Le serveur Web utilise par la suite le fichier web.xml pour déterminer quelles sont les requêtes http qu’il doit envoyer au servlet contrôleur. Toutes les requêtes qui possèdent la même extension que celle indiquée dans le fichier web.xml (en général, l’extension utilisée est « .do ») seront envoyées au servlet contrôleur. Le fichier web.xml contient également la référence aux fichiers ressources de l’application.

Struts-config.xml

Le fichier struts-config.xml permet de configurer le servlet contrôleur. Toutes les actions exécutées par l’application doivent être définies dans ce fichier à l’aide de tags XML. Le servlet contrôleur se sert de ces tags pour créer les objets de type ActionMapping qui serviront à associer la requête avec les servlets de type Action, les beans de type ActionForm, etc. Autrement dit, le fichier struts-config.xml définit le comportement que l’application doit adopter en réponse à chaque type de requête qui lui est envoyée.

ActionMapping(s)

À partir de l’information contenue dans le fichier de configuration struts-config.xml, le servlet contrôleur crée un objet de type ActionMapping pour chaque type de requête qu’il doit traiter. Lorsque le servlet contrôleur appelle la méthode perform() de la classe Action, il passe en argument l’objet ActionMapping qui correspond à la requête. De cette façon, le servlet Action aura accès aux méthodes de la classe ActionMapping pour déterminer à quel composant de l’application (ex. : page JSP) il doit donner le contrôle de la requête une fois que l’action sera terminée. La classe ActionMappings est une collection d’objets de type ActionMapping.

ActionError(s)

La classe ActionError permet de conserver les messages d’erreur générés par l’application. La classe ActionErrors est une collection de plusieurs objets de type ActionError. Les pages JSP ont accès aux messages d’erreur en utilisant les librairies de tags de Struts.

ActionForward

La classe ActionForward est utilisée pour déterminer la destination de la requête une fois l’action complétée. Pour une même action, il est possible de définir plusieurs destinations possibles dépendamment du résultat de l’action. Par exemple, si l’action login réussit, la destination sera le menu principal de l’application. Par contre, si l’action échoue à cause d’un mot de passe invalide, la destination sera la page de login. Ce mécanisme apporte beaucoup de souplesse à la logique de l’application.

Composants du modèle

Java Beans

Les Java Beans permettent de conserver les données de l’application et d’y accéder. Comme les données sont spécifiques à chaque application, il n’y a pas de classes de modèle incluses dans le framework Struts (à part les beans de type ActionForm). Chaque développeur doit donc développer ses propres beans de modèle. Un Java Bean, par définition, est constitué d’un ensemble de méthodes get et set qui permettent d’obtenir et de mettre à jour les propriétés du bean. Dans une application de magasinage en ligne, par exemple, on pourrait décider de créer un bean pour la commande et un bean pour le client. Si le nom est une propriété du client et la date une propriété de la commande, il faudrait que le bean client possèdent les méthodes getNom et setNom et le bean commande les méthodes getDate et setDate. Les servlets utilisent les méthodes setXxx pour mettre à jour les propriétés du bean de modèle. Par la suite, les pages JSP utilisent les méthodes getXxx pour afficher les propriétés du bean. L’accès aux propriétés des beans est facilité par l’utilisation des tags de Struts. Quand un développeur crée un bean, il doit également définir le scope du bean. Le scope détermine la durée de vie du bean ainsi que le contexte dans lequel le bean sera visible. Le développeur a le choix de définir le bean avec un scope de page, de requête, de session ou d’application.

Accès aux données

Comme nous l’avons déjà mentionné, Struts ne supporte pas l’accès aux données stockées dans une base de données. Par contre, le framework s’intègre bien à d’autres technologies d’accès aux données comme JDBC et JNDI.

Composants de la vue

Librairies de tags JSP

Les pages JSP ne sont pas incluses dans le framework Struts car celles-ci sont spécifiques à chaque application Web. Par contre, Struts fournit des librairies de tags JSP qui facilitent la création des pages JSP. Ils permettent de réduire au minimum le nombre de lignes de code Java nécessaires pour créer une page JSP. Les tags sont définis dans des fichiers texte avec une extension « .tld ». Ces fichiers sont identifiés dans le fichier de configuration web.xml.

Fichiers ressources

Struts offre la possibilité d’internationaliser le contenu des pages JSP. Pour chacune des langues supportées par l’application Web, le développeur doit simplement créer un fichier texte avec une extension « .properties ». Le servlet contrôleur utilise le fichier web.xml pour localiser les fichiers ressources et créer les objets de la classe ResourceBundle qui supportent l’affichage du texte en différentes langues. Un fichier ressource est conçu comme un index : chaque ligne de texte est associée à une clé. Les clés sont les mêmes dans tous les fichiers mais, bien sûr, le texte varie en fonction de la langue du fichier. Les pages JSP utilisent ces clés pour afficher le texte dans la langue choisie par l’utilisateur. Cela est possible grâce aux librairies de tags de Struts. (Note : La classe ResourceBundle n’est pas une classe spécifique à Struts. Elle fait partie du JDK.)

Commentaires

Vous pouvez commenter cet article. Cliquez sur « Modifier »


Acticle connexe

Réalisation d’une application Web

Collaborateurs

Véro

Traduction

Article à traduire en anglais.

Google AdSense