Vous êtes sur la page 1sur 5

Framework

Questce quun framework ?


Il existe en programmation deux types dindividus : Les programmeurs systme. Les programmeurs dapplications.

Les programmeurs systme crivent le code qui sera utilis par les programmeurs dapplications. Les programmeurs systme dveloppent les langages Java, PHP, C ou encore C++ et les programmeurs dapplications utilisent ces langages et outils pour crer de la valeur ajoute des fins commerciales. Les programmeurs dapplications se concentrent sur leurs projets sans se soucier des techniques et mcaniques de bas niveaux. Les programmeurs dapplications utilisent des bibliothques ou outils appels : framewo rk. Un framework est un ensemble de bibliothques, doutils et de rgles suivre, qui aident au dveloppement dapplications. Les frameworks sont dvelopps par des programmeurs systme. Un framework e st compos de plusieurs composants qui sont en interaction les uns avec les autres. Les applications peuvent tre crites de manire plus efficace si nous utilisons un framework adapt au projet au lieu dtre oblig de rinventer chaquefois. Un framework Java fournit un ensemble de fonctionnalits part ir dune implmentation objet. Lors de dveloppement grande chelle et de conception par quipe, les frameworks sont alors trs utiles, voire indispensables. Actuellement, diffrents types de frameworks sont disponibles : Les frameworks dinfrastructure systme, qui permettent de dvelopper des systmes dexploitation, des outils graphiques et des plates-formes web (Struts, Spring...) les frameworks communicants (appels intergiciels) les frameworks dentreprise (dveloppements spcifiques) les frameworks de gestion de contenu (type Content Management System). Les frameworks permettent la rutilisation de code, la standardisation du dveloppement et lutilisation du cycle de dveloppement de type itratif-incrmental (spcification, codage, maintenance et volution). On parle galement parfois de progiciel volu lorsque lon dsigne un Framework et son cycle de vie. Actuellement, il existe beaucoup de frameworks dans tous les domaines dapplication et av ec pratiquement tous les langages. Voici une liste non exhaustive des frameworks utiliss en Java : Apache Struts WebWork JSF (Java Server Faces) Spring Wicket

Pourquoi utiliser un framework ?


Les frameworks Java sont apparus pour combler les manques ou faiblesses de lAPI Servlet et JavaServer Pages ( JSP), les Servlets ont t dfinies en 1998 et deux ans aprs, de grandes entreprises avaient dj mis sur Java pour leurs applications web. Pendant plusieurs annes, ces entreprises o nt dvelopp leurs projets de faon autonome sans standard. Aujourdhui, toutes ces socits mesurent limportance des frameworks. Le choix du framework de dveloppement est stratgique pour une entreprise, il sera dterminant pour la qualit, la productivit et la prennit des projets. Quel framework choisir ? Le dveloppement Internet bas sur la technologie Java a t submerg par des API et outils de toutes sortes. Le choix dun framework est bas sur diffrents critres : Est ce que nous devons tout concevoir de A Z ? Le dveloppement permet-il lutilisation dune application prcdemment dveloppe ou une partie ?

Est-ce que nous pouvons utiliser un environnement comme fondement de lapplication ?

La conception de A Z permet de parfaitement matriser une technologie mais ncessite beaucoup de temps et dargent. Le dveloppement partir dapplications existantes est intressant uniquement si les dveloppeurs des projets antrieurs sont prsents. La troisime approche (utiliser un environnement comme fondement de lapplication) est sans aucun doute la meilleure dans la plupart des cas.

Struts 1.x
Le projet OpenSource Jakarta-Struts dvelopp par le consortium Apache permet dacclrer le dveloppement dapplications Internet. Struts 1 est quasiment devenu le standard de fait pour les projets Java EE. Struts 1 est un environnement agrable et puissant qui gre lapplication ainsi que les tches courantes (routage, actions, validations...). Un autre avantage de son utilisation est le nombre croissant dutilisateurs qui tendent prenniser le projet. Actuellement beaucoup denvironnements de dveloppement comme Eclipse proposent des outils pour la programmation Struts 1. Struts 1 est un framework qui offre des outils de validation des entres utilisateurs (saisies et formulaires), des bibliothques de balises JSP pour la cration rapide de pages, une technique de routage pour les pages et accs web et un processus de cration de formulaires base de fichiers XML. Struts 1 offre galement dautres avantages : Struts 1 fonctionne avec tous les serveurs Java EE (Tomcat, WebSphere, Weblogic...). Struts 1 propose une architecture solide et stable (projet Apache). Struts 1 est adapt aux applications web de grande taille. Struts 1 permet de dcomposer une application complexe en composants plus simples. Struts 1 garantit un dveloppement similaire par les quipes de programmeurs. Struts 1 possde une documentation abondante. Struts 1 permet un dveloppement rapide et peu onreux.

