Académique Documents
Professionnel Documents
Culture Documents
2023-2024
Objectifs du module
1. Comprendre l'architecture de la plateforme Java EE
2. Appliquer les principes de Java EE pour le développement
d'applications d'entreprise
3. Acquérir les connaissances nécessaires pour concevoir et
organiser une application n-tiers avec des Frameworks Java EE.
4. Générer des pages Web dynamiques avec JSF et la couche
métier avec EJB ainsi que la couche persistance avec JPA.
5. Maîtrisez le Framework Spring avec ses composants : Core,
Data, MVC et sécurité.
6. Initiation aux Web services SOAP et les services Rest.
2
Plan du cours
❑ Elément 1 : Initiation au Java EE
• Chapitre 1 : Introduction sur Java EE
• Chapitre 2 : Les Servlets
• Chapitre 3 : La vue (JSP et JSTL)
• Chapitre 4 : Persistance des données « JPA »
6
Qu’exige un projet informatique ?
▷ Besoins ou Exigences fonctionnelles :
○ Une application est créée pour répondre , tout d’abord, aux besoins
fonctionnels de l’entreprise: les fonctionnalités spécifiques que le
système ou l'application doit fournir
▷ Exigences Techniques :
○ En termes de performances :
■ Temps de réponse réduit
■ Haute disponibilité
■ Tolérance aux pannes
7
Qu’exige un projet informatique ?
▷ Exigences Techniques :
○ En Terme de maintenance :
■ Une application doit évoluer dans le temps.
■ Doit être fermée à la modification et ouverte à l’extension
○ En termes de Sécurité
○ Portabilité
○ Distribution
○ Capacité de communiquer avec d’autres applications distantes.
○ Capacité de fournir le service à différents types de clients (Desktop, Mobile, http…)
8
Java EE
▷ Java EE (Java Enterprise Edition) également connu sous le nom
de Jakarta EE depuis sa transition vers la Fondation Eclipse
▷ Une plateforme de développement pour la création
d'applications d'entreprise comme finances, bancaires, de
gouvernement, de santé
▷ Conçue pour créer et exécuter des applications d'entreprise
robustes et évolutives
▷ Étend Java SE en fournissant
• des API de mapping objet-relationnel,
• des architectures distribuées et multitiers,
• des services web,
• ... 9
Java EE
▷ Les applications d’entreprise peuvent avoir des interfaces
utilisateurs multiples
▷ Exemple:
▪ une interface web pour les clients accessibles via internet
▪ une interface graphique fonctionnant sur les ordinateurs de
l’entreprise sur le réseau privé
10
Concrètement: qu’est ce que Java EE ?
11
Chapitre 1 : Introduction sur Java EE
Rappels des notions basiques
12
Principes de l’Orienté Objet
13
Principes de l’OO: L’objet
○ Un objet est une entité informatique qui modélise un
élément du monde réel.
○ Un objet est un concept, abstraction ou une chose autonome
qui a un sens dans le contexte du système à modéliser
○ Peut correspondre à une entité « concrète » ou « abstraite»
○ Exemple :
■ un objet concret : le livre intitulé « Initiation à… »
■ un objet abstrait : le compte bancaire n° 1915233C
14
Principes de l’OO: L’objet
○ Un objet se caractérise par
■ Une identité (référence ou handle) ID
■ Un état attributs
■ Un comportement methode
15
Principes de l’OO: La classe
▷ Description d’une famille d’objets ayant une même structure et un même
comportement = La définition de la structure d'un objet
▷ Une classe est caractérisée par:
○ Un nom
○ Des attributs
○ Des méthodes
▷ La classe est la machine qui fabrique les objets
▷ Un moule ou un modèle à partir duquel on peut créer des objets.
▷ Un objet d’une classe est aussi appelé instance de cette classe.
16
Principes de l’OO: Encapsulation
▷ Regrouper des données (attributs) et un comportement
(méthodes) dans une même classe
▷ Réglementer l’accès aux données de l’extérieur (par
d’autres objets).
18
Principes de l’OO: Encapsulation
▷ Niveaux de visibilité
○ Publique: plus bas niveau de protection.
■ les fonctions de toutes les classes peuvent accéder aux
données ou aux méthodes
les classe hérite ○ Protégée: niveau moyen de protection
■ l'accès aux données est réservé aux fonctions des classes
héritières = fonctions membres de la classe ainsi que des
classes dérivées.
les méthode de classe ○ Privée: le plus élevé niveau de protection
■ l'accès aux données est limité aux méthodes de la classe
elle-même
19
Principes de l’OO: Héritage
▷ Permet de créer une nouvelle classe à partir d'une classe
existante.
• Nouvelle classe = classe dérivée/classe fille/sous classe
• Classe existante = classe de base/classe mère/super classe
▷ L’héritage facilite largement la réutilisation de produits existants
▷ Un avantage important de la POO.
20
Principes de l’OO: Héritage
21
Principes de l’OO: Polymorphisme
22
Principes de l’OO: Polymorphisme
Le polymorphisme d’héritage:
Permet de redéfinir une
méthode dans des classes
héritant d'une superclasse.
23
Rappel : JVM, JRE, JDK
25
Rappel : Java SE
26
Rappel : API
▷ Application Programming Interface (API) ce qui se traduit en
français par « Interface de Programmation Applicative »
▷ Ensemble de règles et de spécifications qui permet à différents
logiciels de communiquer entre eux de manière normalisée.
▷ Essentielle pour l'interopérabilité des systèmes et pour la
réutilisation de code.
27
Rappel : Architecture multi-tiers
▷ Aussi appelée Architecture à plusieurs niveaux ou couches
▷ Modèle de conception dans lequel une application est divisée en plusieurs
couches distinctes, chacune ayant ses propres responsabilités et
fonctionnalités spécifiques.
▷ Chaque couche communique avec les autres couches via des interfaces
définies
▷ Les principaux niveaux de l'architecture multi-tiers :
▪ Couche Web (Frontend)
▪ Couche Métier / Couche Intermédiaire (Backend)
▪ Couche d'Accès aux Données DAO (Backend)
28
Rappel : Architecture multi-tiers d’une application Web
SGBD
SGBD (Système de Gestion de Base de Données)
Permet de stocker, organiser et gérer stocker les données de
l’application de manière structurée et efficace
Client
29
Serveur web
▷ Un serveur web est conçu pour
○ gérer les requêtes HTTP (Hypertext Transfer Protocol) provenant
des clients, généralement des navigateurs web,
○ fournir des ressources statiques (des fichiers HTML, des images,
des feuilles de style CSS, des scripts JavaScript, etc )
30
Serveur web
▷ Les serveurs web sont optimisés pour la diffusion de contenu statique
▷ Ils peuvent également interagir avec des applications web dynamiques
en redirigeant des requêtes vers un serveur d'applications qui génère des
réponses dynamiques.
▷ Exemples :
31
Serveur d’applications
▷ Offre un environnement d'exécution complet pour les applications, y
compris la gestion des transactions, la sécurité, la persistance des
données, la gestion de la concurrence, etc.
▷ Conçu pour héberger et exécuter des applications logicielles distribuées,
souvent des applications d'entreprise.
▷ Exemples: WildFly (anciennement JBoss), Tomcat, WebLogic,
WebSphere, et GlassFish
32
Serveur web Vs Serveur d'applications
▷ la principale différence réside dans leur rôle et leurs
fonctionnalités.
▷ Un serveur web gère principalement des ressources web
statiques et traite les requêtes HTTP
▷ Un serveur d'applications exécute la logique métier et
génère des réponses dynamiques pour les applications
web.
34
Historique
▷ J2EE 1.2 (1999) : Première version officielle introduite par Sun Microsystems,
comprenant Servlets, JSP, JDBC, JNDI, EJB, JTA, JMS, et plus encore.
▷ J2EE 1.3 (2001) : Introduction des filtres Servlet, JAX-RPC (Java API for XML-
based Remote Procedure Call), et d'autres améliorations.
35
Historique
▷ Java EE 5 (2006) :
• Oracle (après l'acquisition de Sun Microsystems) a introduit le nom "Java
EE" pour remplacer "J2EE".
• Java EE 5 a apporté d'importantes améliorations: l'introduction
d'annotations pour simplifier la configuration des composants,
l'intégration de JPA (Java Persistence API) pour la gestion des données
▷ Java EE 6 (2009) :
• introduit des fonctionnalités telles que les WebSockets, les JAX-RS (Java
API for RESTful Web Services), les Bean Validation, et l'API Java EE 6
Profiles pour la simplification du développement. 36
Historique
▷ Java EE 7 (2013) : ajout des fonctionnalités telles que les WebSocket, JSON
Processing, Batch Processing, et l'API JMS 2.0 simplifiée.
▷ Java EE 8 (2017) : Introduction des fonctionnalités telles que CDI (Contexts
and Dependency Injection) 2.0, JSON-B (Java API for JSON Binding), et
d'autres améliorations pour le développement d'applications d'entreprise
modernes.
37
Historique
40
Avantages de JEE
▷ Interopérabilité : Les applications Java EE peuvent s'intégrer avec diverses
technologies et plates-formes, ce qui facilite l'interopérabilité avec des
systèmes existants et la communication entre différentes applications.
41
Composants de JEE
42
Composants de JEE
Types de composants
Types de composants
43
Composants de JEE
Types de composants
Types de composants
Types de composants
• Les Applets sont des petites applications Java exécutées dans une machine
virtuelle Java installée dans le navigateur.
• Ces applications utilisent une interface graphique évoluée de type SWING
• Demande des accès et des droits pour la sécurité / Installation d’un plug-in pour les
navigateurs 45
Composants de JEE
Types de composants
Types de composants
Types de composants
• Servlet : classe java qui gère les requêtes et les réponses HTTP.
• JSP (JavaServer Pages) : Génère des pages web dynamiques en
mélangeant du code Java avec du code HTML.
• JSF : construite à partir de Servlets et fournit un framework de
développement pour accélérer la création d'applications Web
47
Composants de JEE
Types de composants
Types de composants
51
Assemblage d’une application JEE
▷ Une application Java EE est composée d'un ensemble
d'unités de programmation qui pourront ensuite être
déployées sur n'importe quelle plate-forme compatible
avec les spécifications Java EE.
▷ Chaque unité contient :
▪ Des composants fonctionnels tels que les Enterprise
Bean, les pages web, les Servlets ou les Applets.
▪ Un fichier de description de déploiement (optionnel).
52
Déploiement d’une application Java EE
o Pour déployer une application dans un conteneur, il faut lui fournir deux
éléments :
• L'application avec tous les composants (classes compilées, ressources ...)
regroupée dans une archive ou module. Chaque conteneur possède son propre
format d'archive.
• Un fichier descripteur de déploiement contenu dans le module qui précise au
conteneur des options pour exécuter l'application
o Une application est un regroupement d'un ou plusieurs modules dans un
fichier EAR (Entreprise ARchive). L'application est décrite dans un fichier
application.xml lui-même contenu dans le fichier EAR
53
Structure d’une application Java EE
Les composants.
3 couches :
▪ Les composants.
▪ Les modules regroupant les composants
▪ Les applications regroupant les modules
54
Structure d’une application Java EE
Module Web (.war)
Une application Web doit avoir la structure suivante:
▪ Un répertoire racine public contenant les pages HT ML , les pages JSP, les
images...
▪ Un répertoire web-inf situé dans le répertoire racine de l'application web.
▪ Un fichier web.xml situé à la racine de WEB-INF : c'est le descripteur de
déploiement de l'application web.
▪ Un répertoire web-inf/classes contenant les classes compilées de l'application
(servlets, classes auxiliaires...).
▪ Un répertoire web-inf/lib contenant les fichiers jar de l'application (drivers
jdbc, frameworks empaquetés...).
▪ Le tout peut être empaqueté dans une archive sous la forme d’un fichier WAR
(Web Archive) (réalisé avec l'utilitaire jar du jdk).
55
Structure d’une application Java EE
Module EJB (.jar)
56
Structure d’une application Java EE
Fichier EAR (.ear)
Une application d'entreprise doit avoir la structure
suivante :
▪ Un répertoire META-INF/ contenant le descripteur
de déploiement XML de l'application JEE nommé
application.xml. C’est dans ce descripteur que l’on
définit les modules web et EJB qui constituent
l'application d'entreprise.
▪ Les fichiers archives .JAR et .WAR correspondant aux
modules EJB et aux modules Web de l'application
d'entreprise.
▷ Le tout peut être empaqueté dans une archive
sous la forme d’un fichier EAR. 57
Chapitre 1 : Introduction sur Java EE
Modèle MVC
58
Modèle MVC
▷ Java EE n’impose aucun rangement de code : on peut
développer n’importe comment en JEE
▷ Résultat :
60
Chapitre 1 : Introduction sur Java EE
Architecture Java EE
61
Architecture Java EE
Couche présentation
Couche métier
Couche client Couche Web
Couche DAO
Navigateur Requête
web HTTP
EJB Enterprise
JavaBeans
Contrôleur
Application
Servlet
mobile Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue SGBD
1. Le client envoie une requête HTTP vers Servlet qui joue le rôle de Contrôleur dans le modèle MVC.
Servlet est une classe Java spéciale utilisée pour gérer les requêtes et les réponses HTTP au sein d'une application web,
gérer l'interaction avec les utilisateurs et traiter les données entre le client et le serveur.
62
Architecture Java EE
Couche présentation
Couche métier
Couche client Couche Web
Couche DAO
Navigateur Requête
web HTTP
EJB Enterprise
JavaBeans
Contrôleur
Application
Servlet
mobile Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue SGBD
2. Le servlet va lire la requête HTTP et fait appel à la couche métier pour effectuer les traitements avec les EJB
Les EJB sont des composants réutilisables qui encapsulent la logique métier et fournissent des services d'entreprise tels
que la gestion des transactions, la sécurité et la gestion des événements
63
Architecture Java EE
Couche présentation
Couche métier
Couche client Couche Web
Couche DAO
Navigateur Requête
web HTTP
EJB Enterprise
JavaBeans
Contrôleur
Application
Servlet
mobile Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue SGBD
3. La couche métier effectue les opérations demandées et fait appel à la couche DAO pour récupérer des résultats en
cas de besoin
La couche DAO (Data Access Object) est responsable de la gestion de l'accès aux données et de l'interaction avec la
base de données 64
Architecture Java EE
Couche présentation
Couche métier
Couche client Couche Web
Couche DAO
Navigateur Requête
web HTTP
Résultat
EJB Enterprise
JavaBeans
Contrôleur
Application
Servlet
mobile
Résultat
Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue SGBD
Servlet
mobile Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue
JSP SGBD
5. Le servlet fait appel à la vue JSP Java Server Pages. Cette opération s’appelle Forwarding
6. JSP récupère le résultat à partir du modèle
66
Architecture Java EE
Couche présentation
Couche métier
Couche client Couche Web
Couche DAO
Navigateur Requête
web HTTP
EJB Enterprise
JavaBeans
Contrôleur
Application
Servlet
mobile Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue
JSP SGBD
HTML
7. La vue génère dynamiquement une page HTML qui contient les résultats récupérés
67
Architecture Java EE
Couche présentation
Couche métier
Couche client Couche Web
Couche DAO
Navigateur Requête
web HTTP
EJB Enterprise
JavaBeans
Contrôleur
Application
Servlet
mobile Modèle
EJB Enterprise
Réponse JavaBeans
HTTP Vue
JSP SGBD
68
Chapitre 1 : Introduction sur Java EE
Conteneur web : Tomcat
69
Conteneur web : Tomcat
▷ Apache Tomcat, généralement appelé simplement "Tomcat", est un
serveur d'applications web, plus précisément un conteneur
web libre de servlets et JSP.
▷ Tomcat a été écrit en langage Java. Il peut donc s'exécuter via
la machine virtuelle Java sur n'importe quel système d'exploitation la
supportant.
▷ Avantages de Tomcat :
○ Open Source et Gratuit : distribué sous la licence Apache
○ Léger et Rapide : Il n'inclut que les fonctionnalités essentielles d'un serveur
d'applications
○ Sécurité intégrée : mécanismes d'authentification et d'autorisation, la
gestion des certificats …
○ Grande flexibilité
○ Configuration simple
70
Arborescence de Tomcat
▷ ./bin : fichier binaire contient tous les fichiers qui permettent de lancer Tomcat,
que ce soit sous Linux (fichiers .sh) ou Windows (fichiers .bat)
71
Architecture de Tomcat
• Un serveur (server) encapsule tout le conteneur
web. Il ne peut s'exécuter qu'un seul Server dans
une JVM
• Services, intermédiaires collectant différents
canaux de transmissions vers un traitement
• Un moteur (engine), traite les requêtes des
différents Connecteurs associés au Service : c'est
le moteur de traitements des servlets.
• Des hôtes (host), qui relient une adresse réseau
avec le serveur ;
• Les connecteurs (connector), gère les communications
avec un client. Le connecteur HTTP est le plus
typique
• Les contextes (context), qui sont les applications web.
72
Tomcat pour Java EE
73
QCM (1)
1. Qu'est-ce que Java EE ?
a) Une version de Java destinée aux téléphones mobiles.
b) Une plateforme pour le développement d'applications web et d'entreprise en Java.
c) Une extension de Java pour les applications de bureau.
2. Quel est le rôle d'un Servlet dans Java EE ?
a) Gérer la persistance des données.
b) Créer des pages web statiques.
c) Gérer les requêtes HTTP et générer des réponses dynamiques.
d) Contrôler la mise en cluster des applications
3. Comment Java EE facilite-t-il le développement d'applications multi-tiers ?
a) En proposant une architecture distribuée qui sépare les composants en trois couches
: présentation, logique métier et accès aux données.
b) En simplifiant la création de sites web statiques.
4. Quel rôle joue un conteneur d'applications dans Java EE ?
a) Il s'agit d'un environnement de développement intégré pour Java EE.
b) Il gère la gestion de la base de données.
c) Il gère le cycle de vie des composants Java EE, tels que les Servlets et les EJB.
d) Il génère des pages web statiques.
74
QCM(2)
5. Quel est le rôle principal d'un conteneur d'applications Java EE ?
a) Il stocke les fichiers de configuration de l'application.
b) Il fournit une interface utilisateur graphique pour les applications web.
c) Il gère le déploiement, la sécurité, la gestion des transactions, etc., des composants de
l'application.
d) Il compile le code Java en code natif pour une exécution plus rapide.
6. Quel composant de Java EE est principalement utilisé pour générer des pages web
dynamiques ?
a) Servlets.
b) EJB (Enterprise JavaBeans).
c) JMS (Java Message Service).
d) JSP (JavaServer Pages
7. Quel composant de Java EE est utilisé pour gérer la persistance des données dans une
application d'entreprise ?
a) Servlets.
b) JSP (JavaServer Pages).
c) JPA (Java Persistence API).
d) JMS (Java Message Service)
75
QCM(3)
8. Un modèle MVC (Modèle-Vue-Contrôleur) est ?
a) Un langage de programmation populaire.
b) Un modèle pour organiser le code source d'une application.
c) Une architecture de conception qui sépare les responsabilités dans une application.
d) Un outil de gestion de base de données.
9. Quel est le rôle du composant "Modèle" dans le modèle MVC ?
a) Il gère l'interface utilisateur.
b) Il représente les données et la logique métier de l'application.
c) Il gère la navigation dans l'application.
10. Quel est le rôle du composant "Contrôleur" dans le modèle MVC ?
a) Il affiche les données à l'utilisateur.
b) Il stocke les données de l'application.
c) Il gère les interactions de l'utilisateur et la logique de l'application.
11. Quel est le rôle du composant "Vue" dans le modèle MVC ?
a) Il gère la logique métier de l'application.
b) Il représente l'interface utilisateur et affiche les données.
c) Il traite les requêtes HTTP.
76
Protocole HTTP
77
Protocole HTTP
78
Protocole HTTP
▷ Fonctionnement (très simple en HTTP/1.0)
• Le client se connecte au serveur (Créer une socket)
• Le client demande au serveur un document : Requête HTTP
• Le serveur renvoi au client le document (status=200)
• ou Le serveur renvoi une erreur (status=404) quand le
document n’existe pas
• Déconnexion
79
Protocole HTTP
▷ Pour que le client et le serveur communiquent : deux sockets sont créés des deux
côtés
80
HTTP 1.0 vs HTTP 1.1
▷ HTTP 1.0 :
○ chaque requête HTTP établit une nouvelle connexion TCP avec le serveur
pour récupérer une ressource.
○ Une fois la réponse reçue, la connexion est fermée.
○ Cela peut entraîner un surcoût en termes de performances en raison de la
création fréquente de connexions.
▷ HTTP 1.1 :
○ prend en charge la persistance de la connexion.
○ Une seule connexion TCP peut être utilisée pour plusieurs requêtes et
réponses, réduisant ainsi la latence et améliorant l'efficacité.
81
HTTP 1 vs HTTP 2
▷ HTTP/1 : les navigateurs effectuent une requête par ressource. Ceci augmente
considérablement le temps de chargement d’une page.
▷ HTTP/2 utilise ce qu’on appelle le multiplexage: le navigateur télécharge avec
une seule requête toutes les ressources nécessaires à l’affichage de la page
82
Méthodes du Protocole HTTP
▷ Une requête HTTP peut être envoyée en utilisant les méthodes suivantes:
• GET : pour récupérer des ressources à partir d'un serveur web.
• POST : Pour soumissionner des formulaires (Envoyer, dans la requête, des
données saisies par l’utilisateur )
• PUT : pour envoyer un fichier du client vers le serveur
• DELETE : permet de demander au serveur de supprimer un document.
• HEAD : permet de récupérer les informations sur un document (Type,
Capacité, Date de dernière modification, etc…)
• OPTIONS : pour demander au serveur des informations sur les options de
communication prises en charge pour une ressource particulière. Cela permet
au client de savoir quelles méthodes sont autorisées pour une ressource
donnée
83
Codes de statut
▪ Codes numériques envoyés par un serveur HTTP pour indiquer
le résultat d'une requête HTTP effectuée par un client. (404,200....)
▪ Les codes sont des numéros de 3 chiffres.
▪ Le premier chiffre est utilisé pour spécifier une des cinq
catégories de réponse (informations, succès, redirection, erreur
client et erreur serveur)
▪ Ils sont essentiels pour le développement web, car ils permettent
de diagnostiquer rapidement les problèmes et d'indiquer les
actions à prendre en cas de succès ou d'échec d'une requête.
▪ Permettant aux clients de réagir de manière appropriée aux
réponses des serveurs
84
Codes de statut
Les principaux codes de statut HTTP :
o Information 1xx :
• 100 (Continue): Utilisé dans le cas où la requête possède un corps
volumineux.
• 101 (switching protocole) : Demander au client de changer de
protocole. i.e. switching de HTTP 1.0 vers HTTP 1.1
o Succès 2xx :
• 200 (OK): Le document a été trouvé et son contenu suit…
• 201 (Created) : Le document a été créé en réponse à un PUT
• 202 (Accepted) : Requête acceptée, mais traitement non terminé.
• 204 (No Response) : Le serveur n’a aucune information à renvoyer.
• 206 (Partial Content) : une partie du document suit…
85
Codes de statut
o Redirection 3xx :
• 301 (Moved): Le document a changé d’adresse d’une façon permanente
• 302 (Found) : Le document a changé d’adresse temporairement.
• 304 (Not modified) : Le document demandé n’a pas été modifié.
o Erreurs du Client 4xx :
• 400 (Bad Request): La syntaxe de la requête est incorrecte…
• 401 (Unauthorized) : Le client n’a pas les privilèges d’accès au document
• 403 (Forbidden) : L’accès au document est interdit
• 404 (Not Found) : Le document demandé n’a pu être trouvé
• 405 (Method not allowed) : La méthode de la requête n’est pas autorisée.
o Erreurs du Serveur 5xx :
• 500 (Internal Error): Une erreur inattendu est survenue au niveau du serveur…
• 501 (Not implemented) : La méthode utilisé n’est pas implémentée.
• 502 (Bad Gateway) : Erreur du serveur distant lors d’une requête proxy.
86