Vous êtes sur la page 1sur 84

Java EE

Filière Informatique et Ingénierie des Données


Semestre 3

Prof. Bouchra KAROUM

Ecole Nationale des sciences Appliquées - Khouribga


Université Sultan Moulay Slimane Béni-Mellal

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 »

❑ Elément 2 : Java EE avancée


• Chapitre 1 : Les composants métiers EJB
• Chapitre 2 : Le framework JSF
• Chapitre 3 : Le framework Spring
• Chapitre 4 : SOA Architecture Orientée Service
4
Chapitre 1 : Introduction sur
Java EE
5
Qu’exige un projet informatique

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

▷ Les principes de base de l’OO:


○ Objet
○ Classe
○ Encapsulation public/private
○ Héritage
○ Polymorphisme

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

○ Possède une identité unique qui le distingue des autres


objets.
○ Maintient son état dans des variables appelées attributs ou
champs.
○ Implémente son comportement à l'aide de fonctions ou
procédures appelées méthodes.

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).

▷ Impossible d’agir directement sur les données d’un objet


▷ Il est nécessaire de passer par ses méthodes.
▷ Permet de garantir l’intégrité des données contenues
dans l’objet.
17
Principes de l’OO: Encapsulation
▷ L'encapsulation permet de définir des niveaux de
visibilité des éléments de la classe.

▷ Définir les droits d'accès aux données.

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

▷ Concerne les méthodes


▷ Poly = diversité, morphisme = forme
▷ Polymorphisme = indique qu’une chose peut prendre plusieurs
formes.
▷ Une méthode peut avoir un comportement différent selon les
situations.

22
Principes de l’OO: Polymorphisme

▷ Trois types de polymorphisme :


Le polymorphisme ad hoc : Le polymorphisme paramétrique:
Permet d'avoir des fonctionsméthode Permet de définir plusieurs
de même nom, avec des fonctions de même nom, mais
fonctionnalités similaires, possédant des paramètres
dans des classes qui n’ont différents (en nombre et/ou en
aucun rapport entre elles type).

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

▷ Java Virtual Machine (JVM) est l'élément clé qui permet à


Java d'être portable, sécurisé et performant. Il crée un
environnement d'exécution isolé dans lequel les
programmes Java peuvent être exécutés.

▷ Java Runtime Environment (JRE) une famille de logiciels


qui permet l’exécution des programmes écrits en Java.

▷ Java Development Kit (JDK) contient un ensemble


d’outils avec lesquels le code Java peut être transformé
en bytecode (une représentation intermédiaire du code
source Java qui est indépendante de la plateforme).

25
Rappel : Java SE

▷ Java Standard Edition est une spécification de la plate-forme Java d’Oracle,


destinée typiquement aux applications pour poste de travail.

▷ À chaque version de Java SE correspond notamment :


○ les Java Specification Requests (JSR), i.e. les spécifications de la
version considérée
○ un Java Development Kit (JDK)
○ un Java Runtime Environment (JRE)

▷ Java Standard Edition est aussi appelée Java SE et anciennement Java 2


Platform, Standard Edition, ou encore J2SE.

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

Couche DAO (Data Access Object)


Couche DAO Responsable de la gestion de l'accès aux données et de l'interaction
avec la base de données

Couche métier Couche métier


Permet de gérer la logique métier de l’application : les règles métier,
la logique de traitement des données et les opérations spécifiques à
l'activité de l'application. Technologies utilisées : PHP, JEE, .NET …
Couche Web
Couche Web
Permet d’implémenter la logique présentation Web de l’application.
Utilise des technologies front-end pour afficher les données et
permettre aux utilisateurs d'interagir avec l'application

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.

Les serveurs d’applications peuvent aussi servir de serveur web


Exemple : Tomcat
33
Chapitre 1 : Introduction sur Java EE
Java EE

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

▷ Transition vers Jakarta EE (2018-2019) :


• En 2017, Oracle a annoncé qu'il transférerait la spécification Java EE à la Fondation
Eclipse, qui l'a renommée Jakarta EE.
• Jakarta EE 8 est identique à Java EE 8, mais avec un nouveau nom et une nouvelle
organisation de la communauté.
▷ Jakarta EE 9 (2020) :
• Jakarta EE 9 a été la première version majeure publiée sous l'égide de la Fondation
Eclipse.
• Elle a supprimé les dépendances à des technologies obsolètes, alignant Jakarta EE
sur les nouvelles réglementations de Jakarta EE.
▷ Jakarta EE 10 (2021) :
• Jakarta EE 10 a poursuivi les efforts de modernisation en introduisant des mises à
jour de dépendances et en éliminant davantage de technologies obsolètes. 38
Avantages de Java EE
▷ Modularité et Réutilisabilité : Java EE permet aux développeurs de créer des
modules réutilisables tels que des servlets, des EJB et des services web, ce
qui accélère le développement et facilite la maintenance.