Le terme Struts fait rfrence aux piliers ou tais, dans le sens architectural du terme, avec la notion de morceaux ou briques qui soutiennent des btiments, des maisons et des ponts afin dviter quils ne deviennent des ruines.

Struts 2.x
Histo :
Mme si Struts 1.x demeure un standard dans les dveloppements, Struts 2.X reste un framework plus puissant en offrant plus de fonctionnalits et de souplesse. Struts 2.x n'a de commun avec Struts 1.x qu'une partie du nom. Contrairement ce qu'on peut penser, Struts 2 n'est pas une extension ou une autre version de Struts 1, mais une refonte profonde des bases du framework. Struts 2 est un rsultat d'association entre Struts 1 et Webwork. En effet, les deux frameworks ont t fusionns pour crer le framework Struts Titanium qui devient rapidement Struts 2 apportant la puissance du Webwork et la popularit de Struts 1. Struts 2 intgre la nouvelle architecture MVC2. Il se trouve tre plus flexible et propose plus de fonctionnalits que la version 1 tout en diminuant le couplage entre les objets. Le modle de conception de type MVC est actuellement prconis pour le dveloppement dapplications web vol ues. Cependant, les principaux inconvnients de ce type de conception sont : la difficult comprendre le modle et le niveau dexpertise que cela requiert le nombre de fichiers produire (environ trois fois plus) laspect rbarbatif des tches raliser.

Le framework Struts 2 repose sur une dclaration de larchitecture sous forme de fichiers XML ou avec des annotations Java localises dans les fichiers des classes dactions. Struts 2 est un framework orient actions. Les actions sont dcomposes en trois rles. Premirement, les actions jouent le rle le plus important du framework en encapsulant le traitement et le travail raliser par le service. Deuximement, les actions permett ent de manipuler automatiquement les donnes des requtes lors des transferts. Troisimement, le framework dtermine quel rsultat doit tre retourn et la vue afficher en rponse un traitement. Les actions Struts 2 implmentent des objets JavaBeans (classes Java simples) pour chaque groupe de donnes envoyes dans la requte. Chaque paramtre de la requte est dclar dans la classe daction avec un nom identique pour raliser automatiquement le mapping des valeurs. La finalit dune action tant d e retourner une chane de caractres permettant de slectionner le rsultat afficher.

Pour rsumer, Struts 2 repose donc sur le modle de conception de type MVC II (comme il est expliqu dans le schma ci-dessous). Il permet un dveloppement plus rapide, plus souple et rsout plusieurs problmes de conception en fournissant les services suivants : un systme volu de gestion du routage ou navigation un systme de validation de formulaires et dentres, simple mettre en uvre un systme puissant de plug-ins ou dextensions (pour les graphiques, sources de donnes) la gestion de linternationalisation pour le dveloppement de sites multilingues le support de la technologie Ajax un outil de dbogage en standard une bibliothque puissante de balises.

Le framework Struts 2 est une seconde gnration de framework MVC. Le principal avantage de la notion dintercepteurs est la flexibilit de lensemble et la configuration propose. Struts 2 repose galement sur le principe dempaquetage des actions. Lorsque nous dclarons des classes daction avec un fichier XML ou des annotations Java le framework organise tous ces composants sous la forme dune logique de paquetage (packages). Les paquetages Struts 2 sont similaires aux paquetages Java. Ce mcanisme permet galement de grouper les actions par domaine. Les URLs de lapplication sont alors associes des paquetages o chaque action est dclare.

Fonctionnement de Struts 2 :

Une fois le dispatcher filter pass, la requte est soumise aux intercepteurs. Ces derniers ont pour rle deffectuer des pre/post traitements sur la requte (gestion des exceptions, upload de fichier, validation). Laction est instancie, peuple puis le formulaire est valid. Invocation de la mthode contenant la logique de laction. Dlgation de laffichage la vue.

Le mapping
Struts2 n'utilise plus de servlet mais des "Action*" relies une servlet globale. Un mapping doit tre ralis dans struts.xml afin de dfinir les traitements pour action, ainsi que leurs retours dans les diffrents cas (succs, chec,...). Les actions sont prcises par des classes et, ventuellement, par un nom de mthode ce qui permet d'avoir plus action dans une mme classe .

Config Struts 2 :
Struts 2 est un framework de dveloppement. Il comprend un ensemble de bibliothques qui facilitent le dveloppement des interfaces web, cest un framework orient action architectur en xml. Ses Actions permettent daccder aux diffrents Services tel le Model et dterminent ce que la Vue doit afficher aprs leur traitement (traitement des actions par struts.xml). Les actions struts 2 implmentent des objets java appels Beans pour chaque donne envoye via les formulaires. Struts repose sur un modle de conception dis MVC 2 (Modle Vue Contrleur). Ce framework fournit un certain nombre de services tels l e dbogage, les validateurs de formulaire, la gestion de la navigation ou encore la gestion de linternationalisation. La seule contrainte pour les actions, avec Struts 2, est le fait quelles doivent implmenter au moins une mthode du type no-argument qui doit retourner un String ou un objet Result, si non on peut utiliser la mthode execute (). Avec Struts 2, il nest pas obligatoire dhriter dune action gnrique, mais les actions peuvent hriter de la classe gnrique ActionSupport qui implmente la mthode execute().La classe ActionSupport implmente plusieurs interface telles que Action, Validateable et ValidationAware interfaces.

