Avant-propos 1. Introduction 13 2. Niveau de compétences requis 14 3. Structure du livre 14 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 5. L'architecture MVC 30 1/11
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 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 2/11
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 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 3/11
4.1.4 Filtres 82 4.1.5 Attributs de contexte 83 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 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 4/11
3. Les évènements 120 3.1 Le flux évènement 121 3.2 L'objet Event 123 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 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 5/11
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 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 Les taglibs 1. Introduction 223 6/11
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 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 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 7/11
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 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 8/11
5.5 L'écoute d'évènements AJAX 294 6. En résumé 297 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 Les outils de développement 1. Introduction 311 9/11
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 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 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 10/11
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 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 11/11