▷ Évolutivité et Performance : Java EE est conçu pour gérer des charges de


travail élevées et des applications distribuées. Il prend en charge le
déploiement sur des serveurs d'applications robustes capables de gérer des
demandes en simultané.

▷ Gestion des Transactions : Java EE offre une gestion des transactions


intégrée grâce à l'API JTA. Cela permet de maintenir l'intégrité des données,
même dans des environnements distribués, en garantissant que les opérations
se terminent avec succès ou sont annulées si une erreur se produit
39
Avantages de JEE
▷ Persistance des Données : L'API JPA (Java Persistence API) facilite la
persistance des données en utilisant des objets Java pour représenter les
données relationnelles. Cela simplifie le mapping objet-relationnel et réduit la
complexité du développement d'accès aux données.

▷ Sécurité : Java EE offre des mécanismes de sécurité intégrés pour


l'authentification, l'autorisation et la gestion des rôles. Cela permet de
sécuriser les applications d'entreprise et de protéger les données sensibles.

▷ Services Web : Java EE prend en charge la création de services web SOAP et


RESTful, ce qui facilite l'intégration d'applications et la communication entre
différents systèmes.

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.

▷ Normalisation : Java EE est une plateforme standardisée, ce qui signifie que


les applications développées en utilisant cette technologie peuvent être
portées sur différents serveurs d'applications compatibles Java EE.

▷ Évolution Continue : Avec l'évolution vers Jakarta EE et la gouvernance open


source, la plateforme continue de s'améliorer avec des mises à jour régulières
et l'ajout de nouvelles fonctionnalités pour répondre aux besoins changeants
du développement d'applications d'entreprise.

41
Composants de JEE

▷ Les composants sont des unités réutilisables de code qui fournissent


différentes fonctionnalités et services nécessaires au bon
fonctionnement de l'application.

▷ Les composants sont


• écrits en Java compilé en bytecode,
• assemblés dans l’application Java EE,
• déployés dans un serveur Java EE.

42
Composants de JEE
Types de composants

Types de composants

Client Web Métier

Clients Applications Pages JavaServ Entités Enterprise


Applet Servlets
Web clientes JSP er Faces beans JavaBeans

43
Composants de JEE
Types de composants

Types de composants

Client Web Métier

Clients Applications Pages JavaServ Entités Enterprise


Applet Servlets
Web clientes JSP er Faces beans JavaBeans

● U n client Web consiste en des pages Web de différents types (HTML, X H T M L , X M L ,


JavaScript ou autres)
● Générées à partir de composants exécutés côté serveur dans un conteneur Web et
capables de répondre aux requêtes HTTP en provenance du navigateur Internet.
44
Composants de JEE
Types de composants

Types de composants

Client Web Métier

Clients Applications Pages JavaServ Entités Enterprise


Applet Servlets
Web clientes JSP er Faces beans JavaBeans

• 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

Client Web Métier

Clients Applications Pages JavaServ Entités Enterprise


Applet Servlets
Web clientes JSP er Faces beans JavaBeans

• Applications qui s'exécutent sur la machine du client et fournit un


ensemble de services aux utilisateurs par l'intermédiaire d'une
interface graphique
46
Composants de JEE
Types de composants

Types de composants

Client Web Métier

Clients Applications Pages JavaServ Entités Enterprise


Applet Servlets
Web clientes JSP er Faces beans JavaBeans

• 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

Client Web Métier

Clients Applications Pages JavaServ Entités Enterprise


Applet Servlets
Web clientes JSP er Faces beans JavaBeans

• Entités beans principalement utilisées pour la persistance des données


dans une application
• EJB (Enterprise JavaBeans) : Encapsule la logique métier, la gestion des
transactions, la sécurité, etc.
48
Conteneurs de JEE
▷ Un conteneur est un environnement d'exécution fourni par la plateforme
Java EE pour héberger et gérer différents types de composants.
▷ Chaque type de composant (servlets, EJBs, etc.) a son propre conteneur
qui offre un environnement d'exécution spécifique pour ce type de
composant.
▷ Le rôle du conteneur :
− la sécurité,
− la gestion des transactions,
− la gestion des cycles de vie,
− l'injection de dépendances
49
Types de conteneurs

