I- présentation de l’entreprise et du projet








télécharger 134.02 Kb.
titreI- présentation de l’entreprise et du projet
date de publication02.04.2017
taille134.02 Kb.
typeDocumentos
ar.21-bal.com > comptabilité > Documentos
Introduction


J’ai débuté mon stage chez Alloa le 15 mars 2004. Celui-ci allai constituer ma première expérience dans la réalisation d’un site Internet commercial. Au cours de ce stage j’ai dû appréhender le développement J2EE et découvert de nombreux outils et spécifications. Une grande partie du temps à donc était consacré à de la recherche de documentation sur tout ce qui concerne le développement J2EE et JSF (JavaServer Faces) dernière spécification en date de Sun pour la réalisation de pages Web. Ce rapport a donc pour but, en plus de présenter le travail réalisé, de donner une vision globale des outils et concepts intervenants dans la création d’une application J2EE.
Dans ce rapport je présenterai dans un premier temps l’agence Alloa et le projet auquel j’ai participé en exposant le rôle des intervenants et les choix technologiques qui ont été fait. Je consacrerai ensuite une partie à la présentation de JSF et utiliserai un exemple simple d’application faite en JSF pour illustrer mes propos. Dans la troisième partie je présenterai le travail réalisé en soulignant les principes et les points importants de notre développement. Enfin j’établirai un bilan de ce projet en faisant le point sur les éléments réalisés et sur le travail restant.

I- Présentation de l’entreprise et du projet


A- Alloa et la structure informatique en place
-L’agence Alloa :
Alloa est une agence de Voyages située 72 rue Léon Gambetta à Lille. Elle est dirigée par Michel Dewintre, créateur de l'entreprise en 1982 et qui y travaille avec son épouse. C’est une agence polyvalente, proposant des séjours, des circuits, des vols, son point fort étant d’être à l’écoute du client afin de proposer des solutions « à la carte ». Alloa est encore peu présente sur Internet mais elle s’est forgée une solide réputation en tant qu’agence de voyage classique. D’un point de vue technique Alloa se distingue par sa volonté d'être présente sur chaque nouvelle technologie. Cela s'est traduit par un développement sur minitel et aujourd'hui par sa présence sur internet. Le souhait d’utiliser les dernières technologies et d’exploiter au maximum les outils issus du monde libre est également très prononcé.
-Les outils informatiques au cœur d’Alloa :
Pour gérer l'ensemble de ses informations, Alloa dispose principalement de deux outils:
- Une application créée par Michel Dewintre sur OMNIS 7 permettant de gérer la quasi-totalité des données de l'entreprise y compris les séjours et les circuits. OMNIS 7 est un environnement intégré de développement qui intègre les outils nécessaires au stockage des données et à leur manipulation. Il est ainsi possible de créer des formulaires de gestion des données mais également ses propres règles de gestion via un langage de programmation L4G.
-Du moteur de réservation GALILEO et de son application FOCALPOINT. Grâce au logiciel Focalpoint, l'agent de voyages peut consulter le Système de Réservation Central (CRS) de Galileo. Il dispose ainsi d'un accès en ligne aux tarifs actualisés et connaît immédiatement la disponibilité des 503 compagnies aériennes, des 51.000 hôtels et des 34 sociétés de location de voitures. Il peut aussi faire des réservations de manière totalement automatisée.
Les postes réservés au développement informatique sont des PC sous linux et plus précisément une distribution Gentoo. Alloa possède deux DNS, un serveur Internet et un serveur de base de données.
B- Le projet
-L’existant
Le précédent site Internet était développé sous PHP et était associé à une base de données MySql. C'était un site WEB assez abouti mais relativement peu fiable aux dires de Michel. Des problèmes de plantage avec la base de données étaient notamment observés. Sous l’impulsion de Mikaël, étudiant en maîtrise informatique à Nantes et travaillant en parallèle pour Alloa depuis 3 ans, Michel a décidé de miser sur le langage JAVA.

