Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le lien de téléchargement. Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Chapitre 1 Objectifs et spécifications de Java EE 1. Les conventions...13 1.1 Les conventions du guide, de Java, de codage et les règles de nommage. 13 1.2 Les conventions du guide...13 1.3 Les conventions de codage...13 1.4 Les conventions Java...14 2. Définitions de J2EE/Java EE...18 2.1 Pourquoi choisir Java EE....19 2.2 L'API Java EE (JDBC, Servlets, JSP).... 19 2.2.1 Les Servlets...20 2.2.2 Les JSP (Java Server Page)...21 2.2.3 LES EJB (Entreprise Java Bean)....23 2.3 Les autres API...24 3. Encodage des applications Java...24 3.1 Présentation...24 3.2 Les fichiers...25 3.3 Les pages JSP et JSPF...25 3.4 Les pages HTML/XHTML...26 3.5 Les feuilles de style XSL...26 3.6 Code Java....26 3.7 Encodage de la JVM...27 3.8 Gestion de l'encodage...28 4. Les architectures Web....29 4.1 Les types d'architectures....29 4.2 L'architecture MVC (Model View Controller).... 33
2 Java EE Guide de développement d'applications web en Java 4.3 Les différents modules Java EE...34 5. Mise en place de l'environnement...35 5.1 Installation du JDK (Java Development Kit).... 36 5.1.1 Installation sous Windows....36 5.1.2 Installation sous Linux....39 6. Installation du serveur d'applications Java EE (Tomcat)... 40 6.1 Quelle version choisir?...41 7. Installation de l'environnement de développement (IDE) Eclipse.... 46 7.1 Présentation...46 7.2 Installation...46 7.3 Les plug-ins Eclipse...47 7.4 Lancement d'eclipse et paramétrage du serveur Java EE (Tomcat)....47 7.5 En résumé...51 Chapitre 2 Le serveur d'applications Apache-Tomcat 1. Qu'est-ce que Tomcat?...52 1.1 Présentation et définition...52 1.2 La fondation Apache...52 1.3 Le projet Jakarta....52 1.4 Évolutions de Tomcat...53 2. Installation de Tomcat...53 2.1 Quelle version choisir?...53 2.2 Installation sous Windows...53 2.3 Installation sous Linux...53 2.4 Mise en place de la partie administration de Tomcat...57 2.5 Augmenter la mémoire allouée à Tomcat...58 3. Coupler Tomcat et le serveur Web Apache...59 3.1 Présentation...59 3.2 Un connecteur pour l'intégration du serveur Web....60 3.2.1 Fonctionnement...60 3.2.2 Installation du module mod_jk...60 3.2.3 Configurer le module mod_jk....61 3.2.4 Créer le fichier de configuration du travailleur...62 4. Architecture et configuration de Tomcat...64 4.1 Les composants de Tomcat...64 4.2 Arborescence du serveur...64
Table des matières 3 5. Rappels XML...66 6. Les fichiers de configuration Tomcat...74 7. Le fichier de configuration des applications....79 8. Le fichier de configuration des utilisateurs...80 9. Le fichier de configuration de la sécurité...81 10. Arborescence d'un projet Tomcat...81 10.1 Le descripteur de déploiement web.xml...83 10.2 Déployer un premier projet...84 10.2.1 Projet simple manuellement....85 10.2.2 Projet simple avec Eclipse....86 10.3 Déployer un projet Java EE avec un fichier war...91 11. Analyse, monitoring et supervision.... 93 11.1 Présentation...93 11.2 Tester la montée en charge...94 11.3 JConsole et MC4J, des consoles JMX... 95 11.3.1 JConsole...96 11.3.2 MC4J....101 11.4 JMeter et les tests de montée en charge...104 12. Apache-Tomcat et SSL/HTTPS....110 12.1 Présentation...110 12.2 En résumé...111 Chapitre 3 Les JavaServer Page 1. Qu'est-ce qu'une JavaServer Page?...112 1.1 Présentation...112 1.2 Introduction....112 1.3 JASPER...113 1.4 Cycle de vie d'une Servlet...113 2. Déclarations, commentaires et scriptlets... 114 2.1 Présentation...114 2.2 Les éléments JSP....114 2.3 Les directives...114 2.4 Les scripts...118 2.4.1 Les déclarations...119 2.4.2 Les scriptlets...120 2.4.3 Les expressions....120
4 Java EE Guide de développement d'applications web en Java 2.4.4 Les commentaires...121 2.4.5 Les actions....122 3. Les objets implicites...130 3.1 Présentation...130 3.2 Utilisation...130 4. Premières JSP simples...133 4.1 Présentation...133 4.2 Utilisation...135 5. Gérer les exceptions et erreurs en JSP...139 5.1 Présentation...139 5.2 La directive page....140 5.3 Le descripteur de déploiement (web.xml)... 141 6. Bibliothèque de tags JSTL...143 6.1 Présentation...143 6.2 Utilisation...144 6.3 Implémentation...145 6.4 Utilisation de bibliothèques...146 6.4.1 La bibliothèque core....146 6.4.2 La bibliothèque XML...147 6.4.3 La bibliothèque I18n...151 6.4.4 La bibliothèque DataBase...155 7. Bibliothèque de balises personnalisées...156 7.1 Présentation...156 7.2 Actions personnalisées...156 7.3 Mise en place...156 7.4 Mise en place d'un fichier de description....158 7.5 Configuration de la librairie dans le descripteur web.xml...159 7.6 Utilisation d'une librairie personnalisée....159 7.7 Gestionnaire de balises et gestion des attributs...160 7.8 Gestionnaire de balises et gestion du corps des balises...163 7.9 Gestionnaire de balises et gestion du contenu du corps....165 8. Les JavaBeans ou Beans....169 8.1 Présentation...169 8.2 Utilisation...170 8.3 Librairies de gestion des JavaBeans...175 8.4 Sérialiser des JavaBeans....188 8.4.1 Sérialiser un objet...189 8.4.2 Désérialiser un objet...190
Table des matières 5 8.4.3 Sérialisation et désérialisation en XML...192 9. Transfert de contrôle...200 9.1 Présentation...200 9.2 Utilisation...200 9.2.1 Transfert du contrôle d'une Servlet à une page JSP....200 9.2.2 Transfert du contrôle d'une page JSP à une Servlet....204 9.2.3 Transfert du contrôle d'une page JSP à une autre page JSP...204 10. Travailler avec des fichiers et répertoires...205 10.1 Présentation...205 10.2 Travailler avec les répertoires...205 10.3 Travailler avec les fichiers....208 10.4 En résumé...209 Chapitre 4 Les Servlets 1. Qu'est-ce qu'une Servlet?...210 1.1 Présentation...210 1.2 Requêtes HTTP...210 1.2.1 Comment le serveur va répondre aux requêtes des clients?...212 2. Le projet BetaBoutique...212 2.1 Présentation...212 2.2 Expression des besoins...212 2.3 Maquettes de la plate-forme...214 2.3.1 Découpage utilisé....214 2.3.2 Catalogue des articles....214 2.3.3 Fiche article...215 2.3.4 Rechercher un article...216 2.3.5 Authentification...217 2.3.6 Créer un compte...217 2.3.7 Gérer le compte client...218 2.3.8 Acheter des articles...219 2.3.9 Gérer les commandes...219 2.3.10 Gérer les articles....219 3. Première Servlet...220 3.1 Cycle de vie d'une Servlet...220 3.2 Fonctionnement d'une Servlet (la classe HttpServlet)... 221 3.2.1 La méthode service()... 222
6 Java EE Guide de développement d'applications web en Java 3.2.2 La méthode init().... 222 3.2.3 La méthode destroy()... 222 3.3 Invocation d'une Servlet...223 3.3.1 Comment effectuer le lien entre la Servlet et l'url?...227 3.3.2 Comment cela fonctionne-t-il?...227 3.3.3 L'objet response...228 3.3.4 L'objet request...232 3.3.5 La méthode dopost()... 233 4. Servlet authentification...233 4.1 Gérer l'authentification client...233 4.1.1 Comment cela fonctionne-t-il?...237 5. Interface ServletConfig...240 5.1 Présentation...240 5.2 Initialisation d'une Servlet...240 6. Interface ServletContext...242 6.1 Présentation...242 6.2 Utilisation...242 6.3 Récupérer des paramètres...243 6.4 Ajouter des paramètres....245 6.5 Mise en application...245 7. Traitement des requêtes...249 7.1 Présentation...249 7.1.1 Récupérer des paramètres transmis par le client...249 7.1.2 Gérer les attributs du contexte de la requête...250 7.1.3 Récupérer des informations sur l'url de la requête...250 7.1.4 Récupérer des informations sur le client...250 7.1.5 Récupérer des informations sur le serveur....250 8. Traitement des réponses...251 9. Synchronisation des traitements...253 10. État des clients...254 10.1 Les cookies...254 10.1.1 Envoyer des cookies dans la réponse....255 10.1.2 Récupérer des cookies dans la requête...255 10.1.3 Supprimer un cookie...257 10.2 Les sessions...257 10.2.1 Obtenir une session...257 10.2.2 Travailler avec une session...257
Table des matières 7 10.2.3 Sessions et réécriture d'url...259 11. Les filtres...260 11.1 Présentation...260 11.2 Utilisation...261 11.2.1 La déclaration du filtre....261 12. Interface RequestDispatcher...264 12.1 Présentation...264 12.1.1 Déléguer et transmettre...264 12.1.2 Inclure des données...264 12.2 Utilisation...265 12.2.1 Explications...265 13. Introduction au modèle MVC....269 13.1 Présentation...269 13.2 Utilisation...270 13.2.1 Les spécifications...270 14. Gestion des exceptions, erreurs et page d'accueil... 280 14.1 Gestion des exceptions...280 14.2 Gestions des pages d'erreurs...280 14.3 Gestion de la page d'accueil...282 15. En résumé....283 Chapitre 5 Java et les bases de données 1. Travailler avec une base de données...284 1.1 Présentation...284 1.2 Connexion aux bases de données...285 1.3 Utilisation de l'api JDBC...287 2. Partage de connexions....306 2.1 Présentation...306 2.2 Initialisation d'une connexion....306 3. Écouteurs/listeners et cycle de vie...315 3.1 Présentation...315 3.2 Utilisation...315 3.3 Mise en place d'une connexion partagée...316 4. Sources de données et pools de connexion....319 4.1 Présentation...319 4.2 JNDI...320
8 Java EE Guide de développement d'applications web en Java 4.3 Utilisation d'un objet DataSource...320 4.4 Mise en place...324 5. Bases de données et MVC....326 5.1 Présentation...326 5.2 Modèle conceptuel des données et base de données...327 5.3 Optimisations...336 5.3.1 Informations liées et mise en forme...336 5.3.2 Gestion des recherches...339 6. Classe modèle...343 6.1 Présentation...343 6.2 Mise en place...343 6.3 Optimisation avec JavaScript...352 6.4 Optimisation avec Ajax...355 6.5 Optimisation des Servlets....362 7. Modèle et JavaBean...381 7.1 Présentation...381 7.2 Utilisation...382 7.3 Conclusion....384 8. Les transactions...384 8.1 Présentation...384 8.2 Utilisation...385 8.3 Gestion des transactions....387 8.4 Optimisations...391 9. Multilingue et JDBC....394 9.1 Présentation...394 9.2 Mise en place...395 10. Authentification et Realms...401 10.1 Présentation...401 10.2 Les types d'authentification...401 10.2.1 Authentification de base...401 10.2.2 Authentification par Digest...401 10.2.3 Authentification par certificat...402 10.3 Gestion des Realms...402 10.4 Mise en place des Realms...402 10.5 Realm et base de données....404 10.6 Informations relatives au Realm...407 10.7 Realm et sécurité...407 10.8 Realm et formulaire personnalisé...408
Table des matières 9 10.9 En résumé...410 Chapitre 6 Framework Java EE 1. Framework...412 1.1 Présentation...412 1.2 Pourquoi utiliser un framework...413 1.3 Les différents frameworks....413 1.4 Quel framework choisir?...413 2. Apache-Struts...414 2.1 Présentation...414 2.2 Struts et MVC...414 2.3 Installation du framework...416 3. Projet Web...420 3.1 Présentation...420 3.2 Spécification de l'application de chat...421 4. Formulaires Struts...424 4.1 Présentation...424 4.2 JavaBean ActionForm...425 4.3 Le contrôleur Action....426 4.4 Le fichier de configuration struts-config.xml....427 5. Vues et Struts....431 5.1 Présentation...431 5.2 Les taglibs Struts...431 5.3 La classe de gestion des formulaires (ActionForm)....432 5.4 Les formulaires dynamiques (DynaForms)...435 5.5 Le fichier de propriétés et de langues...441 6. Les validations et vérifications de données...444 6.1 Présentation...444 6.2 Validation par méthode (reset() et validate())... 444 6.2.1 La méthode reset()... 444 6.2.2 La méthode validate()...445 6.3 Les Validators....448 6.4 Les DynaForms et Validators...451 6.5 Mise en forme...456 6.6 Validations en JavaScript...458
10 Java EE Guide de développement d'applications web en Java 7. Le contrôleur Struts...460 7.1 Présentation...460 7.2 Utilisation et déclaration de la classe ActionServlet....460 7.3 Les classes Actions...461 7.4 La méthode execute()... 463 7.5 Les méthodes Helper...471 8. Développement du module d'administration...474 8.1 Présentation...474 8.2 Mise en place...474 8.3 Installation de Struts...477 8.4 Installation du pool de connexion à la base de données....479 8.5 Liste des utilisateurs...481 8.5.1 Création du JavaBean....482 8.5.2 Déclaration du JavaBean de formulaire....482 8.5.3 Définition du routage...483 8.5.4 Codage de la classe de gestion des actions...483 8.5.5 Codage du modèle...485 8.5.6 Codage de la vue JSP...487 8.6 Consultation de la fiche utilisateur....489 8.7 Création d'un nouvel utilisateur...492 8.8 Modification de la fiche utilisateur...498 8.9 Activation des vérifications JavaScript...502 8.10 Suppression d'un utilisateur...502 8.11 Gestion de l'état du serveur...504 8.12 Gestion des salons...509 8.13 Gestion des inscriptions et interactivité...517 8.14 Gestion des connexions utilisateur et interactivité...527 9. Web2.0...534 9.1 Présentation...534 9.2 Tableaux redimensionnables....534 9.3 Champs redimensionnables...536 9.4 Bulles d'aide...537 9.5 Menu contextuel...539 9.6 Les arrondis...541 9.7 Aide dynamique et remplissages génériques...542 9.8 Éditeur de texte évolué...546 9.9 Date et calendrier....548 9.10 Effets d'attente....549
Table des matières 11 9.11 Feuilles de style dynamiques....551 10. En résumé....553 Chapitre 7 Techniques avancées 1. Gestion des traces et des logs...555 1.1 Présentation...555 1.2 L'API LOG4J....555 1.3 Mise en place de L'API LOG4J...555 1.3.1 Logger...556 1.3.2 Appenders...557 1.3.3 Layouts...557 1.4 Configuration dynamique....558 2. Ant : Another Neat Tool... 565 2.1 Présentation...565 2.2 Utilisation...565 2.3 Génération de l'archive d'un projet Java EE...569 3. Déployer un projet Java EE...572 3.1 Présentation...572 3.2 Mise en production d'un projet Java EE...573 3.3 Déploiement d'un projet Java EE à distance...576 4. Optimisation de la mémoire...578 4.1 Présentation...578 4.2 Gestion dynamique de la mémoire...579 5. En résumé....582 Index...583