▷ Conteneur de Servlets : gère l'exécution et la gestion des servlets. Il gère les


cycles de vie des servlets, gère les threads, les sessions utilisateur et la
génération des réponses HTTP. Il traite également les aspects liés à la sécurité
et à l'authentification pour les servlets.
▷ Conteneur EJB (Enterprise JavaBeans) : gère l'exécution et la gestion des
différents types d'EJBs, tels que les session beans (sans état et avec état) et les
message-driven beans. Il gère la gestion des cycles de vie des EJBs, la gestion
des transactions, la sécurité et l'injection de dépendances.
▷ Conteneur Web : Le conteneur web gère l'exécution des servlets, des JSP et
d'autres composants web. Il fournit également un environnement pour la
gestion des sessions utilisateur, la gestion des cookies, la gestion des requêtes
et des réponses HTTP, ainsi que la gestion de la sécurité au niveau de
l'application web.
50
Types de conteneurs

▷ Conteneur de Persistance : Ce conteneur gère les opérations de persistance


des données dans une application, notamment via l'utilisation de l'API JPA
(Java Persistence API). Il s'occupe de la conversion des objets Java en entités
persistantes stockées dans une base de données relationnelle.
▷ Conteneur de Message : Le conteneur de message gère la communication
asynchrone entre les composants de l'application via l'API JMS (Java Message
Service). Il assure la livraison fiable des messages et gère les files d'attente et
les sujets de messages.

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.

Les modules regroupant


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)

Un fichier JAR (Java Archive) doit avoir la structure suivante :


▪ Un répertoire META-INF/ contenant un descripteur de déploiement X M L du
module EJB, nommé ejb-jar.xml
▪ Les fichiers .class correspondant aux interfaces locale (home interface) et
distante (remote interface), à la classe d'implémentation, et aux classes
auxiliaires (classes d'exception par exemple) des EJBs, situées dans leur
package.
▪ Le tout peut être empaqueté dans une archive sous la forme d’un
fichier 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 :

▷ Trop difficile de retrouver une information !!!!

La Solution c’est d’utiliser :


Une Bonne Pratique de développement : MVC
59
Modèle MVC

▷ MVC (Modèle-Vue-Contrôleur) est un motif de conception (pattern) utilisé dans le


développement logiciel
▷ Lancé en 1978
▷ Permet d’organiser le code de manière structurée et modulaire
▷ Contient 3 composants, Chaque composant a un rôle spécifique et différent
○ Modèle :
■ Représente les données de l'application;
■ Responsable de la gestion, stockage, accès et la mise à jour des
données
○ Vue : responsable de l'affichage des données au sein de l'interface utilisateur
○ Contrôleur: agit comme un intermédiaire entre le modèle et la vue. Il gère les
événements, les entrées utilisateur et les requêtes.

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

4. Servlet reçoie le résultat et le stocke dans le Modèle.


Le modèle permet de stocker toutes les données qui seront affichées dans la vue
65
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

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

8. La page HTML générée est envoyée dans le corps de la réponse HTTP

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)

▷ ./conf : fichiers de configuration (sécurité, déploiement, . . .)

▷ ./lib : les librairies Java

▷ ./logs : fichiers de journalisation

▷ ./temp : fichiers temporaires

▷ ./webapps : les applications web gérées par Tomcat

▷ ./work : Répertoire de travail de Tomcat qui contiendra notamment les JSP


compilées

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

▷ Catalina est le conteneur de servlets utilisé par Tomcat.


Conforme aux spécifications servlet de Oracle Corporation
et les JavaServer Pages (JSP).
▷ Coyote est le connecteur HTTP de Tomcat, compatible avec
le protocole HTTP 1.1 pour le serveur web ou conteneur
d'application.
▷ Jasper est le moteur JSP d'Apache Tomcat.

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

▷ Le protocole HTTP "HyperText Transfer Protocol" est un protocole de


communication utilisé pour transférer des données sur le World Wide
Web.
▷ Il permet aux navigateurs Web (comme Chrome, Firefox, etc.) de
demander et de recevoir des ressources telles que des pages Web, des
images, des vidéos, des fichiers, etc., à partir de serveurs Web distants.

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

Vous aimerez peut-être aussi