Le projet de refonte en Java et plus précisément en JSP a été initié durant l’été 2003 par Benjamin, qui effectuait alors son stage comptant pour sa 3ème année de formation à l’école des Mines de Douai. Le site n’était plus aussi fonctionnel que celui en PHP mais Michel à tout de même décidé de basculer vers cette architecture. Il ne s’agissait pas d’une structure distribuée, il n’y avait pas d’EJB etc. (voir les explications présente dans ce rapport)
-Les objectifs et le rôle des intervenants
Au cours de l’entretien que j’ai eu avec Michel en vue d’effectuer mon stage au sein de l’agence Alloa, l’objectif premier qui avait été énoncé était de compléter l’application existante et d’étudier par la suite les améliorations possibles. Mais en début de stage il a été convenu de remettre en cause les technologies utilisées et la structure de l’application web comprenant la partie publique (site Internet) mais aussi la partie englobant les modules destinés à un usage interne (Intranet).Il a ainsi été décidé de refondre l’application en utilisant J2EE.
J2EE (pour Java 2 Enterprise Edition) est un ensemble d'APIs dédiées au développement d'applications d'entreprise. Java 2 Standard Edition (la version "standard" de Java) contient par exemple l’API JDBC (pour Java DataBase Connectivity) ou encore RMI (pour Remote Methods Invocation). Le SDK J2EE fournit en plus l’API des EJBs (pour Enterprise Java Beans). Je définirai le terme EJB dans ce rapport.
On entend généralement par "applications d'entreprise" des applications distribuées, qui interagissent par l'intermédiaire d'un réseau. Avec la croissance exponentielle de l'usage des réseaux en entreprise, ces applications sont amenées à se développer et J2EE est la réponse de Sun à ce besoin. L'étendue des APIs J2EE de Sun permet de couvrir l'ensemble des besoins en la matière.

Avec l’arrivée fin mars de Jérôme, étudiant en DESS informatique à Calais et ayant déjà des connaissances en programmation J2EE, nous avons pu avec Michel faire un point sur les éléments à prendre en compte, sur les outils à utiliser ainsi que le type de structure à adopter. Il fallait que l’architecture englobe les aspects Intranet et Internet. Le schéma de la figure I-1 montre le type de structure standard utilisée dans le développement d’applications J2EE dites 3 tiers.


Figure I-1 : Structure classique 3 tiers d’une application distribuée
Je n’avais jamais programmé en utilisant la technologie J2EE et j’ai dû m’initier aux notions de JavaBean, d’EJB ou bien encore RMI et JNDI, notions que je présenterai dans les grands traits par la suite où dont une définition est présente dans le glossaire.
Michel souhaitait aussi utiliser JBoss un serveur d’application et conteneur d’EJB et surtout il voulait tester JSF (JavaServer Faces) la dernière spécification de Sun pour la conception de pages Web. Il insista donc pour utiliser les derniers standards et outils existants pour la réalisation d’applications web même si ceci, on le verra, a engendré un niveau de productivité moindre.
Nous étions donc début avril quatre personnes à travailler sur le projet dirigé par Michel Dewintre. Mikaël avait en quelque sorte le rôle de chef de projet tout en suivant ses études à Nantes, Sonia étudiante en licence informatique et statistique en alternance travaillait sur les données (établissement des tables), quant à Jérôme et moi nous étions chargés du développement. Baptiste n’est arrivé sur le projet que début juin afin de travailler sur l’aspect graphique et du JavaScript.
C -Les choix technologiques
Les choix suivants ont été faits :
-Outil de développement et de déploiement : Eclipse et MyEclipse

-Le serveur web et moteur de servlets: Apache/Tomcat

-Le serveur d’application : Jboss 4

-Le langage des pages Web : JSF

-Base de données : postgreSQL (gestion avec le logiciel pgadmin III)

