Struts – un framework MVC2 pour vos WebApp J2EE
Écrire une application web avec un certain nombre de fonctionnalités représente une tâche assez complexe.
Cependant il existe des outils pour faciliter le développement d’applications web. MVC2 est un modèle de conception qui consiste à séparer le Modèle, de la Vue et du Contrôleur. Cela permet entre autre de rendre indépendantes la couche logicielle de présentation et la couche contenant le cœur du métier.
Struts est un framework qui permet d’implémenter un tel modèle de conception au sein d’applications web J2EE.
Sommaire
Introduction
Si vous avez déjà écrit une application web, que ce soit en Java ou dans un autre langage, vous vous êtes rendu compte que la maintenance de ce genre d’application est assez risquée. De plus, un certain nombre de tâches se révèlent répétitives. Parfois même, vous vous êtes heurté à certaines difficultés d’implémentation.
Struts est là pour vous rendre plus efficace et pour vous aider à concevoir des applications beaucoup plus robustes.
MVC
Le MVC est un modèle de conception permettant la séparation des couches logicielles :
- Model (logique métier et accès aux données)
- View (présentation des informations)
- Controler (gestion des interactions de l’utilisateur sur le système).
MVC1
Cette première version du modèle MVC repose sur une séparation en 2 couches verticales :
- les objets métiers (Modèle)
- les objets IHM eux-même séparés en deux groupes :
- les objets d’acquisition d’information en provenance de l’utilisateur (Contrôleur)
- les objets de restitution d’information à destination de l’utilisateur (Vue)
MVC2
La seconde version de ce modèle de conception se base sur la première version. Suite au retour d’expérience sur l’utilisation du MVC1, le modèle a été revu pour être simplifié. Alors que dans un MVC1 il y a avait autant de contrôleurs que d’actions possibles par l’utilisateur, le MVC2 autorise la création de contrôleur gérant un ensemble d’actions. Cela permet de réduire considérablement le nombre de contrôleurs et de les regrouper d’un point de vue fonctionnel (ou en terme de use case).
De plus, ce nouveau modèle recommande l’utilisation d’un super contrôleur. Ce dernier reçoit toutes les interactions de l’utilisateur et les redirige vers le bon contrôleur.
Struts
Dans le cadre du développement d’applications J2EE, Sun recommande d’utiliser le modèle MVC. C’est dans cet optique que le framework Struts a été créé. Struts est un framework OpenSource MVC2 développé en Java par la fondation Apache dans le cadre du projet Jakarta.
Présentation
Struts a débuté en mai 2000 sous la direction de Craig R. McClanahan. Aujourd’hui c’est un projet très actif et reconnu. Au delà du modèle MVC, ce framework fourni les composants suivant :
- Un contrôleur central, configurable pour associer des requêtes HTTP à des actions Java.
- Un ensemble de TLD pour faciliter l’écriture des vues (JSP) et supprimer toute notion à du code Java.
- Outils de mapping entre les formulaires des vues et les objets Java (avec le pré-remplissage de champ).
- Validation avancée des formulaires côté client et serveur par simple configuration.
- Gestion multi-lingue.
- Moteur de patrons de vues uniformiser l’aspect graphique des applications sans dupliquer le code des vues.
- …
Création d’une WebApp utilisant Struts
Deux options sont possibles pour créer une nouvelle WebApp Struts :
- Reprendre la WebApp de base de la distribution complète Struts qui se trouve dans le WAR struts-blank.war et la modifier.
- Construire une nouvelle WebApp à partir de la distribution fournissant les bibliothèques nécessaires à Struts.
Pour une première approche de Struts, la première solution semble la plus simple. Ensuite il suffit de déployer cette WebApp sur votre serveur d’applications ou votre conteneur de Servlet.
Recommandations
Même si Struts permet d’écrire des applications web est façon plus simple en séparant la couche métier de l’IHM, il est facile de tomber dans des pièges de conception ou d’implémentation. De plus, il existe quelques cas de bonne utilisation de ce framework. Cette section tente de les lister et de les expliquer.
Trucs & astuces
Cette section sera alimentée au fur et à mesure de mes expériences sur l’utilisation de Struts.
Conclusion
La première fois que je me suis intéressé à Struts, c’était afin d’écrire des pages JSP sans code Java et pour faciliter le travail des concepteurs graphiques. Aujourd’hui l’utilisation que je fais de Struts a largement dépassé cet objectif.
En effet, les pages JSP que j’écris sont dépourvues de code Java. Mais au delà de cet aspect, la séparation de la couche métier et de la couche IHM est réelle. La factorisation un code accélère la vitesse de développement que ce soit au niveau des JSP ou des contrôleurs. Et pour finir les applications produites sont performantes, sécurisées, multi-lingue, …
Références
- Le site officiel de Struts
- La fondation Apache
- Le projet Jakarta
- Le site officiel de Java
- Web-Tier Application Framework Design
salut
je suis debutante en struts et je cherche une etude de cas ou un exemples bien dettaillé ou une application sur struts
merci d avances
La Web App de démonstration, intitulée mailreader, de Struts est un bon exemple d’application construite avec ce framework.
Bjr Seb, pourrais-tu inclure un schema pour qu’on voit quels sont les composants (M,V,C principal, C mineurs, etc) et les entités (serv Web, browser client, Servlets, etc) à l’oeuvre dans ce framework ?
Un peu comme tu as fait pour présenter MVC mais intégrant un peu plus la technique…
Merci
Bonjour,
Comment faire pour avoir les urls sur cette forme http://monsite/fr/page1.do
non pas sur cette forme http://monsite/page.do?locale=fr.
Cdt
Il faut utiliser l’url rewriting.