Java. et jquery. Intégrer un framework JavaScript. dans l écosystème JEE. Kévin VALETTE



Documents pareils
Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Devenez un véritable développeur web en 3 mois!

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

CQP Développeur Nouvelles Technologies (DNT)

JOnAS Day 5.1. Outils de développements

PHP 5.4 Développez un site web dynamique et interactif

A. Architecture du serveur Tomcat 6

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Refonte front-office / back-office - Architecture & Conception -

Utilisation de Jakarta Tomcat

Java pour le Web. Cours Java - F. Michel

Projet Java EE Approfondi

Application Web et J2EE

Formation : WEbMaster

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

BES WEBDEVELOPER ACTIVITÉ RÔLE

Formation en Logiciels Libres. Fiche d inscription

Web Tier : déploiement de servlets

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Webmaster / Webdesigner / Wordpress

Le Registre sous Windows 8 architecture, administration, script, réparation...

Joomla! Création et administration d'un site web - Version numérique

Compte Rendu d intégration d application

Programmation Web. Introduction

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Sage CRM. 7.2 Guide de Portail Client

Bonnes pratiques de développement JavaScript

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Etude de cas : PGE JEE V2

1. Installation d'un serveur d'application JBoss:

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

Catalogue Formations Jalios

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Nouveautés joomla 3 1/14

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

les techniques d'extraction, les formulaires et intégration dans un site WEB

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

ECLIPSE ET PDT (Php development tools)

Un serveur d'archivage

Environnements de Développement

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

Echosgraphik. Ce document sert uniquement à vous donner une vision sur ma manière de travailler et d appréhender un projet

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

Présentation du Framework BootstrapTwitter

Ociensa Technologies.

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Windows 8 Installation et configuration

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Catalogue des Formations

Formation Webmaster : Création de site Web Initiation + Approfondissement

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

10. Base de données et Web. OlivierCuré

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Cours en ligne Développement Java pour le web

Table des matières Page 1

HTML5, CSS3 et JavaScript Développez vos sites pour les terminaux mobiles

Réalisation d une application de soumission de cours en ligne de l Université Virtuelle de Tunis

IBM DB2 Alphablox. d administration GC

Petite définition : Présentation :

et Groupe Eyrolles, 2006, ISBN :

Application de lecture de carte SESAM-Vitale Jeebop

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

Sessions en ligne - QuestionPoint

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Java 7 Les fondamentaux du langage Java

Messagerie asynchrone et Services Web

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

MODULES 3D TAG CLOUD. Par GENIUS AOM

Audit de site web. Accessibilité

Windows Server 2012 R2

HTML5. Développement d applications Web. Visual Studio 2015 et TFS. L art et la manière. avec. Philippe DIDIERGEORGES

Introduction au protocole FTP. Guy Labasse

Installation et prise en main

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Déploiement, administration et configuration

Développement des Systèmes d Information

Applications et Services WEB: Architecture REST

Introduction à. Oracle Application Express

Transcription:

Java et jquery Intégrer un framework JavaScript dans l écosystème JEE Kévin VALETTE

Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence de l'ouvrage EIJAJQ dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement. Avant-propos 1. Introduction............................................. 13 2. Niveau de compétences requis............................... 14 3. Structure du livre......................................... 14 Chapitre 1 Premiers pas 1. Introduction............................................. 17 2. Les applications JEE....................................... 18 2.1 Les API JEE.......................................... 19 2.2 Les ressources statiques................................ 22 3. Le protocole HTTP........................................ 22 3.1 La norme HTTP...................................... 23 3.2 Les requêtes.......................................... 24 3.2.1 La ligne d'introduction............................ 24 3.2.2 Les en-têtes..................................... 25 3.2.3 Le corps........................................ 26 3.3 Les réponses......................................... 26 3.3.1 La ligne de statut................................ 26 3.3.2 L'en-tête........................................ 27 3.3.3 Le corps........................................ 27 4. Le serveur d'applications................................... 28 4.1 Conteneur web....................................... 28 4.2 Architecture N-tiers................................... 29

