Java Server Faces et Struts

publicité
Auteur :
Laura Zunarelli
Etudiante en Master 2ème année professionnel Génie Informatique en apprentissage
Mail : [email protected]
Synthèse réalisée dans le cadre de l’U.E. : Etude et Projet d’Intergiciels
Résumé :
De nos jours, il existe de plus en plus d’applications web et celles-ci sont de plus en plus
compliquées. C’est pourquoi afin d’aider leur développement, on utilise des frameworks. Ces
frameworks permettent d’assurer l’évolution et la fiabilité de ces applications web.
Struts et JavaServerFaces (JSF) sont des standards parmi les frameworks de ce type.
En s’appuyant sur le modèle MVC ils permettent une meilleure séparation entre les
métiers d’informaticiens et ceux d’infographistes.
Actuellement, la plupart des applications web utilisent Struts ou JSF voir les deux…
Devenus incontournables dans ce domaine, nous allons, au cours de ce document, explorer
plus en détails ces deux frameworks.
Mots clés :
Struts, JavaServerFaces, JSF, framework, modèle MVC, applications web.
Abstract:
Nowadays, there is more and more web applications and they are more and more
complicated. That’s why, to help their development, we use frameworks. These frameworks
enable to ensure web application reliability and evolving.
Struts and JavaServerFaces (JSF) are standards among these frameworks. Based on the
MVC model, they enable a better separation between computer scientists and infographists.
Currently, the majority of web applications use Struts or JSF or the two…
Became inescapable in this domain, during this document, we explore in more details
these two frameworks.
Key Words:
Struts, JavaServerFaces, JSF, framework, MVC model, web applications.
Introduction :
Ce document porte sur deux frameworks standards pour la construction d’applications
web : Struts et JavaServerFaces. Après une brève introduction sur les frameworks,
l’application du modèle MVC dans Struts et dans JavaServerFaces (JSF) sera expliquée. Puis
chacun des deux frameworks seront explorés plus en détails. Pour conclure, une constatation
sur les principales différences entre ces deux frameworks et sur leur futur sera dressée.
1. Les frameworks
Avant l’arrivée des frameworks, le développement d'applications Web était simplement
constitué d’une page HTML et d’un navigateur. Aujourd'hui nous sommes confrontés au
développement d'applications bien plus complexes. Pour cela nous utilisons des frameworks.
Ces frameworks, ou : « cadre de conception » sont des espaces de travail modulaire. Il
s’agit d’un ensemble de bibliothèques, d'outils et de conventions permettant le développement
rapide d'applications. Leur but est d’accroître la productivité des développeurs dans le
développement des interfaces utilisateurs, en fournissant une architecture facilitant leur
maintenance. Ils permettent donc d’améliorer la réutilisabilité des applications, d’en accroître
la fiabilité, de diminuer les coûts et délais de développement et d’assurer leur évolutivité.
Avec leur apparition, de nombreux outils ont vu le jour. Parmi eux, Struts et JavaServerFaces
(JSF). Ceux-ci constituent aujourd’hui les deux standards dans le domaine de la conception
d’applications web. Ce sont ces deux standards que nous allons donc étudier plus en détails…
2. JSF, Struts, et le Modèle MVC
a) Le modèle MVC
L’un des principaux atouts de ces deux frameworks est l’utilisation du patron de
conception MVC (Modèle, Vue, Contrôleur). Celui-ci, leur permet de mieux dissocier les
métiers d’infographistes et d’informaticiens. En effet, ce modèle d’architecture est constitué
de trois parties. La première : le contrôleur, reçoit les actions de l’utilisateur et gère la
répartition des traitements entre la vue et le modèle. C’est cette partie qui gère toutes les
entrées de l’application. Le modèle représente la partie métier de l’application : on y retrouve
les états et la logique de l’application. La dernière partie : la vue, est la partie graphique
destinée aux infographistes, dans laquelle seul l’affichage est géré.
b) L’application du modèle MVC dans Struts et JavaServerFaces
Le framework Struts est construit autour d’un puissant contrôleur, tandis que JSF, est
principalement dédié à la couche vue.
Craig McClanahan est le créateur de Struts et l’un des principaux acteurs de JSF. Il a donc
occupé une place importante pour la création de ces deux frameworks, et est bien placé pour
dire que JSF et Struts sont différents mais ne sont pourtant pas incompatibles. Il a ainsi
suggéré une méthode d’intégration afin de combiner les deux frameworks. Le but étant de
combiner les avantages de chacun.
Cependant, Struts et JavaServerFaces n’ont pas été conçus de prime abord pour
fonctionner ensemble dans une même application. En effet, Struts propose des tags libs pour
la gestion des vues et une définition de la navigation au travers des pages. JSF, lui, fournit un
manageur des cycles de vie de l’application au travers de servlets de contrôle.
3. Présentation de Struts
a) Présentation générale
Struts, fut le premier des deux frameworks à arriver sur le marché. Apparu en 1998, il eu
beaucoup de succès. Compatible avec la plate-forme J2EE de Sun, Struts fait parti du projet
Jakarta (mené par l'ASF, l'Apache Software Foundation). L'adresse officielle de Struts est :
http://jakarta.apache.org/struts.
Le succès de ce framework repose sur sa capacité à répondre aux besoins des
développeurs actuels en termes de création d'applications et en termes de rapidité de mise en
œuvre. Struts est une combinaison des servlets Java, des JSP, des balises personnalisées et des
ressources messages qui forment une base unifiée. Struts est puissant, répandu, et mature. Dès
son arrivée, il a su s’imposer pour les applications de grandes tailles. Cependant son
utilisation de nos jours perd tout son sens pour les applications simples. En effet, pour les
petites applications, l’application de Struts pourrait prendre bien plus de temps que la
construction de l’application elle-même…
b) Principes de mise en œuvre de Struts
Une application basique de Struts est composée des trois parties du modèle MVC. Ces
trois parties sont généralement situées dans trois dossiers différents. Les pages jsp exploitent
des balises personnalisées de Struts :
Exemple : <%@ taglib prefix="s" uri="/struts-tags" %>
Il est cependant conseillé d’utiliser aussi la bibliothèque JSTL.
Les servlets sont utilisées de manière transparente via des classes.
La structure de l’application web doit être décrite dans un fichier: struts.xml. Ce fichier
contient toutes les règles de navigations nécessaires à l’application.
Exemple :
<action name="HelloWorld" class="example.HelloWorld">
<result>/example/HelloWorld.jsp</result>
</action>
Dans cet exemple, en tapant l’adresse pour accéder à la page de bienvenue dans le
navigateur, une redirection sera effectuée pour consulter la page HelloWorld à la place.
c) Les bibliothèques de Struts:
Voici un petit résumé des bibliothèques que l’on retrouve dans Struts :
 Les librairies Struts*.jar: contiennent les classes java distribuées par le projet Struts.
 Les fichiers commons*.jar sont utilisés par l’implémentation.
 Les autres fichiers *.jar sont importés par Struts mais proviennent d’autres projets.