-Pour la manipulation des données : Hibernate.
Je décrirai le plus brièvement possible les principales notions qu’il m’a fallu appréhender comme les EJB et les principaux outils adoptés pour ce projet. Ce dernier s’annonçait donc comme un pari audacieux du fait, d’un point de vue personnel, de la découverte des outils et du développement J2EE et, d’un point de vue technologique, par le choix de JSF dont La spécification 1.0 finale date du 3 mars 2004.
Le travail est enregistré via un système CVS dont Eclipse fait fortement usage. CVS pour Concurrent Versions Systems est un outil permettant de garder une trace des versions précédentes des fichiers sources d'un projet de développement. L'intérêt est de faciliter la recherche de bogues issus d'une modification malencontreuse du code, en identifiant précisément quel changement en est la cause.
CVS est particulièrement adapté pour les projets collectifs, où chaque développeur peut travailler indépendamment dans son propre répertoire. L'ensemble des changements effectués fait l'objet d'une prise en compte collective par "fusion". On évite ainsi que les modifications d'un des développeurs n'entrent en concurrence avec celles, simultanées, d'un autre. CVS est utilisé par de nombreux projets opensource comme par exemple Mozilla, The GIMP, KDE ou Gnome.
Je vais maintenant aborder dans la partie qui vient les notions de JavaBean et d’Entreprise JavaBean (EJB) puis je présenterai le logiciel Eclipse mais également le serveur JBoss Enfin je présenterai Hibernate.

-Les notions de JavaBean et d’Entreprise JavaBean


Pour expliquer ce qu'est un EJB, je vais me baser sur ce que je connaissais avant ce stage, à savoir une classe Java. Une classe contient des attributs ou encore propriétés. Lorsque l’on décide d'empêcher l'accès direct à ses propriétés, mais de réguler cet accès en imposant aux autres objets l'usage de méthodes appelées “accesseurs ”, la classe est dite “encapsulée” et répond alors à peu prés à la définition d'un Java Bean.

Un Enterprise JavaBean est un JavaBean qui peut s'exécuter sur une autre machine, ou tout au moins dans une autre machine virtuelle Java. Il est installé dans un environnement d'exécution particulier appelé conteneur d'EJB qui, en échange du respect de certaines règles de coopération, lui fournira de nombreux services : accès à des bases de données, gestion des transactions et des ressources, services de messagerie et bien d'autres encore.

L'exécution à distance est presque transparente pour l'utilisateur de l'EJB mais pour développer un EJB, il faut écrire la classe proprement dite, qui s'exécutera dans le conteneur, et l'interface distante ou remote interface, qui spécifie les méthodes que l'on va appeler à distance.

Le problème qui se pose est celui de la création d’une instance d'EJB ? On ne peut pas utiliser new(), qui ne fonctionne pas à distance. C'est donc le conteneur qui va se charger de créer et détruire sur demande les instances d'EJB. Pour le diriger dans cette tâche, il faut donc aussi spécifier une interface de gestion du cycle de vie, dite interface home, qui contient au moins une méthode create() chargée de créer une instance et une méthode remove() pour la supprimer.

-Les différentes sortes d'EJB


On distingue plusieurs sortes d'EJB. Ceux qui constituent des services, par exemple d'information ou de communication, et ne sont jamais associés à un utilisateur en particulier. Ils sont dits EJB sans état de session, en anglais: session stateless.

D'autres EJB sont directement liés à un utilisateur pour le temps de sa connexion au système; l'exemple le plus courant est celui du panier dans une application de commerce électronique. Ceux-là sont appelés EJB avec état de session (session stateful).

Il existe également une dernière sorte d’EJB qui eux représentent les objets persistants de l'application, par exemple les clients et les produits; ces objets doivent persister dans le système d'une session à une autre, et en raison de leurs caractéristiques on les appelle les EJB entités ou entity beans.

Je ne rentrerai pas plus en détail car je viens d’exposer les principales caractéristiques des EJB et ce que j’ai le mieux assimilé. De plus je pense que cela suffira à la compréhension du travail réalisé que je présenterai dans la partie III de ce rapport.


Je vais maintenant présenter les outils qu’ils m’a été donné d’étudier et d’utiliser au cours de ce stage comme Eclipse, JBoss ou bien encore Hibernate.


-Eclipse



Eclipse est une plate-forme de développement lancée par IBM puissante et gratuite. Eclipse est à la base un projet Open Source lancé par IBM afin de remplacer Visual Age, sa suite de produits pour Java. Eclipse a pris de l'importance au point qu’il est définit maintenant comme "un environnement de développement intégré, ouvert et extensible, pour tout et rien en particulier" . Cette description un peu particulière décrit bien ce qu'est Eclipse, à savoir un outil de programmation pour n'importe quel langage et n'importe quel système d'exploitation. En standard, Eclipse peut travailler avec Java, C++ et COBOL mais des extensions (ou plugins) permettent d'utiliser d'autres langages et d’ajouter de nouvelles fonctionnalités.