2 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE 5. L'architecture MVC....................................... 30 5.1 Le modèle........................................... 30 5.2 L'implémentation JEE.................................. 31 6. La bibliothèque jquery..................................... 32 6.1 Historique du projet................................... 32 6.2 Intérêt.............................................. 33 7. En résumé............................................... 34 Chapitre 2 La plateforme JEE 1. Introduction............................................. 35 2. Les servlets.............................................. 36 2.1 Concepts............................................ 36 2.1.1 Technologie client/serveur......................... 36 2.1.2 Méthodes...................................... 37 2.1.3 L'interface Servlet................................ 38 2.2 Descripteur de déploiement............................. 40 2.3 Cycle de vie.......................................... 42 2.3.1 Instanciation.................................... 43 2.3.2 Initialisation.................................... 44 2.3.3 Traitement des requêtes........................... 45 2.3.4 Fin de vie....................................... 46 2.4 Les listeners.......................................... 46 2.5 La requête........................................... 48 2.6 La réponse........................................... 49 2.7 Les filtres............................................ 50 3. Les JSP.................................................. 52 3.1 La norme JSP......................................... 53 3.1.1 Les balises...................................... 54 3.1.2 Les directives.................................... 54

Table des matières 3 3.2 L'utilisation du modèle................................. 56 3.2.1 Le JavaBean..................................... 56 3.2.2 La portée des objets.............................. 57 3.3 Les actions standards.................................. 58 3.3.1 usebean........................................ 59 3.3.2 getproperty..................................... 59 3.3.3 setproperty..................................... 60 3.3.4 include......................................... 60 3.3.5 forward........................................ 61 3.4 Les expressions languages.............................. 61 3.4.1 Les attributs.................................... 62 3.4.2 Les collections................................... 66 3.4.3 Les objets implicites.............................. 67 3.4.4 Les opérateurs................................... 69 4. En résumé............................................... 70 Chapitre 3 Les applications web 1. Introduction............................................. 73 2. Description.............................................. 74 3. Organisation............................................. 74 3.1 Le dossier META-INF.................................. 75 3.2 Le dossier WEB-INF................................... 75 3.3 Les ressources publiques................................ 76 4. Configuration de déploiement............................... 77 4.1 Configuration des composants.......................... 78 4.1.1 Description de l'application........................ 78 4.1.2 Fichiers d'index.................................. 79 4.1.3 Servlets........................................ 79 4.1.4 Filtres.......................................... 82 4.1.5 Attributs de contexte............................. 83

4 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE 4.1.6 Attributs de sessions............................. 83 4.1.7 Gestion des erreurs............................... 84 4.2 Sécurité et authentification............................. 85 4.2.1 Les contraintes de sécurité......................... 85 4.2.2 L'authentification................................ 86 4.2.3 La sécurisation de la couche transport............... 89 4.3 Compatibilité entre serveurs JEE......................... 90 5. Intégration de jquery...................................... 91 5.1 Récupérer les sources.................................. 91 5.1.1 Depuis le site officiel............................. 92 5.1.2 Depuis la plateforme Google....................... 93 5.1.3 Depuis Github.................................. 93 5.1.4 Depuis le gestionnaire de paquets Bower............. 94 5.2 Exploiter les ressources................................. 95 5.3 Associer le framework dans une JSP...................... 96 6. En résumé............................................... 97 Chapitre 4 L'utilisation de jquery 1. Introduction............................................. 99 2. Les sélecteurs............................................ 100 2.1 Le DOM........................................... 100 2.2 La fonction $()...................................... 103 2.3 Les sélecteurs standardisés............................. 105 2.3.1 Les sélecteurs CSS............................... 105 2.3.2 Les pseudoclasses............................... 109 2.4 Les sélecteurs spécifiques............................. 112 2.5 Les sélecteurs de formulaires........................... 117 3. Les évènements.......................................... 120 3.1 Le flux évènement................................... 121 3.2 L'objet Event........................................ 123