C’est ainsi le cas de la librairie : struts-jsf-plugin.jar qui est un plug-in jsf pour Struts.
Au déploiement de l’application les archives nécessaires sont copiées dans le répertoire
WEB-INF/lib.
4. Présentation de JavaServerFaces (JSF)
a) Présentation générale
JavaServerFaces est paru en 2004 après Struts. JSF a été réalisé par Sun pour J2EE1.
L’adresse officielle de JavaServerFaces est :
http://java.sun.com/javaee/javaserverfaces/
Beaucoup crurent que l’arrivée de JSF allait écraser son concurrent. En effet, bien intégré
aux projets de Sun tels que Java Enterprise Edition (Java EE), JSF a su s’imposer par sa
simplicité. La partie Vue de JSF a été bien pensée et est très simple d’utilisation. Ainsi son
utilisation s’impose pour les projets de petites tailles.
b) Principes de mise en œuvre de JavaServerFaces
Une application basique de JSF est constituée de deux dossiers : l’un contient la partie
modèle de l’application. Tandis que l’autre contient la partie Vue de l’application ainsi qu’un
dossier WEB-INF qui constitue le contrôleur. De manière à permettre aux développeurs web
de se concentrer uniquement sur leurs besoins, JSF utilise XML ou des propriétés. Les pages
jsp (java server pages) utilisent des balises personnalisées JSF :
Exemples : <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
La structure de l’application web doit être décrite dans un fichier: faces-config.xml. Ce
fichier contient toutes les règles de navigations nécessaires à l’application.
Exemple :
<navigation-rule>
<description>
The decision rules used by the NavigationHandler to determine which view must be
displayed after the current view, response.jsp is processed.
</description>
<from-view-id>/response.jsp</from-view-id>
<navigation-case>
<description>
Indicates to the NavigationHandler that the greeting.jsp view must be displayed if
the Action referenced by a UICommand component on the response.jsp view returns the
outcome "success".
</description>
<from-outcome>success</from-outcome>
<to-view-id>/greeting.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Dans cet exemple on voit que l’action « success » permet de passer de la page
response.jsp à la page greeting.jsp
Nous parlerons ici de l’implémentation de référence de Sun mais il faut savoir qu’il
existe une autre implémentation de ce framework : Apache MyFaces qui fait parti du projet
Jakarta.
1
c) Les bibliothèques de JavaServerFaces:
Voici un petit résumé des bibliothèques que l’on retrouve dans Struts :
 Les librairies jsf-api.jar : contiennent les classes standards de JSF ainsi que les
interfaces à satisfaire par les implémentations de JSF.
 Les archives jsf-ri.jar : représente l’implémentation de référence de Sun pour l’API de
JSF.
 Les librairies jstl.jar & standard.jar contiennent les fichiers JSTL. L’implémentation
de référence étant basée sur JSTL.
 Les fichiers commons*.jar sont utilisés par l’implémentation de référence de Sun.
