Architecture et conception d'applications J2EE PDF
Document Details
Uploaded by Deleted User
Soumia MEDIA
Tags
Summary
Ce document présente l'architecture et la conception des applications J2EE. Il couvre différents composants tels que les servlets, les JSP, et les EJB, ainsi que des concepts liés à la conception d'applications et au développement Web. Il contient également des exemples de code.
Full Transcript
Traduit de Anglais vers Français - www.onlinedoctranslator.com Architecture et conception d'applications J2EE avec: Soumia MEDIA Développeur J2EE FEUILL...
Traduit de Anglais vers Français - www.onlinedoctranslator.com Architecture et conception d'applications J2EE avec: Soumia MEDIA Développeur J2EE FEUILLE DE ROUTE Services Web Sécurité dans (REPOSE et J2EE Introduction EJB SAVON) J2EE 1 3 5 7 2 4 6 Servlet, jsp Persistance (JPA, Printemps Hiberner) Cadre 3 1. Introduction aux applications d'entreprise Objectif:Comprendre ce que sont les applications d'entreprise et pourquoi J2EE est critique. Thèmes: ○ Qu'est-ce que J2EE ? ○ Applications d'entreprise et leur architecture. ○ Présentation des applications Web, architecture multi-niveaux (Présentation, Entreprise, niveaux de données). Exercice:Rechercher et présenter différentes applications d'entreprise construites à l'aide de J2EE. HISTOIRE Pourquoi J2EE ? Architecture client/serveur Modèle MVC Qu'est-ce que J2EE ? Définition:J2EE (Java 2 Enterprise Edition) est une plate-forme conçue pour développer des entreprises à grande échelle, distribuées et à plusieurs niveaux applications utilisant Java. But:Il fournit un ensemble d'API et de services pour créer des environnements de travail sécurisés, évolutifs et applications commerciales fiables. Caractéristiques principales :Inclut des technologies telles queServlets,JSP,EJB,JPA, et Services Webpour gérer différentes couches d'une application d'entreprise. Avantages de J2EE 1.Portabilité:il fonctionne sur de nombreuses plateformes. 2.Réutilisabilité:Les composants dans J2EE sont réutilisés. 3.Sécurité:La technologie Java permet aux programmeurs de gérer les données sensibles de manière beaucoup plus sécurisée que dans les programmes C/C++. 4.Évolutivité:J2EE permet aux développeurs de créer des applications qui fonctionnent bien sur les petits ordinateurs monoprocesseurs et sur les grands systèmes multiprocesseurs. 5.Fiabilité:De nombreux services (tels que la gestion et la surveillance des transactions) dont les applications ont besoin pour être fiables sont intégrés à J2EE. Architecture à plusieurs niveaux Définition:L'architecture à plusieurs niveaux sépare une application en différentes couches logiques, chacune avec des responsabilités, améliorant l'évolutivité et la maintenabilité. Niveaux : 1.Couche de présentation (côté client): Affiche les données à l'utilisateur et accepte les saisies utilisateur. Technologies : HTML, JSP, JSF ou PrimeFaces. 2.Couche métier (côté serveur): Contient la logique métier, traite les entrées et envoie les données à la couche de présentation. Technologies : EJB, Spring. 3.Couche de données (base de données): Gère l'accès et la persistance de la base de données. Technologies : JPA, Hibernate, JDBC. 2. Servlets et JSP (pages JavaServer) Objectif:Apprenez à créer des applications Web dynamiques à l'aide de servlets et de JSP. Thèmes: ○ Introduction aux servlets. ○ Cycle de vie des servlets et gestion des requêtes. ○ Introduction à l'architecture JSP et MVC. ○ Bibliothèques de balises JSP et JSTL. Exercices: ○ Créez une application Web de base basée sur Servlet qui accepte les entrées de l'utilisateur et affiche les résultats. ○ Créez une page JSP en utilisant JSTL pour afficher les données utilisateur. Qu'est-ce qu'un servlet Qu'est-ce qu'un servlet ? Définition:Un servlet est une classe Java utilisée pour étendre les capacités d'un serveur. Les servlets gèrent les requêtes des clients et fournissent des réponses, généralement dans les applications Web. But:Ils traitent les requêtes HTTP entrantes (comme les soumissions de formulaires) et génèrent des réponses dynamiques (comme l'affichage du profil d'un utilisateur après la connexion). Servlet - Définition Déf: La technologie servlet est utilisée pour créer une application Web (réside côté serveur et génère une page Web dynamique). Avantages 1.Meilleures performances :car il crée un thread pour chaque requête, pas de processus. 2.Portabilité:parce qu'il utilise le langage Java. 3.Robuste:JVMgère les servlets, nous n'avons donc pas à nous en soucier la fuite de mémoire,collecte des ordures, etc. 4.Sécurisé:parce qu'il utilise le langage Java. Servlet Étapes pour créer un servlet 1. Créer une structure de répertoire (projet Web dynamique) 2. Créer un servlet 3. Compiler le servlet 4. Créer un descripteur de déploiement 5. Démarrez le serveur et déployez le projet 6. Accéder au servlet Créer un servlet Descripteur de déploiement sonoojaiswal < Description des éléments classe de servlet>DémoServlet représente l'ensemble de l'application. est un sous-élément de et représente le servlet. sonoojaiswal le nom du servlet. est un sous-élément de qui représente la classe du servlet. est un sous-élément de. C'est utilisé pour mapper le servlet. est un sous-élément de. Ceci le modèle est utilisé côté client pour appeler le servlet. Configuration pour le serveur Apache Tomcat définir JAVA_HOME ou JRE_HOME dans la variable d'environnement Comment fonctionne Servlet ? Si(serveur.checkServlet) { //charge la classe servlet. //instancie la classe servlet. //appelle la méthode init en passant l'objet ServletConfig } autre { //appelle la méthode de service en transmettant les objets de demande et de réponse } Comment le conteneur Web gère-t-il la demande de servlet ? Le conteneur Web est chargé de gérer la demande. mappe la requête avec le servlet dans le fichier web.xml. crée des objets de requête et de réponse pour cette requête appelle la méthode de service sur le thread La méthode de service public appelle en interne la méthode de service protégée La méthode de service protégée appelle la méthode doGet en fonction du type de demande. La méthode doGet génère la réponse et elle est transmise au client. Après l'envoi de la réponse, le conteneur Web supprime les objets de demande et de réponse. Le thread est contenu dans le pool de threads ou supprimé selon l'implémentation du serveur. Collaboration de servlets Répartiteur de requêtes EnvoyerRedirection avant inclure Attaquantsune requête Comprendle contenu d'une d'un servlet à un autre ressource (servlet, page JSP ressource (servlet, JSP ou ou fichier HTML) dans la fichier HTML) sur le serveur. réponse Répartiteur de requêtes - forward() Répartiteur de requêtes - include() Modèles MVC-JSP JSP - Définition JSP (JavaServer Pages)est une technologie fournie parJava EE(Jakarta EE) pour créer des pages Web dynamiques côté serveur. Il permet aux développeurs de intégrer du code Java directement dans les pages HTML, ce qui facilite la génération contenu dynamique (tel que l'affichage des résultats de la base de données ou le traitement des données utilisateur) (entrée) sur le Web. JSP - Caractéristiques 1.HTML avec code Java intégré: Les pages JSP contiennent principalement du HTML et permettent d'intégrer du code Java à l'aide de balises spéciales. 2.Simplifie le développement de servlets: JSP est construit sur la base deServletL'API est traduite en servlet par le serveur. Elle simplifie la création d'une interface utilisateur côté serveur par rapport à l'écriture manuelle de servlets. 3.Extensible via les bibliothèques Java: JSP peut utiliser JavaBeans, des balises personnalisées et des bibliothèques pour séparer la logique métier de la présentation. 4.Cycle de vie: ○ Traduction:Le JSP est converti en servlet par le serveur. ○ Compilation:Le servlet est compilé en bytecode. ○ Exécution:Le servlet génère le contenu dynamique. Cycle de vie JSP ○ Traduction de la page JSP ○ Compilation de pages JSP ○ Chargement de classe (le chargeur de classe charge le fichier de classe) ○ Instanciation (Objet de la Le servlet généré est créé). ○ Initialisation (le conteneur invoque la méthode jspInit()). ○ Traitement des requêtes (le conteneur appelle la méthode _jspService()). ○ Détruire (le conteneur appelle la méthode jspDestroy()). Directives JSP 1.Directives JSP Les directives jsp sont des messages qui indiquent au conteneur Web comment traduire une page JSP dans le servlet correspondant. Il existe trois types de directives : directive de page inclure la directive Directive taglib Syntaxe de la directive JSP Directives JSP -directive de page Attributs de la directive de page JSP ○ importer ○ Type de contenu ○ s'étend ○ informations ○ tampon ○ langue ○ estÉignoré obtenirValeur() ○ estThreadSafe ○ rinçage automatique ○ session ○ pageEncodage ○ page d'erreur Syntaxe: ○ estErreurPage Directives JSP -Inclure la directive La directive include est utilisée pour inclure le contenu de n'importe quelle ressource, qu'il s'agisse d'un fichier jsp, d'un fichier html ou d'un fichier texte. La directive include inclut le contenu original de la ressource incluse au moment de la traduction de la page (la page jsp n'est traduite qu'une seule fois, il sera donc préférable d'inclure la ressource statique). Syntaxe de la directive include : Directives JSP -Directive Taglib La directive JSP taglib est utilisée pour définir une bibliothèque de balises qui définit de nombreuses balises. Nous utilisons le fichier TLD (Tag Library Descriptor) pour définir les balises. Dans la section des balises personnalisées, nous utiliserons cette balise, il sera donc préférable de l'apprendre dans la balise personnalisée. Syntaxe de la directive taglib : 3. Enterprise Java Beans (EJB) Objectif:Comprendre le rôle des EJB dans la création d’applications d’entreprise évolutives. Thèmes: ○ Introduction aux EJB et à ses types (Session Beans, Message-driven Beans). ○ Injection de dépendances dans EJB. ○ Transactions et sécurité dans EJB. Exercices: ○ Développer un bean de session sans état pour un système d’authentification utilisateur. ○ Implémenter la gestion des transactions dans une application de panier d'achat simple. EJB - Définition EJB est untechnologie côté serveurdans Java EE (maintenant Jakarta EE) utilisé pour construire applications d'entreprise sécurisées, évolutives et transactionnelles. Il simplifie le développement d'applications en gérant des tâches complexes telles que gestion des transactions,sécurité, etcommunication à distancevia le conteneur EJB. Considérez EJB comme un «auxiliaire« Cela permet aux développeurs de se concentrer sur l'écriture de la logique métier tandis que le conteneur gère tout le reste, comme les connexions, les transactions et la sécurité. EJB - Fonctionnalités Gestion des transactions: Prise en charge automatique des transactions distribuées par configuration déclarative ou programmatique. Sécurité:Prise en charge intégrée du contrôle d'accès basé sur les rôles et de la sécurité déclarative. Invocation de méthode à distance (RMI): Permet la communication entre les systèmes distribués applications utilisant des interfaces distantes EJB. Gestion de la concurrence: Gère le multithreading en interne, permettant les développeurs se concentrent sur la logique métier. Gestion du cycle de vie:Le conteneur EJB gère le cycle de vie des beans (par exemple, la création, la mise en pool et la destruction). Évolutivité: Prend en charge l'équilibrage de charge et le clustering pour garantir des performances élevées dans les systèmes distribués. EJB - Difficultés Complexité:Les EJB sont souvent considérés comme trop complexes en raison de leur utilisation intensive de XML configurations et une courbe d'apprentissage abrupte, en particulier dans les versions antérieures (EJB 2.x et inférieures). Intensif en ressources:Nécessite un serveur d'applications Java EE complet (par exemple, WildFly, WebLogic), ce qui le rend lourd et inadapté aux applications à petite échelle. Accouplement serré: Dépendance au conteneur EJB, ce qui rend les tests et portabilité difficile. Frais généraux de développement:L'écriture d'EJB nécessite l'implémentation de plusieurs interfaces, annotations et la compréhension d'API complexes. Maintenance du code hérité:Les versions antérieures d'EJB (comme EJB 2.x) sont difficiles à maintenir en raison du code verbeux et standard. EJB - Types EJB Haricot de session Bean piloté par message Bean Entité Contientlogique d'entrepriseça Comme Session Bean, il Encapsulele peut êtreinvoquéparlocale, contient leentreprise état qui peut être télécommandeouservice webclient. logiquemais c'estinvoquépar persistédans le message de passage base de données Calculs, Obsolète, base de données il est remplacé parJPA accéder….. 1. Bean de session - Types Haricot de session Apatride Avec état Singleton Il n'a pas maintenir Il maintient l'état Un exemple par État de un client d'un client sur application, elle est partagée entre multiple plusieurs requêtes. entre les clients et appels de méthode. prend en charge la simultanéité Session Bean - sans état Logique métier uniquement n'a pas d'état (données) Peut être accessible par un client à la fois. En cas d'accès simultané, le conteneur EJB achemine chaquedemandeàdifférentexemple Apatride - exemple 2. Accéder au Bean (côté client) 1. Créer un bean sans état importerjavax.naming.Contexte; importerjavax.naming.InitialContext; (mappedName = "st1") classe publiqueClient EJBC{ public statiquevideprincipal(Chaîne[] args) { essayer{ Contextecontexte= nouveauContexte initial(); CalculatriceCalculatrice à distance= (Calculatrice à distance) contexte.lookup("/stl"); Système.out.println("Ajout: " + calculatrice.add(10, 20)); System.out.println("Soustraction: " + calculatrice.soustraire(30, 10)); } attraper(Exception e) { e.printStackTrace(); } } } Nous utilisonsJNDI (interface de nommage et d'annuaire Java)àchercher et invoquer l'EJB. Statefull - Exemple-Créer le bean de session avec état (mappedName = "stf") Statefull - Exemple-Écrire le code client ("/stf"); EJB - Limites Ne convient pas aux applications légères:Trop gourmand en ressources pour les projets de petite ou moyenne taille. La complexité du développement:Nécessite une expertise significative pour mettre en œuvre et maintenir. Faible testabilité:Les tests unitaires sont difficiles sans le conteneur EJB, rendre les tests simulés plus difficiles. Manque de flexibilité: Couplé à la spécification Java EE, qui peut limiter l'innovation. Dépendance du conteneur:Les applications dépendent fortement des conteneurs EJB (par exemple, JBoss, GlassFish), ce qui entraîne des problèmes de portabilité.