Table des matières 5 3.3 La fonction ready.................................... 126 3.4 Les évènements simples............................... 128 3.5 Les évènements composés............................. 133 4. Les transitions........................................... 134 4.1 Effets et vitesse...................................... 134 4.1.1 Gérer la vitesse................................. 134 4.1.2 Apporter un fondu.............................. 136 4.2 Effets composés..................................... 137 4.3 Animations personnalisées............................. 138 5. Organiser son code....................................... 140 5.1 Encapsulation....................................... 141 5.1.1 Objet......................................... 141 5.1.2 Module....................................... 142 5.2 Factorisation des traitements.......................... 143 5.3 Fonctions anonymes.................................. 144 6. En résumé.............................................. 145 Chapitre 5 L'intégration de jquery dans les JSP 1. Introduction............................................ 147 2. Manipulation du DOM................................... 148 2.1 Manipuler des propriétés.............................. 152 2.1.1 Les fonctions de style CSS........................ 152 2.1.2 Les fonctions de gestion d'attributs................. 155 2.2 Gérer des éléments................................... 161 2.2.1 Les fonctions d'insertion......................... 161 2.2.2 Les fonctions de remplacement.................... 166 2.2.3 Les fonctions de suppression...................... 169 2.2.4 Les fonctions de copie........................... 171

6 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE 3. Manipulation des tables................................... 174 3.1 Modifier son affichage................................ 176 3.2 Ajouter du tri dans les données......................... 180 3.2.1 Le tri côté serveur............................... 180 3.2.2 Le tri en JavaScript.............................. 181 3.3 Utiliser le plug-in datatables........................... 185 3.3.1 Objectif....................................... 186 3.3.2 Intégration dans l application..................... 186 3.3.3 Utilisation..................................... 189 3.3.4 Évènements personnalisés........................ 191 4. Manipulation des formulaires.............................. 196 4.1 Améliorer un formulaire de base....................... 199 4.1.1 Les affichages conditionnels...................... 200 4.1.2 Les comportements liés.......................... 201 4.2 Gérer la validation................................... 203 4.2.1 Les validations Java............................. 203 4.2.2 Les validations jquery........................... 210 4.3 Utiliser le plug-in jquery-validate....................... 215 4.3.1 Mise en place.................................. 215 4.3.2 Implémentation................................ 216 4.3.3 Options...................................... 218 5. En résumé.............................................. 221 Chapitre 6 Les taglibs 1. Introduction............................................ 223 2. Maîtriser la bibliothèque JSTL.............................. 224 2.1 Objectif........................................... 224 2.2 Configuration...................................... 225 2.2.1 La mise en place de la librairie.................... 225 2.2.2 L'intégration dans une JSP....................... 229

Table des matières 7 2.3 La bibliothèque Core................................. 230 2.3.1 Les variables................................... 231 2.3.2 Les conditions et boucles......................... 232 2.3.3 La gestion des URL.............................. 236 3. Créer un taglib personnalisé............................... 238 3.1 Création du comportement........................... 239 3.2 Déclaration de la fonction............................. 242 3.3 Intégration dans une JSP.............................. 244 4. Utiliser un taglib : DataTables Taglib........................ 247 4.1 Intérêt............................................. 247 4.2 Mise en place....................................... 247 4.3 Utilisation......................................... 249 5. En résumé.............................................. 252 Chapitre 7 La technique AJAX 1. Introduction............................................ 253 2. Le concept............................................. 254 3. Les structures d'échanges de données........................ 256 3.1 Les formats......................................... 256 3.2 La syntaxe JSON.................................... 258 3.2.1 Les valeurs.................................... 259 3.2.2 Les objets..................................... 259 3.2.3 Les tableaux................................... 260 4. Partie serveur : mettre à disposition des services REST.......... 260 4.1 Principes d'une architecture REST...................... 261 4.1.1 Définition..................................... 261 4.1.2 Les normes.................................... 261 4.1.3 REST et Jersey................................. 262 4.1.4 Cycle de vie d'un service......................... 265