Les rgles et convention de dveloppement en J2EE et Struts 2 Rgle 1 : Ne pas utiliser de java dans la vue.

Rgle 2 : Utiliser de prfrence les taglib de struts 2 <s:/> Rgle 3 : Utiliser les validateur du framework et sa logique

Le descripteur de dploiement web.xml


Cest le fichier central dun projet JEE. Il contient les paramtres et caractristiques de lapplication. Il dot tre prsent dans le dossier webContent/WEB-INF (webContent tant le rpertoire root de lapplication). La configuration minimale du fichier web.xml pour un projet Struts 2 est la suivante :

Les lments les plus importants dans le fichier web.xml sont filter et filter-mapping utiliss pour la configuration du FilterDispatcher. Le FilterDispatcher est la servlet de base du framework Struts 2, il permet de traiter toutes les requtes en entre, il permet laccs aux lments de base du framework pour traiter les requtes.

Fichier de configuration struts.xml


Le fichier Struts.xml, hrite dun fichier plus important : struts -default.xml qui dfinit un ensemble de mcanismes par dfaut. Je ne prsenterais pour le moment que le fichier struts.xml que vous devez placer la racine de votre rpertoire src , racine de votre rpertoire de classes. Ce fichier sert principalement au routage de vos actions et la navigation.

Le fichier struts.xml permet de configurer le mapping entre lURL et limplmentation de laction.

Nous trouvons un certain nombre de balise de type <constant/> qui nous permettent de surcharger le struts default.xml.

A minima nous trouvons : DynamicMethodInvocation = true/false . Cette fonction permet linvocation dynamique de mthode (notation bang !). Il est conseill de la fixer false. DevMode = true/false . Le fichier de configuration struts.xml est lu chaque dmarrage de lapplication. Pour nous viter le fastidieux project/clean a chaque modification du contenu du struts.xml nous passerons le devMode true (mode de dveloppement). i18n.resources name= package . Le mcanisme dinternationalisation utilise des fichiers en name.properties pour les diffrentes langues. Nous fixons une fois pour toute le nom de ces fichiers package. La balise <action/> est toujours utilise entre les balises <package> </package>. Cest elle qui rcupre les actions reues par la couche vue et organise leur traitements ainsi que la page jsp afficher aprs ce traitement. Une action doit avoir un nom (attribut name) qui doit tre le plus comprhensible possible. Une fois le traitement ralis (ou non) par la mthode de classe. Un rsultat est retourn et trait dans la balise <action/>. Pour permettre struts de savoir ou retourner le rsultat de laction nous utilisons la balise <result/>. Cette balise nous permet de rediriger linternaute sur telle ou telle page suivant le rsultat du traitement de laction.

Les Tags Struts 2


Struts2 a conserv le systme de balises propres du type "<s:></s:>". Pour l'utiliser dans les JSP, il suffit d'ajouter le tag suivant : <%@ taglib prefix="s" uri="/struts-tags" %>. NB : L'utilisation de ces balises types est obligatoire pour la ralisation d'un formulaire. Avec Struts 2, on dispose dune nouvelle liste de taglib compose principalement de trois grandes parties : les Generic Tags, les UI Tags (User Interface Tags) et les Ajax Tags.

Generic Tags
Les Generic Tags sont utiliss pour contrler le flux dexcution lors de ltape de rendering dune page. Celle catgorie est aussi divise en deux parties :

Tags de donnes (DataTags) : cration et manipulation de JavaBeans, mise en place de li18n Tags de contrle (Control Tags) : des balises de contrle ifthenelse, gnration ditrateurs et dnumrations

UI Tags
Les UI Tags sont utilises pour afficher les donnes manipules dans la partie vue en un format HTML riche et rutilisable. Toutes les balises UI sont gres pour ce que Struts 2 appelle Template et Theme. Ces deux dernires notions sont au cur des Tag HTML de Struts 2.

Template : des bouts de code, crits souvent en Freemarker et permettent dafficher certains tags (les HTML tag de Struts 2 sont bass sur les Templates) Theme : une collection de Template package ensemble pour afficher un composant complexe.

Ajax Tags Les Ajax tags se basent en, Struts 2, sur le Framework ajax javascript nomm Dojo et sur un plugin Struts 2 nomm Dojo plugin. Ce dernier fourni un ensemble de Tagslib pou r faire des appels asynchrones par exemple.