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