8 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE 4.2 Implémentation d'un service.......................... 265 4.2.1 Mettre en place un service....................... 265 4.2.2 Intégration d'un modèle......................... 267 4.2.3 Déployer et consommer un service................ 269 4.3 Configuration du service.............................. 271 4.3.1 Spécifier un chemin à la ressource................. 271 4.3.2 Associer une requête à une méthode............... 272 4.3.3 Définir les types d'entrées et sorties................ 274 4.3.4 Récupérer des paramètres de la requête............. 276 5. Partie cliente : consommer les services....................... 276 5.1 La méthode.ajax()................................... 277 5.1.1 La syntaxe.................................... 277 5.1.2 Les promesses.................................. 281 5.1.3 Les callbacks................................... 282 5.1.4 Les types de données............................ 283 5.1.5 La sérialisation de données........................ 284 5.2 GET : charger des données à la demande................. 285 5.2.1 La fonction.get()............................... 285 5.2.2 Consommer des données dans une JSP............. 286 5.3 POST : passer des données au serveur................... 287 5.3.1 La fonction.post().............................. 288 5.3.2 Publier de l'information dans le système d'information..................... 289 5.4 LOAD : charger des informations....................... 291 5.4.1 La fonction.load().............................. 291 5.4.2 Charger une ressource sur l'application............. 292 5.5 L'écoute d'évènements AJAX........................... 294 6. En résumé.............................................. 297

Table des matières 9 Chapitre 8 La sécurisation des services REST 1. Introduction............................................ 299 2. Identifier les risques...................................... 300 2.1 Les critères de sécurité................................ 300 2.2 Les bonnes pratiques................................. 301 3. Sécurisation du protocole de transport HTTP................. 302 3.1 Le protocole SSL..................................... 302 3.2 La protection des communications..................... 303 4. Authentifier les utilisateurs............................... 304 4.1 Identifier un utilisateur............................... 304 4.2 Ajouter un hachage de données........................ 305 4.3 Implémenter un jeton (token) d'authentification.......... 307 5. Gérer les requêtes uniques................................. 308 5.1 L'objectif........................................... 308 5.2 La gestion côté client................................. 308 5.3 La gestion côté serveur............................... 309 6. En résumé.............................................. 310 Chapitre 9 Les outils de développement 1. Introduction............................................ 311 2. Les outils de développement intégrés au navigateur............ 312 2.1 L'intégration dans les navigateurs....................... 312 2.2 L'analyse du DOM................................... 315 2.3 L'activité réseau..................................... 317 2.4 L'émulation......................................... 318 2.4.1 L'émulation mobile............................. 319 2.4.2 L'émulation de navigateur........................ 320 2.5 La console.......................................... 320

10 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE 3. La validation des scripts................................... 322 3.1 JSLint et JSHint..................................... 322 3.2 Validation W3C..................................... 325 4. Les IDE orientés présentation.............................. 327 4.1 Brackets.io......................................... 327 4.2 Atom.io........................................... 329 4.3 Sublime Text........................................ 330 4.4 Synthèse........................................... 332 5. En résumé.............................................. 333 Chapitre 10 Les interfaces riches avec jquery UI 1. Introduction............................................ 335 2. Créer des interfaces riches................................. 336 2.1 Intérêt de la bibliothèque............................. 336 2.2 Mise en place....................................... 337 3. Les interactions.......................................... 340 3.1 Draggable.......................................... 341 3.1.1 Implémenter la fonction de base.................. 341 3.1.2 Gérer le déplacement............................ 343 3.1.3 Définir le magnétisme........................... 344 3.1.4 Imposer le retour à l'état initial................... 346 3.2 Droppable.......................................... 346 3.2.1 Implémenter la fonction de base.................. 346 3.2.2 Contraindre les éléments acceptés................. 348 3.2.3 Gérer la validité de l'interactivité.................. 350 3.3 Sortable............................................ 351 3.3.1 Implémenter la fonction de base.................. 351 3.3.2 Limiter le déplacement.......................... 352 3.3.3 Connecter plusieurs listes........................ 353 3.3.4 Modifier le curseur.............................. 355

Table des matières 11 3.4 Resizable........................................... 356 3.4.1 Implémenter la fonction de base.................. 356 3.4.2 Préserver le ratio............................... 357 3.4.3 Limiter l'interactivité............................ 358 3.5 Selectable........................................... 359 3.5.1 Implémenter la fonction de base.................. 359 3.5.2 Gérer les évènements............................ 361 4. Les widgets............................................. 363 4.1 Dialog............................................. 364 4.2 Datepicker......................................... 367 4.3 Tabs.............................................. 370 5. Les effets............................................... 371 6. En résumé.............................................. 374 Index..................................................... 375