Eclipse est fournit sous forme d’un fichier zip qu’il faut décompresser dans le répertoire de son choix. Au premier lancement du logiciel, Eclipse se charge de créer un répertoire dans lequel on pourra stocker nos projets ( par défaut un dossier nommé « workspace »).

L'une des principales particularités d'Eclipse est l'utilisation de « perspectives », qui permettent d'adapter l'interface à la manière dont l'utilisateur veut voir le code source. Les perspectives servent à faire le lien entre l’interface de développement ou workbench, et le workspace, qui contient les ressources disponibles : fichiers, projets, répertoires etc. Ainsi, selon la perspective, voir le langage utilisé, l'interface d'Eclipse, tant au niveau des fenêtres que des menus, peut être entièrement modifiée selon le travail que l’on veut faire. La perspective CVS Repository permet par exemple d’explorer le contenu du CVS.

Eclipse est donc extrêmement flexible : on peut facilement créer son propre environnement de programmation, notamment grâce à une foule de plugins. La figure ci-dessous donne un aperçu de l’affichage sous Eclipse (ici en version 2 sous Windows et en perspective MyEclipse dont je parlerai juste après) .



Figure I-2 : vue de l’IDE Eclipse

De nombreuses perspectives tierces (pas toujours gratuites...) sont disponibles pour d'autres utilisations, d'autres langages etc. Les plugins sont automatiquement reconnus et intégrés par la plate-forme et il faut juste avoir mis le plugin dans le dossier « plugins » de l’application et effectuer un redémarrage pour voir le résultat.

La réelle originalité d'Eclipse est sa capacité de refactoring, ceci signifie que le développeur peut rapidement effectuer des changements logiques à une ou plusieurs classes, plutôt que de devoir les faire à la main. Par exemple, le « renommage » intelligent permet, lorsque l'on change le nom d’une classe, de renommer automatiquement toutes ses références sur l'ensemble du projet, sans affecter les noms de classes composés pour partie du nom à changer. Aussi, lorsque l'on tape, Eclipse vérifie, corrige et met à jour le reste du code, dès que les modifications possèdent des ramifications ailleurs dans le code. La complétion du code est également disponible par l’action CTRL+ESPACE.

De nombreux assistants nous permettent de créer les différentes classes, packages ou bien encore des pages JSP, des fichiers xml… en proposant des templates (modèles de base).

Eclipse regroupe donc un grand nombre de fonctionnalités très utiles au développement d'applications java. Pour notre projet nous avions néanmoins besoin d’installer un plugin supplémentaire qui nous assisterait dans les étapes de création des répertoires, des fichiers de configuration et surtout de déploiement sur le serveur JBoss. Nous avons opté pour le plugin MyEclipse dont je vais présenter les principaux intérêts. 

-MyEclipse

MyEclipse est un plugin pour Eclipse qui fournit un environnement de développement  J2EE avec diverses fonctionnalités intéressantes et utiles. MyEclipse est un outil commercial qui fonctionne sur le principe d'un abonnement annuel de 29,95$ par développeur. Il nous a permis de générer automatiquement la bonne structure de dossiers pour le projet et nous permettait, grâce à la prise en charge du serveur JBoss, de déployer facilement notre application dans le répertoire approprié du serveur grâce notamment à un assistant de déploiement de projets J2EE.

Les fichiers du site sont déployés soit sous forme d’archive (.ear) soit sous forme d’un dossier d’extension .war dans un répertoire de nom « deploy » du serveur JBoss que je vais maintenant présenter.

-Le serveur d’application JBoss


JBoss est un serveur d'EJBs sous licence LGPL. Depuis sa version 3 il implémente la version 2.0 des spécifications EJB.

L'installation se réalise en quelques secondes (il suffit de décompresser l'archive dans le répertoire de son choix). JBoss ne contient pas de moteur de Servlets ou de JSP et intègre donc généralement un serveur Apache/Tomcat (Tomcat étant le plus célèbre moteur de servlet). Pour démarrer le serveur il suffit d’exécuter la commande run.sh sous Linux ou run.bat sous Windows en ayant veillé toutefois à ce que les variables d’environnement telles que JAVA_HOME ou JBOSS_HOME soient bien initialisées. L'arrêt du serveur peut se faire facilement par la commande CTRL-C qui lance la procédure de shutdown.