De même que pour Struts, au déploiement de l’application les archives nécessaires sont
copiées dans le répertoire WEB-INF/lib.
5. Conclusion
a) Struts vs JSF
Comparons maintenant ces deux frameworks. L’utilisation des tags rend l’utilisation de
JavaServerFaces plus concise, plus puissante et plus simple que celle de Struts. De plus, JSF
ne se limite pas à http et html : contrairement à Struts, JSF utilise aussi les formats : XUL,
XML et WML… Cependant la documentation de JavaServerFaces si elle est variée, reste
néanmoins confuse et pas assez détaillée. Il peut donc être difficile de s’y retrouver.
On peut commettre des confusions au niveau des noms des pages utilisant la bibliothèque
JSF : les pages se terminent par .jsp alors que leurs url se terminent par .jsf (ou .faces dans le
cas l’implémentation d’Apache).
Mais leur différences, et en particulier le fait que Struts soit plus centré sur la partie
contrôleur que sur la partie Vue contrairement à JSF ont permis aux deux frameworks de
coexister.
b) Struts Shale… Le futur ?
En dehors de Struts et de JavaServerFaces, d’autres framework pour applications web
peuvent être utilisé tels que Spring MVC, barracuda, webwork… Cependant, Struts et JSF
continuent de dominer les autres frameworks en matière d’applications web.
De nos jours, Struts a autant de succès que son principal concurrent : JSF. Les
constructeurs de Struts l’ont compris et ont tenté de combiner les avantages de Struts et ceux
de JSF au travers de Struts Shale.
Apparu en 2005, Struts Shale est un nouveau framework MVC (Modèle Vue Contrôleur),
basé sur Javas Server Faces. Cependant, celui-ci se concentre sur la partie Contrôleur tout
comme Struts en intégrant de puissants outils pour cette partie. La partie Vue reste déléguée à
une implémentation de JSF.
Struts Shale est encore un framework très récent, mais en combinant les avantages de
chacun des deux standards d’aujourd’hui, il pourrait, en devenant plus mature, les
supplanter…
Références :
Références sur Struts:

Document pdf de la société serli informatique réalisés par mickaël Baron en 2007.
Titre : « Tutoriel Jakarta Struts »
http://tahe.developper.com/java/struts
Ce tutoriel permet de découvrir la structure de struts : ses composants et leurs
fonctionnements, l’intégration du modèle MVC pour Struts…

« Bye-bye Struts, Hello Struts Shale » de Pierre Tran en février 2005
http://www.lemondeinformatique.fr/actualites/lire-bye-bye-struts-hello-struts-shale7856.html
Le point sur Struts: entre Struts Shale, et les différentes versions de Struts

« Introduction au framework Struts Jakarta » de Sue Spielman en mai 2001
http://projectomega.org/article.php?lg=fr&php=oreilly_jakarta1&p=1
Document sur la rédaction du fichier de configuration de Struts.

« The Struts framework project » de la foundation Apache
http://struts.apache.org/1.2.7/userGuide/installation.html
Ce document official relate le contenu de Struts, en particulier ce qui est distribué
pour Struts. Autrement dit, ses bibliothèques.

Document pdf de bruno Clément réalisé en 2002
http://www.guepard.asso.fr/ibm/sw2002/Struts.pdf
Ce document explique brièvement le modèle MVC, puis parle de l’architecture de
Struts.
Références sur JavaServerFaces:

Tutoriel: « introduction à jsf avec netbeanss » réalisé par Olivier Schmitt en août
2005 :
http://schmitt.developpez.com/tutoriel/java/jsf/introduction
Ce tutoriel permet de découvrir JavaServerFaces, et surtout de comprendre son
fonctionnement au travers d’un exemple simple que l’on peut par la suite complexifier.
Cependant cet exemple est mis en place avec netbeans et ce n’est pas forcément la
manière la plus simple de réaliser un premier exemple avec JavaServerFaces

Document pdf de la société serli informatique réalisés par mickaël Baron en 2007 :
« Introduction au frameworf JSF »
http://mbaron.developpez.com/javaee/jsf
Ce document permet de comparer un peu Struts à JavaServerFaces. Il explique aussi
le fonctionnement théorique de JavaServerFaces : son cycle de vie, sa configuration…

« JSF en quelques mots » de François Goldgewicht datant de juin 2007 :
http://blog.valtech.fr/wordpress/2007/06/28/jsf-en-quelques-mots
Ce document présente les concepts de base de JSF : origine, présentation de ses
bases…
Autres :

« Understanding JavaServer Pages Model Architecture » de: Govind
Seshadri, JavaWorld.com, 12/29/99:
http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html
Explique les principes des pages JSP.

« The evolution of web application architectures » de McClanahan en août 2005
http://people.apache.org/~craigmcc/oscon_2005_web_architectures.pdf
Document comparant différents frameworks.

« JavaServerFaces vs Struts » de Roland Barcia paru en septembre 2004
http://homepage1.nifty.com/algafield/barcia.html
Evaluation sous différents critères (maturité, navigation, intégration…) de JSF et de
Struts
Téléchargement