223 Chapitre 6 Les taglibs 1. Introduction Les taglibs La mise en place de solutions comme jquery nécessite de réaliser des pages JSP au code le plus conforme d'un point de vue navigateur. Avec le pattern MVC, la couche vue doit offrir des solutions pour générer des ressources clientes les plus propres, lisibles et dynamiques possible. C'est avec ces règles que les scripts jquery pourront tirer profit au maximum de leurs possibilités. En effet, plus la structure du document HTML sera cohérente, plus les sélecteurs seront pertinents et offriront des traitements performants. Depuis une dizaine d'années, l'utilisation des scriptlets (correspondant à du code Java entouré des balises <%... %>) est fortement déconseillée. Ce constat est principalement dû à l'apparition des taglibs (notamment la JSTL) et des expressions languages. Dans ce chapitre, nous verrons comment profiter de ce nouveau concept de Java server page Standard Tag Library (JSTL) dans l'écosystème JEE. Objectifs Maîtriser la bibliothèque Core de JSTL. Mettre au profit ces nouveaux concepts pour améliorer la lisibilité des vues. Créer des taglibs personnalisés pour répondre à des besoins spécifiques. Utiliser des éléments de la communauté.

224 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE Appréhender le couplage à des solutions clientes comme jquery. 2. Maîtriser la bibliothèque JSTL L'utilisation du modèle de conception MVC (Modèle/Vue/Contrôleur) exige une séparation importante de chacune des couches de l'application. Concernant la couche vue, il est important qu'aucune règle métier ne soit présente dans les JSP. Dans cette optique, la première action à mener est de supprimer tout code Java subsistant potentiellement dans les pages. C'est dans ce cadre que la bibliothèque JSTL intervient. À noter que la JSTL a fait l'objet de plusieurs versions : JSTL 1.0 : pour la plateforme JEE 3 et un conteneur JSP 1.2 comme par exemple Tomcat 4. JSTL 1.1 : pour la plateforme JEE 4 et un conteneur JSP 2.0 correspondant à un Tomcat 5.5. JSTL 1.2 (et 1.2.1) : qui est partie intégrante de la plateforme JEE 5, avec un conteneur JSP 2.1 ou 3.0 (Tomcat 6 et 7). Remarque Le conteneur JSP 1.2 sur lequel est basée la JSTL 1.0 ne gérait pas les expressions languages. Pour pallier ce manque, JSTL proposait deux implémentations : une les interprétant et l'autre non. Dans les exemples de ce chapitre, la version 1.2 sera utilisée pour la mise en place de solutions de taglibs. 2.1 Objectif La bibliothèque JSTL est une collection regroupant de nombreuses balises implémentant des fonctionnalités fréquentes lors de la création de pages JSP. Dans les applications web, il est fréquent d'avoir besoin de mettre en place des boucles, des conditions ou bien encore du formatage de données. Editions ENI - All rights reserved