JBoss est très respectueux des spécifications et son implémentation de la sécurité est tout aussi rigoureuse. Cette rigueur permet de valider ses EJBs par rapport au standard et l'on peut ainsi (même si l'on souhaite utiliser en production un autre serveur) garder un code sans spécificités qui nous empêcheraient de migrer si nécessaire.

JBoss est un concurrent sérieux pour les outils commerciaux qui ne proposent parfois pas autant de fonctionnalités. Beaucoup de personnes pensent d’ailleurs qu’il ne serait pas étonnant qu'il soit amené à jouer pour J2EE le rôle d'un Apache pour les serveurs HTTP.


Figure I-3 : dossiers du serveur JBoss
On peut voir Figure I-3, dans le répertoire « server/default », le dossier où l’on déploie notre application : le dossier « deploy ».
-Hibernate
Après avoir réalisé des tests de façon standard en utilisant des requêtes SQL classiques et à la vue de la quantité importante des informations qu’il y aurait à gérer, Jérôme décida de mettre en place Hibernate afin d’éviter de concevoir des requêtes SQL dans le code de nos fonctions et de faciliter grandement l’affectation ou la récupération des données.
Hibernate est une librairie de persistance d’objets Java dans une base de données relationnelle. A l’aide d’un mapping, n’importe quel objet Java classique est automatiquement pris en charge par Hibernate pour sauvegarder et restituer les valeurs contenues dans les instances de cet objet Java. Hibernate ne nécessite aucune modification du code source de l’application, et fonctionne à l’aide des mécanismes de réflexivité du langage Java. Le mapping indique les propriétés d’une classe (nom, type etc. ) qui seront nécessaires pour lire et écrire les valeurs de l’instance. Hibernate identifie les méthodes de la classe qui correspondent à celles définies dans le mapping avec la base de données. Ces méthodes sont automatiquement appelées par Hibernate qui se charge d’ affecter les valeurs dans les objets java, ou à l’inverse de remplir la base en cas de sauvegarde. La sauvegarde de données ne s’effectue que sur les modifications et par bloc (ce qui réduit le nombre de requêtes).

Hibernate est conçu pour se greffer facilement sur des applications existantes il existe un gestionnaire de cache, de datasource etc. Il est d’une grande souplesse et s’intègre bien avec les serveurs d’application existants tels que Tomcat ou JBoss.
-Exemple de Mapping
Dans l’exemple ci dessous, on voit l’exemple de mapping de persistance dans une base relationnelle pour un objet Voiture. A aucun moment la structure de la classe ‘Voiture’ n’est modifiée pour implémenter le mécanisme de persistance.


Figures I-4 et I-5 : exemple de mapping d’une classe voiture
On constate qu’il est simplement nécessaire d’indiquer le nom de la classe et la table en correspondance dans la base de données dans le fichier xml de mapping. On indique également la clé primaire (ici ‘id’) puis on peut lister dans des balises 'property' les différents attributs de l’objet ‘Voiture’ comme ici son nom. Les champs id et nom seront sauvegardés dans la base dans les champs ‘id_db’ et ‘nom_db’ de la table ‘voiture_db’.
L’attribut ‘name’ dans un fichier de mapping comme celui de la figure I-5 va permettre d’associer les méthodes get/set à la persistance. Par exemple pour le champ ‘nom_db’ de la base, les méthodes getNom/setNom, identifiées à l’aide la valeur ‘nom’ de l’attribut ‘name’, seront appelées respectivement lors de la sauvegarde et de la restitution des données persistantes.(voir processus d’affectation illustré figure I-6)



Figure I-6 : affectation des données dans l’objet Voiture

