É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.

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