Les taglibs Chapitre 6 225 Avant la mise en place de cette librairie, il était fréquent d'intégrer du code Java dans les pages JSP. Depuis JSTL, il est possible de respecter au mieux le découpage en couches recommandé par le modèle MVC. Syntaxiquement, ces nouvelles balises s'apparentent fortement à celles des JSP. Grâce à ce constat, les pages JSP gagnent en lisibilité et permettent aux développeurs d'améliorer la maintenabilité des éléments. Si cette fonctionnalité fait partie des points forts de la bibliothèque, l'utilisation de JSTL offre également un autre avantage : la quantité de code à écrire est fortement diminuée avec une syntaxe plus pratique et la possibilité d'intégrer des mécanismes itératifs de données. JSTL offre donc la possibilité de supprimer les scriptlets des pages JSP et respecter le découpage préconisé par le pattern MVC. 2.2 Configuration JSTL est une librairie externe. Son intégration dans un projet JEE nécessite de déporter cette ressource dans l'écosystème du projet pour bénéficier de ses possibilités. JSTL contient nativement plusieurs bibliothèques. Dans le cadre de ce livre, nous nous intéresserons principalement à la bibliothèque Core. Cette bibliothèque est naturellement incluse dans l'archive jar de la JSTL complète. C'est cette brique qui va permettre à l'application d'apporter des traitements itératifs ou conditionnels sur la page JSP. Par la suite, nous allons étudier les différents moyens d'intégration de cette solution ainsi que la configuration de celle-ci. 2.2.1 La mise en place de la librairie Même si la bibliothèque JSTL fait partie intégrante de la plateforme Java EE 7, Tomcat 8 n'est pas, par défaut, livré avec la librairie JSTL. Pour pouvoir utiliser les fonctionnalités que la librairie JSTL comporte, il faut associer cette librairie au projet. Remarque Certains serveurs d'applications comme Glassfish d'oracle proposent cette bibliothèque dans leur application.

226 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE Le site officiel de JSTL (https://jstl.java.net/index.html) propose un téléchargement direct de la librairie. Une fois récupérée, il est nécessaire de la déposer dans le répertoire adéquat du serveur d'applications. Pour rappel, une application web JEE possède la structure suivante : webapp _WebContent META-INF MANIFEST.MF WEB-INF lib web.xml Cette arborescence contient un répertoire lib dans le dossier WEB-INF. C'est ici que la librairie doit être déposée pour être fonctionnelle pour l'application. Une fois associée, les pages JSP de l'application peuvent bénéficier des fonctionnalités de la bibliothèque JSTL. Pour les projets utilisant Maven, une solution alternative est possible pour l'intégration de JSTL. Maven est un outil de gestion de dépendances permettant de construire des solutions Java (plus particulièrement des applications JEE) en optimisant les tâches à réaliser et en garantissant le bon ordre de fabrication. Cette solution se base sur le paradigme POM (Project Object Model) décrivant le projet avec ses dépendances et l'ordre à suivre pour sa mise en production. Ci-dessous un exemple de fichier POM d'une application JEE : <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>fr.eni</groupid> <artifactid>taglibmaven</artifactid> <packaging>war</packaging> <version>0.0.1-snapshot</version> <name>taglibmaven Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> </dependencies> <build> <finalname>taglibmaven</finalname> </build> </project> Editions ENI - All rights reserved

Les taglibs Chapitre 6 227 Pour intégrer JSTL, il suffit donc d'apporter une dépendance au projet. La dépendance est formalisée dans un bloc XML dependency comportant les trois attributs suivants : groupid : correspondant au groupe qui a créé le projet. artifactid : indiquant un nom unique utilisé pour nommer les artifacts à construire. versions : version de l'artifact généré par le projet. Dans ce cas, la structure serait la suivante : <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>fr.eni</groupid> <artifactid>taglibmaven</artifactid> <packaging>war</packaging> <version>0.0.1-snapshot</version> <name>taglibmaven Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>javax.servlet</groupid> <artifactid>jstl</artifactid> <version>1.2</version> </dependency> </dependencies> <build> <finalname>taglibmaven</finalname> </build> </project> Pour finaliser la mise en place, la dernière étape à réaliser est l'exécution de l'installation au moyen de Maven. Sous Eclipse, cette option peut être automatisée par le raccourci répondant à la manipulation décrite ci-dessous : dfaire un clic droit sur le nom du projet. dsélectionner Run As dans le menu contextuel. dcliquer sur l option Maven install.

228 Java et jquery Intégrer un framework JavaScript dans l écosystème JEE Une fois exécuté, le résultat apparaît dans la console : [INFO] -------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] -------------------------------------------------------- [INFO] Total time: 3.058 s [INFO] Finished at: 2015-04-06T13:11:09+01:00 [INFO] Final Memory: 11M/168M [INFO] -------------------------------------------------------- Si l'opération est un succès, la dépendance est associée au projet et est visible dans l'architecture de la solution dans le répertoire Maven Dependencies comme sur l'illustration suivante. Editions ENI - All rights reserved