Hibernate permet donc d’assurer la persistance des objets auxquels sont associés un mapping. Un point important à préciser est qu’ Hibernate permet également d’utiliser HQL pour Hibernate Query Language , un langage de requête proche de SQL qui permet d’être indépendant d’une syntaxe spécifique à une base de données. HQL offre notamment la possibilité de mettre en paramètre directement des classes dans les requêtes, Hibernate se chargeant d’effectuer la conversion en SQL avec la syntaxe propre à la base de données utilisée.
Exemple de sauvegarde de données :
Voiture voiture = new Voiture();

...

Transaction tx = session.beginTransaction();

session.save( voiture );

tx.commit();
Dans l’exemple ci-dessus, les valeurs contenues dans l’instance ‘voiture’ seront automatiquement sauvegardées de façon transactionnelle lors de l’exécution de l’instruction ‘session.save’.
Exemple de récupération de données :
List list = session.find( "from Voiture where nom='"+ Ferrari +"'" );

Voiture voiture = (Voiture)list.get(0);

Ici, nous récupérons une liste de voitures ayant pour nom ‘ferrari’.
II - JSF
A-Présentation
-Le but de JSF
La technologie JSF de Sun vise à l'élaboration d'un environnement standardisé de conception d'interfaces pour les applications WEB. L'environnement s'exécute du côté serveur, en s'appuyant sur la technologie JSP (JavaServer Pages) et sur une librairie de tags (ou balises) spécifique qui doit permettre de réaliser des pages plus complexes que des pages codées directement en HTML.
Construit sur un modèle de développement orienté événement, JSF se compose d'un ensemble d'API servant, notamment, à représenter les composants graphiques, à gérer les états et à supporter les événements. Un ensemble de balises permet de construire les interfaces JSF au sein d'une page JSP (JavaServer Page).
Java Server Faces doit donc :
- Permettre la réalisation d’ interfaces graphiques Web élaborées

- Faciliter l'écriture d'interface à partir d'une bibliothèque de contrôles.

- Fournir un modèle simple pour la gestion des évènements.

- Autoriser les créations ou l'enrichissement de composants graphiques utilisateur.
- JSF et le Modèle MVC
JSF se base sur l'architecture MVC (Model View Controller) de manière à séparer clairement la présentation de la logique d’application. Le modèle MVC, Modèle–Vue–Contrôleur, est étroitement lié à l'origine des langages à objets. Le modèle s'est largement répandu et est désormais reconnu comme un modèle de conception (un "design pattern") mature.
Le modèle MVC s'appuie essentiellement sur la séparation en 2 couches verticales regroupant d'un côté les objets métiers (Modèle) et de l'autre les objets IHM (interface homme-machine), ces derniers étant eux-mêmes regroupés en objets chargés de l'acquisition d'informations en provenance de l'utilisateur (Contrôleur) et en objets chargés de la restitution d'informations vers l'utilisateur (Vue). Ceci est représenté figure II-1.


Figure II-1 : le modèle MVC
-Raisons de l’apparition de JSF
JSF est apparu pour palier aux inconvénients des précédentes technologies proposées par Sun notamment les servlets Java et les JSP.
Les servlets n'ont jamais réellement pris leur envol car elles souffraient de nombreuses lacunes, notamment de l'absence de séparation entre traitements et présentation. Sun s'est rapidement aperçu que le monde du web avait un penchant prononcé pour les technologies de scripting mélangeant code dynamique et balises HTML. L’ ASP (Microsoft) et PHP étaient par exemple très plébiscités, et l’évolution des servlets sera le JSP pour Java Server Pages.
Les JSP sont l’équivalent des ASP (Active Server Pages) dans le monde Java. Ils apportent une solution à la plupart des problèmes posés par les servlets, mais comportent également des défauts liés à la présence de code Java dans les pages web. C’est donc pour extraire la logique de traitement (code Java) contenu dans les pages HTML que MVC (Modèle Vue Contrôleur) est apparu. Dans la pratique, le modèle MVC se base sur des classes spécialisées appelées «contrôleurs», dont le rôle est d'enrichir un modèle objet, lequel sera chargé d'alimenter des pages JSP épurées ainsi de toute logique fonctionnelle.
Microsoft décidé à laver l'affront infligé par les JSP, s'est lancé dans une bataille effrénée pour contrer Sun sur le marché des plates-formes d'entreprise avec .NET. L'éditeur n'empruntera pas le chemin du modèle MVC qu'il jugera trop complexe. Il s'empresse alors de sortir le framework ASP.NET, basé sur les WebForms totalement orientés sur la notion de composants graphiques. Sun, pour rattraper son retard lança les JavaServer Faces.

