TUTORIELS 
Première approche de Struts
Struts est désormais LE standard pour le développement d'applications Web en Java. Présentation.  (10 février 2003)
 

Jakarta Struts est un projet open-source géré par le groupe Jakarta de la communauté Apache, déjà responsable, entre autre, du serveur HTTP du même nom et de PHP. Jakarta est un groupe dédié aux technologies Java côté serveur. Struts est un environnement de développement Java combinant deux technologies, les JSP et les Servlets, en une implémentation MVC (Modèle-Vue-Contrôleur, ou Model-View-Controler), dans le but de séparer la présentation, les données et les transactions.

La conception MVC
Pour bien comprendre la portée du travail accompli par Struts, il faut tout d'abord comprendre ce qui s'y trouve à la base, le modèle de conception Modèle-Vue-Contrôleur. Ce modèle se décompose, comme son nom l'indique, en trois composants:

Le Modèle d'une application est composé de deux sous-systèmes: l'état interne du système et les actions possibles pour modifier cet état. Struts permet d'utiliser de nombreuses approches différentes pour accéder au Modèle, comme les JavaBeans, les classes ou une base de données. Cela dépend généralement de la taille du projet et de l'approche la plus adaptée...

La Vue est construite à l'aide de pages JSP contenant du texte HTML ou XML statique, et ayant la capacité d'y insérer selon les requêtes du contenu dynamique. Struts comprend une bibliothèque interne de balises qui facilitent la création d'interfaces utilisateur, et interagissent sans problème avec le Modèle. C'est généralement une page JSP.

Le Contrôleur est le composant le plus important d'une application Struts, c'est lui le centre névralgique. Ce Servlet délègue les requêtes HTTP vers le gestionnaire approprié, qui est lié à un Modèle. Ainsi, chaque gestionnaire agit comme un adaptateur entre la requête et le Modèle. Le Contrôleur passe ensuite par la Vue pour gérer le Modèle, ce qui créé une forme de liaison entre Vue et Modèle.

Struts permet aux développeurs de construire des services sans se soucier du HTML qui l'entoure. Plusieurs Vues peuvent être utilisées, permettant l'accès à l'application pour un plus grand nombre de plate-formes, du Web traditionnel (HTTP) aux technologies sans fil (WAP, iMode, Palm). De plus, le développement peut ainsi totalement être dissocié entre contrôleur (Java) et vues (HTML + JSP). Struts est ainsi une excellente alternative aux Servlets et JSP, d'autant que ses divers composants sont des standards établis.

Struts a été conçu pour offrir de la modularité, au prix d'un peu plus de complication que pour un projet ne requerrant qu'une simple page JSP. Malgré tout, c'est désormais un standard de conception auquel il est nécessaire d'adhérer, surtout si l'on se trouve face à un projet conséquent.

Les répertoires
L'une des spécificités de Struts est la structure des répertoires d'une application, qui provient des applications web définies par Sun dans sa spécification des Servlets. Elle est primordiale avant la construction de celle-ci. Cette structure se décompose principalement en un répertoire racine, un répertoire secondaire et deux sous-répertoires:

/monApplication 
/monApplication/WEB-INF
/monApplication/WEB-INF/classes
/monApplication/WEB-INF/lib

web.xml
Le fichier web.xml, qui se trouve dans le répertoire /monApplication/WEB-INF, est le descripteur de déploiement: il décrit tous les composants de l'application Web.

(exemple de fichier web.xml)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>
      org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
</web-app>


Struts est un sujet vaste qui ne peut être abordé dans un seul article. Après cette courte présentation, nous aborderons d'autres spécificités de Struts qui vous permettront dans découvrir la véritable puissance.

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page