B- Un exemple simple d’application en JSF




Afin d’exposer la « mécanique » mise en place pour l’utilisation de JSF au sein de notre application je vais illustrer mes explications à l’aide du code d’un exemple très simple trouvé sur le site de la société Exadel (www.exadel.com). Ceci permettra de mieux comprendre les explications de la partie III de ce rapport portant sur le travail réalisé.
- L’architecture des dossiers




jsfks

/ant

build.xml

/JavaSource

/WebContent

/WEB-INF

/classes

/lib

jsf-impl.jar

jsf-api.jar

faces-config.xml

web.xml

/pages

Figure II-2 : exemple de répertoire d’une webapp avec JSF

Une structure similaire mais bien-sûr plus complexe que celle de la figure II-2 est utilisée dans pour la partie « présentation » de notre projet. On remarque qu’il est nécessaire de placer dans WEB-INF/lib les archives (.jar) contenant les bibliothèques JSF (jsf-impl.jar et jsf-api.jar). Nous allons maintenant considérer deux pages placées dans le dossier « pages » : inputname.jsp et greeting.jsp. La première proposera de saisir son nom. En cliquant sur le bouton « Say Hello » la page greetings.jsp sera appelée et affichera un message du type de la figure II-4.

Figures II-3 et II-4 : affichage des pages inputname.jsp et greeting.jsp

-Structure d’une page en JSF


<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>



Input Name Page



























Figure II-5 : fichier inputname.jsp

On constate qu’il est nécessaire de déclarer les bibliothèques de tags JSF en début de page afin de pouvoir utilises les balises JSF dans le fichier JSP. Pour afficher les composants ceux-ci doivent être englobés par les balises .
On peut remarquer aussi qu’il est possible d’associer, via la balise , un fichier ressource contenant le texte à afficher (ici portant le nom de « Messages » et contenu dans le package de nom « bundle »). Il suffit par la suite de taper une ligne du type pour afficher la valeur associée contenue dans le fichier « Message.properties » (cf. figure II-7).
Il est également possible en JSF de mettre en place des « Validateurs » pour vérifier les valeurs saisies.
Pour lier un champ à un attribut d’un JavaBean il suffit, comme pour le champ de saisie (  équivalent du « input type=text » en html), de faire référence à cet attribut par l’instruction value="#{PersonBean.userName}".Ici ceci fera le ‘lien’ avec l’attribut userName de la classe PersonBean (cf. Figure II-8).



<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>





Greeting Page







,

!




similaire:

I- présentation de l’entreprise et du projet iconPresentation de l’entreprise

I- présentation de l’entreprise et du projet iconPrésentation de l’entreprise LeMost

I- présentation de l’entreprise et du projet iconSommaire Présentation générale de l’entreprise

I- présentation de l’entreprise et du projet iconLa note de présentation du projet dans

I- présentation de l’entreprise et du projet iconCréation d'un projet de type Entreprise Application

I- présentation de l’entreprise et du projet iconChapitre1 : Présentation générale du projet
«packages» ou encore «forfaits touristiques» rassemblant différentes prestations

I- présentation de l’entreprise et du projet iconPrésentation du rapport de l’audit technique, juridique et financier...
«gros-œuvre» ont été mis en régie, à la suite de la défaillance de l'entreprise gee, du groupement d'entreprises emcr, attributaire...

I- présentation de l’entreprise et du projet iconLe projet – IL y a des exercices de compréhension, un devoir écrit, et une présentation orale
«Vidéos bonus» et regardez la deuxième vidéo «Chemins pyrénéens de l’art roman»

I- présentation de l’entreprise et du projet iconPrésentation du projet de fin d’année
«Concevoir et réaliser une solution informatique en réponse à un problème» et la compétence C2 «Décrire et expliquer une situation,...

I- présentation de l’entreprise et du projet iconContexte Présentation Les actions antécédentes Constat III objectifs
Sont tirés du précédent projet de Valorisation du Château de Montespan, réalisé par le sivom de la Région de Salies du Salat, en...








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com