Vous êtes sur la page 1sur 44

L’écosystème JAVA

Chapitre 1 • Java : plus que 20 ans !


• Sun Microsystems Oracle
Introduction au Java EE
• Langage orienté objet
• Java SE + Java EE + JRE (JVM)
Emna KALLEL

emna.kallel@enetcom.usf.tn

La plateforme Java SE Outils nécessaires au développement

• Plateforme de base pour écrire une application • Situés dans le répertoire bin du JDK
Java • javac.exe : compiler les programmes en
• Deux installations faites en parallèle: transformant le code Java en bytecode
1) l’installation du JDK • java.exe et javaw.exe : exécuter des
2) L’installation du JRE applications Java
• javadoc.exe : générer la documentation Java
à partir des commentaires écrits dans le
programme.

3 4
La plateforme Java EE Architecture Java EE
• JavaEE est une architecture 3-tiers :
• Java EE est basée sur le langage de développement • Tiers présentation : affichage des données
Java. • Tiers métier: gestion du métier de l’application
• Java permet de développer des applications. • Tiers donnée: persistance des données

• Ajouter un ensemble de bibliothèques qui ajoutent Présentation


Conteneur de
Métier
APIs
Données

des fonctionnalités à Java. Servlets


Base de
données
Conteneur
• Java EE permet de développer des sites web solides,
JDBC
d’EJB Relationnelle
Client
JSP EJB JCA
robustes et bien structurés Java
Système
EJB Mail
d’information
Ensemble de Servlet
Java EE Java bibliothèques Client EJB …

5 6
Serveur Web Serveur d’application

Container JEE Enterprise Java Beans (EJB)


• Container JEE : Environnement d’exécution • Code exécuté sur le serveur
– proche des données
Java permettant d’héberger des composants
– serveur souvent plus puissant que le client
applicatifs et de contrôler leur exécution. Il
• Code localisé sur le serveur
existe deux types de container : – changer le code du serveur ne change pas le code du client
– Container JEE Web : utilisés pour héberger des • Un EJB est juste une collection de classes Java et d’un
servlets ou des pages JSP fichier XML. Les classes Java suivent un certains
– Container JEE EJB : supportant l’exécution des nombre de règles et fournissent des callbacks
composants EJB comme définis dans l’environnement JEE et les
spécifications EJB.
Le protocole HTTP
Container EJB • Le protocole HTTP (Hyper Text Transfer Protocol)
est indispensable dans la réalisation d’application
• Le container EJB fournit un nombre de services Web.
additionnels
• Le principe repose sur un couple requête/réponse
– Gestion de la persistance
Requête
– Transactions Client Serveur
– Sécurité Réponse
– Portabilité Etablissement connexion
– Gestion des erreurs Requête 1

Réponse 1 Temp
Client Requête 2 Serveur

Réponse 2
Fermeture connexion TCP/IP 10

Les URI (Uniform Resource Identifier) Les URI (Uniform Resource Identifier)
• Chaîne de caractères identifiant une ressource
• Elle permet de localiser une ressource (URL)
• Nommer une ressource (URN)
• Faire les deux en même temps
• Le terme URL est utilisé dans le développement
Web pour identifier et localiser une ressource
• Structure d’une URL HTTP
"http://"+hôte+[":"+port] ["/"+ chemin ressource+["? "+paramètres]]

11 12
La requête
Requête/réponse http Parties obligatoires Partie optionnelle

Entête de requête Ligne vide Corps de requête

• Type de la requête
• Host : nom du domaine du serveur auquel on envoie la requête, le port s’il est
différent de 80
• Connection : comportement de la connexion
• Cache-control: Cette propriété indique au cache du serveur s’il doit recharger la
page à chaque reprise ou suivant un délai précis
• Upgrade-Insecure-request: Indique au client que l’on préfèrera toujours une
reconnection HTTPS si jamais celui-ci est en train de migrer entre HTTP et HTTPS
• User-agent: Il s’agit de la chaine de caractère permettant d’identifier
formellement le navigateur qui a généré la requête; on y trouve sa version son
développeur …
• Accept: Indique le type de contenu (de média) que le client est en mesure
d’accepter.

13 14

La requête (suite) Exemple


• Referer : Définit l’URL de la page à partir de laquelle la ressource est
demandée. • URL demandée : www.lemonde.fr
• Type de la requête : GET (utilisée pour charger les images et les pages HTML)
• Accept-encoding: Spécifie le type de compression du contenu que le client (le
• Host: www.lemonde.fr
navigateur) peut traiter. Le contenu est en effet souvent compresser pour • Connection: keep-alive
optimiser le temps de transfert ! • Cache-control: max-age=0
• Upgrade-insecure-requests : 1
• Cookie: On retrouve ici le cookie (une série de données) qui avait été
• User-agent : Mozilla /5.0 (Windows NT 10.0, …)
précédemment enregistré sur le navigateur de l’utilisateur et qui est renvoyé • Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
au serveur lors de chaque requêtes. • Referer: http://www.lemonde.fr/
• Accept-encoding: gzip, deflate, sdch
• If-Modified-Since: Permet au serveur de renvoyer la réponse “304 Not
• Accept-language : fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
modified” si jamais la page n’a pas été modifiée depuis la date indiquée • Cookie: _ga=GA1.2.374864853.1475228586; xtvrn=43260; _cb_ls=1
• If-Modified-Since: Fri, 30 Sep 2016 16:16:34 GMT

15 16
Les types de requêtes La réponse(Structure)
Parties obligatoires Partie optionnelle
HTTP/1.1 propose plusieurs types de requêtes.
•GET permet de demander une ressource sans la modifier ;
•POST permet de transmettre des données dans le but de Entête de réponse Ligne vide Corps de réponse
manipuler une ressource (formulaire en ligne);
•PUT permet de remplacer ou d’ajouter une ressource sur le HTTP/1.1 200 OK
serveur ; Date: Wed, 05 Oct 2016 19:44:50 GMT
Server: apache/2.4.7 (Ubuntu)
•DELETE permet de supprimer une ressource du serveur ; Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT
•HEAD permet de demander des informations sur la ressource sans Etag: "39b8-53ceaec9cf9c5-gzip"
demander la ressource elle-même ; Accept-Ranges: bytes
Vary: Accept-Encoding
•PATCH permet de modifier partiellement une ressource ; Content-Encoding: gzip
•OPTIONS permet d’obtenir les options de communication d’une Content-Lenght: 4065
ressource ou du serveur (méthodes utilisées) ; Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
•CONNECT permet d’utiliser un proxy comme un tunnel de Content-Type: text/html
communication (faire passer une connexion interdite par un pare-
feu dans un protocole HTTP presque toujours autorisé).; <!DOCTYPE html SYSTEM « about:legacy-compat">
<html lang="en">
•TRACE permet de tester et d’effectuer un diagnostic de la …
connexion et demandant au serveur de retourner la requête reçue.
17
</html> 18

La réponse(Structure) La réponse(Les codes du statut)


• L’entête de la réponse peut être découpé en 2 parties: • Chaque réponse est associée à un code de statut sur trois digits. Il permet
d’indiquer au client l’état de la réponse. Le client peut ainsi réagir en
1) Première ligne: statut de la réponse conséquence.
- version du protocole HTTP (HTTP/1.1) • Ces codes sont classés en 5 catégories.
- Le code du statut (200) Catégorie Code Description

- L’interprétation textuelle du code de statut (ok) Information 1xx La requête est reçue par le serveur, le traitement se poursuit
Succès 2xx La requête a été reçue, comprise et traitée par le serveur
2) Autres attributs de réponse : permettent au serveur de passer des informations
Redirection 3xx Des actions complémentaires sont nécessaires pour terminer la
complémentaires. requête
• Le corps de la réponse: partie utilisée par le client pour l’affichage, il peut prendre Erreur client 4xx La requête ne peut pas être traitée par le serveur

plusieurs types. Erreur serveur 5xx Le serveur est mis en échec sur le traitement d’une requête
valide

19 20
La réponse(Les codes du statut) La réponse(Les codes du statut)
Code Libelle Description
Code Libelle Description
100 Continue Continue
400 Bad Request Req incorrecte
101 Switching Protocols Changement de protocole
401 Unauthorized Le client doit s’authentifier pour accéder à la ressource
200 OK OK
403 Forbidden Le client n’a pas le droit d’accéder à la ressource
201 Created Créé
404 Not Found Ressource non trouvée
202 Accepted Acceptée
405 Method Not Allowed Type de req non autorisé
204 No Content Req traitée avec succès mais aucune info en retour
500 Internal Server Error Le serveur a rencontré une erreur inattendue
206 Partial Content Contenu partiel
501 Not Implemented Le serveur ne sait pas traiter le type de req pour la
301 Moved Permanently La ressource a changé d’adresse de façon permanente
ressource visée
302 Found La ressource a changé d’adresse temporairement 503 Service Unavailable Le serveur n’est pas capable de répondre à cause d’une
304 Not modified La ressource n’a as changé. Le client peut utiliser la surcharge temporaire ou d’une maintenance
version en cache

21 22

Les attributs de réponse La gestion du cache


• Les attributs génériques : même attributs que celles de la requête • Elément essentiel dans le développement Web
• Les attributs de réponse: entête d’une réponse. Ils ne sont pas tous obligatoires.
• Améliorer les performances en limitant le transfert de données si celles-ci
n’ont pas été modifiées.
Attribut Description • Le protocole HTTP met à disposition du client et du serveur un ensemble
Content-Encoding Définit la méthode de compression du corps de d’attributs pour dialoguer et pour savoir si une ressource en cache est
la réponse toujours d’actualité ou obsolète.
Content-Language Définit la langue utilisée dans le corps de la • Le cache peut se situer sur le poste client ou sur un intermédiaire (serveur
réponse proxy).
Location Définit l’URL de la ressource lors d’une • Exemple: Un client faisant une requête de type GET
redirection
• Si la req correspond à la première demande alors la ressource est
Server Définit les caractéristiques du serveur ayant retournée avec en en-tête de réponse des attributs indiquant les
généré la réponse
possibilité de mise en cache.
Set-Cookie Permet au serveur d’envoyer des cookies au
client.

23 24
La gestion du cache La gestion du cache
Attributs Description • Lors des requêtes suivantes vers la même ressource, le mécanisme de
Cache-Control Plusieurs valeurs peuvent êtres attribuées: cache peut entrer en action
private : la réponse ne peut pas être mise en cache par
1) S’il n’y avait pas de cache possible  la req est envoyée comme si c’était
un intermédiaire partagé par plusieurs clients
public : la réponse peut être mise en cache par
le premier appel
n’importe quel intermédiaire 2) Dans le cas où les attributs de réponse indiquaient une possible mise en
max-age : indiquer le temps en secondes durant le quel cache :
la ressource en cache est d’actualité 2.1) Le client peut utiliser l’attribut Expires ou la directive max-age (Cache-
Pragma Indiquer que la ressource ne doit pas être en cache Control) de la ressource mise en cache s’ils sont renseignés. Si la
Etag Associer un id à la ressource qui change à chaque fois où ressource est toujours d’actualité  aucune requête n’est effectuée.
la ressource change. 2.2) Le client peut utiliser la valeur des attributs Etag et Last-Modified
Expires Définir une date de fin de validité de la ressource mise pour interroger le serveur pour voir s’il a une ressource plus récente.
en cache
Last-Modified Définir la date de dernière modification de la ressource

25 26

La gestion du cache
 La requête est enrichie par les attributs suivants

Attribut Description

Cet attribut prend la valeur d’Etag associé à la réponse qu’il a


If-None-Match
éventuellement déjà eu pour la même req

Cet attribut prend la valeur de Last-Modified associé à la réponse


If-Modified-Since
qu’il a éventuellement déjà eu pour la même req

27 28
Gestion de l’authentification Gestion de l’authentification
• Lorsque une ressource est protégée et nécessite une authentification
auprès du serveur pour pouvoir y accéder, un couple d’attributs est Remarque
utilisé.
• Lorsque vous transmettez des données sensibles sur vos sites
• L’attribut WWW.Authenticate demandant au client de s’authentifier
(Login/Pwd) favoris et que ces derniers n’utilisent pas HTTPS (la version
• Login/Pwd envoyés via Authorization au travers d’une nouvelle req sécurisée du protocole HTTP) cela représente un réel danger,
visant la même ressource.
• Si la req doit passer par un proxy pour accéder à la ressource  le car toute requête peut être interceptée ! et dans une requête
proxy demande au client de s’authentifier (selon sa configuration)  POST de transmission de formulaire vos données sont lisibles!
Proxy-Authenticate et Proxy-Authorization

29 30

Les types de médias Les types de médias


Types de médias Description
• MIME (Multipurpose Internet Mail Extensions) : définir le type de text/plain Contenu textuel brut
contenu dans le corps de la requête et de la réponse. text/html Contenu HTML
• Attribut Content-Type text/xml Contenu XML
• Les navigateurs, dans leurs version actuelles, sont capables text/csv Contenu CSV
d’interpréter le contenu d’une réponse sans passer par Content- text/css Contenu CSS
Type. image/jpeg Image au format JPEG
• Accept permet au client d’indiquer au serveur quel type de contenu image/png Image au format PNG
il accepte pour la réponse. image/svg+xml Contenu SVG permettant de faire du dessin vectoriel
• Un type de média est composé d’un type et un sous-type video/mpeg Vidéo au format MPEG
{type} / {sous-type} video/mp4 Vidéo au format MP4
• 6 types : text, image, video, application, audio et multipart application/javascript Contenu JavaScript
application/octet-stream Contenu binaire non typé
application/pdf Contenu au format PDF
application/json Contant au format JSON (JavaScript Object Notation)
31 application/xml Contenu au format XML 32
Rappel
• Communication client serveur ?
Chapitre 2
• Côté client : navigateur
Le modèle MVC • Côté serveur : serveur HTTP
• L’écoute des informations arrivées sur le port
Emna KALLEL utilisé par le protocole HTTP, le port 80 et
scruter chaque requête entrante.
• Appache HTTP Server et IIS (Microsoft)
emna.kallel@enetcom.usf.tn

34

Serveur d’applications Rôles d’un serveur d’applications


• Une fois une requête HTTP est lue et analysée, il faut traiter son • Récupérer les requêtes HTTP issues des clients
contenu et renvoyer une réponse au client en conséquence • Les mettre dans des objets où le code sera capable de manipuler.
 code qui indique le traitement à faire suite à l’arrivée d’une req. • Faire passer ces objets dans l’application en question.
• Composant qui se charge d’exécuter le code + faire le travail • Renvoyer des réponses HTTP aux clients en se basant sur le objets
d’un serveur HTTP  Serveur d’applications retournés par le code.
• Serveur d’applications = serveur HTTP + gestion d’objets de • Solutions propriétaires et payantes : WebLogic (Oracle) et
diverses natures  Conteneur WebSphere (IBM)
Client Serveur d’applications • Solutions libres et gratuites : Apache Tomcat, Jboss, Jonas et
Requête HTTP
Conteneur GlassFish
Serveur
Réponse HTTP HTTP
Le serveur HTTP reçoit la requête HTTP
qui sera lue, découpée, analysée
Le conteneur permet d’exécuter
35 36
et envoyée ensuite au conteneur
le code Java EE
Modèle de conception pour JEE MVC
• Il découpe littéralement l’application en couches distinctes et
• Java Enterprise Edition n’impose aucun arrangement du code
de ce fait impacte très fortement l’organisation du code.
• Travailler à plusieurs contributeurs sur un même projet/application • Le traitement, le stockage et la mise à jour des données de
l’application doit être contenu dans la couche nommée
(travail en équipe)
Modèle (M du MVC).
• Difficulté de maintenir et corriger une application créée par d’autre • L’interaction avec l’utilisateur et la présentation des données
(mise en forme, affichage) doit être contenu dans la couche
programmeur/équipe
nommée Vue (V du MVC).
• Faire évoluer une application créée par d’autre programmeur/équipe • Le contrôle des actions de l’utilisateur et des données doit
être contenu dans la couche nommée Contrôle (C du MVC).
 Adopter une architecture +/- standard dans laquelle tout
développeur peut se situer  Modèle MVC (Modèle-Vue-Contrôleur)

37 38

MVC MVC … en pratique


Clients Serveur d’applications
• Couche Modèle = représentation des données
Requête HTTP
Contrôleur • Quel est le type de stockage dont a besoin votre application?
• Quelle est l’envergure de votre application?
Réponse HTTP
• Disposez-vous d’un budget?
• La quantité de données produites par votre application va-t-elle
Vue Modèle
être amenée à fortement évoluer?
•Le client émet une requête
•Le contrôleur intercepte la requête de l’utilisateur • …
•Le contrôleur détermine quelle partie du modèle est concernée et quelle vue y est
associée  Utilisation des frameworks: Il existe plusieurs Framework Java EE
•Le modèle traite les interactions avec les données, applique les règles métier et
renvoie les données au contrôleur
pour pouvoir développer avec MVC
•Le contrôleur sélectionne la vue et lui renseigne les données
•La vue présente les données à l’utilisateur 39 40
Framework MVC avec JEE
• Modèle: Traitements + Données
Objets Java = Attributs + méthodes + système de stockage de données.
• Un ensemble de composants qui servent à créer l’architecture
Complexité du code  complexité des traitements à faire dans l’application
et les grandes lignes d’une application. • Vue : pages JSP
Exécutée côté serveur
• Boîte à outils géante conçue par des développeurs et mise à
Pages en langage client : TML, XML, CSS, Javascript, etc
disposition d’autres développeurs. permet au concepteur de la page d’appeler des portions de code java au
travers des balises et expressions ressemblant aux balises HTML
• Pas un concept propre pour JEE ni au développement web en
• Contrôleur : des servlets
particulier. Objet qui permet d’intercepter les requêtes faites par un client
Méthodes permettant d’examiner les req HTTP
• JSF, Spring, Struts, Hibernate
analyser une req issue du client + appelle les traitements effectués par le
Modèle et ordonne en retour à la Vue le résultat au client.

41 42

MVC avec Java EE

Serveur
Clients

Requête HTTP
Contrôleur
(Servlets)

Réponse HTTP
Vue Modèle
(pages JSP) (objets Java)

43
L’écosystème JAVA
Chapitre 1 • Java : plus que 20 ans !
• Sun Microsystems Oracle
Introduction au Java EE
• Langage orienté objet
• Java SE + Java EE + JRE (JVM)
Emna KALLEL

emna.kallel@enetcom.usf.tn

La plateforme Java SE Outils nécessaires au développement

• Plateforme de base pour écrire une application • Situés dans le répertoire bin du JDK
Java • javac.exe : compiler les programmes en
• Deux installations faites en parallèle: transformant le code Java en bytecode
1) l’installation du JDK • java.exe et javaw.exe : exécuter des
2) L’installation du JRE applications Java
• javadoc.exe : générer la documentation Java
à partir des commentaires écrits dans le
programme.

3 4
La plateforme Java EE Architecture Java EE
• JavaEE est une architecture 3-tiers :
• Java EE est basée sur le langage de développement • Tiers présentation : affichage des données
Java. • Tiers métier: gestion du métier de l’application
• Java permet de développer des applications. • Tiers donnée: persistance des données

• Ajouter un ensemble de bibliothèques qui ajoutent Présentation


Conteneur de
Métier
APIs
Données

des fonctionnalités à Java. Servlets


Base de
données
Conteneur
• Java EE permet de développer des sites web solides,
JDBC
d’EJB Relationnelle
Client
JSP EJB JCA
robustes et bien structurés Java
Système
EJB Mail
d’information
Ensemble de Servlet
Java EE Java bibliothèques Client EJB …

5 6
Serveur Web Serveur d’application

Container JEE Enterprise Java Beans (EJB)


• Container JEE : Environnement d’exécution • Code exécuté sur le serveur
– proche des données
Java permettant d’héberger des composants
– serveur souvent plus puissant que le client
applicatifs et de contrôler leur exécution. Il
• Code localisé sur le serveur
existe deux types de container : – changer le code du serveur ne change pas le code du client
– Container JEE Web : utilisés pour héberger des • Un EJB est juste une collection de classes Java et d’un
servlets ou des pages JSP fichier XML. Les classes Java suivent un certains
– Container JEE EJB : supportant l’exécution des nombre de règles et fournissent des callbacks
composants EJB comme définis dans l’environnement JEE et les
spécifications EJB.
Le protocole HTTP
Container EJB • Le protocole HTTP (Hyper Text Transfer Protocol)
est indispensable dans la réalisation d’application
• Le container EJB fournit un nombre de services Web.
additionnels
• Le principe repose sur un couple requête/réponse
– Gestion de la persistance
Requête
– Transactions Client Serveur
– Sécurité Réponse
– Portabilité Etablissement connexion
– Gestion des erreurs Requête 1

Réponse 1 Temp
Client Requête 2 Serveur

Réponse 2
Fermeture connexion TCP/IP 10

Les URI (Uniform Resource Identifier) Les URI (Uniform Resource Identifier)
• Chaîne de caractères identifiant une ressource
• Elle permet de localiser une ressource (URL)
• Nommer une ressource (URN)
• Faire les deux en même temps
• Le terme URL est utilisé dans le développement
Web pour identifier et localiser une ressource
• Structure d’une URL HTTP
"http://"+hôte+[":"+port] ["/"+ chemin ressource+["? "+paramètres]]

11 12
La requête
Requête/réponse http Parties obligatoires Partie optionnelle

Entête de requête Ligne vide Corps de requête

• Type de la requête
• Host : nom du domaine du serveur auquel on envoie la requête, le port s’il est
différent de 80
• Connection : comportement de la connexion
• Cache-control: Cette propriété indique au cache du serveur s’il doit recharger la
page à chaque reprise ou suivant un délai précis
• Upgrade-Insecure-request: Indique au client que l’on préfèrera toujours une
reconnection HTTPS si jamais celui-ci est en train de migrer entre HTTP et HTTPS
• User-agent: Il s’agit de la chaine de caractère permettant d’identifier
formellement le navigateur qui a généré la requête; on y trouve sa version son
développeur …
• Accept: Indique le type de contenu (de média) que le client est en mesure
d’accepter.

13 14

La requête (suite) Exemple


• Referer : Définit l’URL de la page à partir de laquelle la ressource est
demandée. • URL demandée : www.lemonde.fr
• Type de la requête : GET (utilisée pour charger les images et les pages HTML)
• Accept-encoding: Spécifie le type de compression du contenu que le client (le
• Host: www.lemonde.fr
navigateur) peut traiter. Le contenu est en effet souvent compresser pour • Connection: keep-alive
optimiser le temps de transfert ! • Cache-control: max-age=0
• Upgrade-insecure-requests : 1
• Cookie: On retrouve ici le cookie (une série de données) qui avait été
• User-agent : Mozilla /5.0 (Windows NT 10.0, …)
précédemment enregistré sur le navigateur de l’utilisateur et qui est renvoyé • Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
au serveur lors de chaque requêtes. • Referer: http://www.lemonde.fr/
• Accept-encoding: gzip, deflate, sdch
• If-Modified-Since: Permet au serveur de renvoyer la réponse “304 Not
• Accept-language : fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
modified” si jamais la page n’a pas été modifiée depuis la date indiquée • Cookie: _ga=GA1.2.374864853.1475228586; xtvrn=43260; _cb_ls=1
• If-Modified-Since: Fri, 30 Sep 2016 16:16:34 GMT

15 16
Les types de requêtes La réponse(Structure)
Parties obligatoires Partie optionnelle
HTTP/1.1 propose plusieurs types de requêtes.
•GET permet de demander une ressource sans la modifier ;
•POST permet de transmettre des données dans le but de Entête de réponse Ligne vide Corps de réponse
manipuler une ressource (formulaire en ligne);
•PUT permet de remplacer ou d’ajouter une ressource sur le HTTP/1.1 200 OK
serveur ; Date: Wed, 05 Oct 2016 19:44:50 GMT
Server: apache/2.4.7 (Ubuntu)
•DELETE permet de supprimer une ressource du serveur ; Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT
•HEAD permet de demander des informations sur la ressource sans Etag: "39b8-53ceaec9cf9c5-gzip"
demander la ressource elle-même ; Accept-Ranges: bytes
Vary: Accept-Encoding
•PATCH permet de modifier partiellement une ressource ; Content-Encoding: gzip
•OPTIONS permet d’obtenir les options de communication d’une Content-Lenght: 4065
ressource ou du serveur (méthodes utilisées) ; Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
•CONNECT permet d’utiliser un proxy comme un tunnel de Content-Type: text/html
communication (faire passer une connexion interdite par un pare-
feu dans un protocole HTTP presque toujours autorisé).; <!DOCTYPE html SYSTEM « about:legacy-compat">
<html lang="en">
•TRACE permet de tester et d’effectuer un diagnostic de la …
connexion et demandant au serveur de retourner la requête reçue.
17
</html> 18

La réponse(Structure) La réponse(Les codes du statut)


• L’entête de la réponse peut être découpé en 2 parties: • Chaque réponse est associée à un code de statut sur trois digits. Il permet
d’indiquer au client l’état de la réponse. Le client peut ainsi réagir en
1) Première ligne: statut de la réponse conséquence.
- version du protocole HTTP (HTTP/1.1) • Ces codes sont classés en 5 catégories.
- Le code du statut (200) Catégorie Code Description

- L’interprétation textuelle du code de statut (ok) Information 1xx La requête est reçue par le serveur, le traitement se poursuit
Succès 2xx La requête a été reçue, comprise et traitée par le serveur
2) Autres attributs de réponse : permettent au serveur de passer des informations
Redirection 3xx Des actions complémentaires sont nécessaires pour terminer la
complémentaires. requête
• Le corps de la réponse: partie utilisée par le client pour l’affichage, il peut prendre Erreur client 4xx La requête ne peut pas être traitée par le serveur

plusieurs types. Erreur serveur 5xx Le serveur est mis en échec sur le traitement d’une requête
valide

19 20
La réponse(Les codes du statut) La réponse(Les codes du statut)
Code Libelle Description
Code Libelle Description
100 Continue Continue
400 Bad Request Req incorrecte
101 Switching Protocols Changement de protocole
401 Unauthorized Le client doit s’authentifier pour accéder à la ressource
200 OK OK
403 Forbidden Le client n’a pas le droit d’accéder à la ressource
201 Created Créé
404 Not Found Ressource non trouvée
202 Accepted Acceptée
405 Method Not Allowed Type de req non autorisé
204 No Content Req traitée avec succès mais aucune info en retour
500 Internal Server Error Le serveur a rencontré une erreur inattendue
206 Partial Content Contenu partiel
501 Not Implemented Le serveur ne sait pas traiter le type de req pour la
301 Moved Permanently La ressource a changé d’adresse de façon permanente
ressource visée
302 Found La ressource a changé d’adresse temporairement 503 Service Unavailable Le serveur n’est pas capable de répondre à cause d’une
304 Not modified La ressource n’a as changé. Le client peut utiliser la surcharge temporaire ou d’une maintenance
version en cache

21 22

Les attributs de réponse La gestion du cache


• Les attributs génériques : même attributs que celles de la requête • Elément essentiel dans le développement Web
• Les attributs de réponse: entête d’une réponse. Ils ne sont pas tous obligatoires.
• Améliorer les performances en limitant le transfert de données si celles-ci
n’ont pas été modifiées.
Attribut Description • Le protocole HTTP met à disposition du client et du serveur un ensemble
Content-Encoding Définit la méthode de compression du corps de d’attributs pour dialoguer et pour savoir si une ressource en cache est
la réponse toujours d’actualité ou obsolète.
Content-Language Définit la langue utilisée dans le corps de la • Le cache peut se situer sur le poste client ou sur un intermédiaire (serveur
réponse proxy).
Location Définit l’URL de la ressource lors d’une • Exemple: Un client faisant une requête de type GET
redirection
• Si la req correspond à la première demande alors la ressource est
Server Définit les caractéristiques du serveur ayant retournée avec en en-tête de réponse des attributs indiquant les
généré la réponse
possibilité de mise en cache.
Set-Cookie Permet au serveur d’envoyer des cookies au
client.

23 24
La gestion du cache La gestion du cache
Attributs Description • Lors des requêtes suivantes vers la même ressource, le mécanisme de
Cache-Control Plusieurs valeurs peuvent êtres attribuées: cache peut entrer en action
private : la réponse ne peut pas être mise en cache par
1) S’il n’y avait pas de cache possible  la req est envoyée comme si c’était
un intermédiaire partagé par plusieurs clients
public : la réponse peut être mise en cache par
le premier appel
n’importe quel intermédiaire 2) Dans le cas où les attributs de réponse indiquaient une possible mise en
max-age : indiquer le temps en secondes durant le quel cache :
la ressource en cache est d’actualité 2.1) Le client peut utiliser l’attribut Expires ou la directive max-age (Cache-
Pragma Indiquer que la ressource ne doit pas être en cache Control) de la ressource mise en cache s’ils sont renseignés. Si la
Etag Associer un id à la ressource qui change à chaque fois où ressource est toujours d’actualité  aucune requête n’est effectuée.
la ressource change. 2.2) Le client peut utiliser la valeur des attributs Etag et Last-Modified
Expires Définir une date de fin de validité de la ressource mise pour interroger le serveur pour voir s’il a une ressource plus récente.
en cache
Last-Modified Définir la date de dernière modification de la ressource

25 26

La gestion du cache
 La requête est enrichie par les attributs suivants

Attribut Description

Cet attribut prend la valeur d’Etag associé à la réponse qu’il a


If-None-Match
éventuellement déjà eu pour la même req

Cet attribut prend la valeur de Last-Modified associé à la réponse


If-Modified-Since
qu’il a éventuellement déjà eu pour la même req

27 28
Gestion de l’authentification Gestion de l’authentification
• Lorsque une ressource est protégée et nécessite une authentification
auprès du serveur pour pouvoir y accéder, un couple d’attributs est Remarque
utilisé.
• Lorsque vous transmettez des données sensibles sur vos sites
• L’attribut WWW.Authenticate demandant au client de s’authentifier
(Login/Pwd) favoris et que ces derniers n’utilisent pas HTTPS (la version
• Login/Pwd envoyés via Authorization au travers d’une nouvelle req sécurisée du protocole HTTP) cela représente un réel danger,
visant la même ressource.
• Si la req doit passer par un proxy pour accéder à la ressource  le car toute requête peut être interceptée ! et dans une requête
proxy demande au client de s’authentifier (selon sa configuration)  POST de transmission de formulaire vos données sont lisibles!
Proxy-Authenticate et Proxy-Authorization

29 30

Les types de médias Les types de médias


Types de médias Description
• MIME (Multipurpose Internet Mail Extensions) : définir le type de text/plain Contenu textuel brut
contenu dans le corps de la requête et de la réponse. text/html Contenu HTML
• Attribut Content-Type text/xml Contenu XML
• Les navigateurs, dans leurs version actuelles, sont capables text/csv Contenu CSV
d’interpréter le contenu d’une réponse sans passer par Content- text/css Contenu CSS
Type. image/jpeg Image au format JPEG
• Accept permet au client d’indiquer au serveur quel type de contenu image/png Image au format PNG
il accepte pour la réponse. image/svg+xml Contenu SVG permettant de faire du dessin vectoriel
• Un type de média est composé d’un type et un sous-type video/mpeg Vidéo au format MPEG
{type} / {sous-type} video/mp4 Vidéo au format MP4
• 6 types : text, image, video, application, audio et multipart application/javascript Contenu JavaScript
application/octet-stream Contenu binaire non typé
application/pdf Contenu au format PDF
application/json Contant au format JSON (JavaScript Object Notation)
31 application/xml Contenu au format XML 32
Rappel
• Communication client serveur ?
Chapitre 2
• Côté client : navigateur
Le modèle MVC • Côté serveur : serveur HTTP
• L’écoute des informations arrivées sur le port
Emna KALLEL utilisé par le protocole HTTP, le port 80 et
scruter chaque requête entrante.
• Appache HTTP Server et IIS (Microsoft)
emna.kallel@enetcom.usf.tn

34

Serveur d’applications Rôles d’un serveur d’applications


• Une fois une requête HTTP est lue et analysée, il faut traiter son • Récupérer les requêtes HTTP issues des clients
contenu et renvoyer une réponse au client en conséquence • Les mettre dans des objets où le code sera capable de manipuler.
 code qui indique le traitement à faire suite à l’arrivée d’une req. • Faire passer ces objets dans l’application en question.
• Composant qui se charge d’exécuter le code + faire le travail • Renvoyer des réponses HTTP aux clients en se basant sur le objets
d’un serveur HTTP  Serveur d’applications retournés par le code.
• Serveur d’applications = serveur HTTP + gestion d’objets de • Solutions propriétaires et payantes : WebLogic (Oracle) et
diverses natures  Conteneur WebSphere (IBM)
Client Serveur d’applications • Solutions libres et gratuites : Apache Tomcat, Jboss, Jonas et
Requête HTTP
Conteneur GlassFish
Serveur
Réponse HTTP HTTP
Le serveur HTTP reçoit la requête HTTP
qui sera lue, découpée, analysée
Le conteneur permet d’exécuter
35 36
et envoyée ensuite au conteneur
le code Java EE
Modèle de conception pour JEE MVC
• Il découpe littéralement l’application en couches distinctes et
• Java Enterprise Edition n’impose aucun arrangement du code
de ce fait impacte très fortement l’organisation du code.
• Travailler à plusieurs contributeurs sur un même projet/application • Le traitement, le stockage et la mise à jour des données de
l’application doit être contenu dans la couche nommée
(travail en équipe)
Modèle (M du MVC).
• Difficulté de maintenir et corriger une application créée par d’autre • L’interaction avec l’utilisateur et la présentation des données
(mise en forme, affichage) doit être contenu dans la couche
programmeur/équipe
nommée Vue (V du MVC).
• Faire évoluer une application créée par d’autre programmeur/équipe • Le contrôle des actions de l’utilisateur et des données doit
être contenu dans la couche nommée Contrôle (C du MVC).
 Adopter une architecture +/- standard dans laquelle tout
développeur peut se situer  Modèle MVC (Modèle-Vue-Contrôleur)

37 38

MVC MVC … en pratique


Clients Serveur d’applications
• Couche Modèle = représentation des données
Requête HTTP
Contrôleur • Quel est le type de stockage dont a besoin votre application?
• Quelle est l’envergure de votre application?
Réponse HTTP
• Disposez-vous d’un budget?
• La quantité de données produites par votre application va-t-elle
Vue Modèle
être amenée à fortement évoluer?
•Le client émet une requête
•Le contrôleur intercepte la requête de l’utilisateur • …
•Le contrôleur détermine quelle partie du modèle est concernée et quelle vue y est
associée  Utilisation des frameworks: Il existe plusieurs Framework Java EE
•Le modèle traite les interactions avec les données, applique les règles métier et
renvoie les données au contrôleur
pour pouvoir développer avec MVC
•Le contrôleur sélectionne la vue et lui renseigne les données
•La vue présente les données à l’utilisateur 39 40
Framework MVC avec JEE
• Modèle: Traitements + Données
Objets Java = Attributs + méthodes + système de stockage de données.
• Un ensemble de composants qui servent à créer l’architecture
Complexité du code  complexité des traitements à faire dans l’application
et les grandes lignes d’une application. • Vue : pages JSP
Exécutée côté serveur
• Boîte à outils géante conçue par des développeurs et mise à
Pages en langage client : TML, XML, CSS, Javascript, etc
disposition d’autres développeurs. permet au concepteur de la page d’appeler des portions de code java au
travers des balises et expressions ressemblant aux balises HTML
• Pas un concept propre pour JEE ni au développement web en
• Contrôleur : des servlets
particulier. Objet qui permet d’intercepter les requêtes faites par un client
Méthodes permettant d’examiner les req HTTP
• JSF, Spring, Struts, Hibernate
analyser une req issue du client + appelle les traitements effectués par le
Modèle et ordonne en retour à la Vue le résultat au client.

41 42

MVC avec Java EE

Serveur
Clients

Requête HTTP
Contrôleur
(Servlets)

Réponse HTTP
Vue Modèle
(pages JSP) (objets Java)

43
L’écosystème JAVA
Chapitre 1 • Java : plus que 20 ans !
• Sun Microsystems Oracle
Introduction au Java EE
• Langage orienté objet
• Java SE + Java EE + JRE (JVM)
Emna KALLEL

emna.kallel@enetcom.usf.tn

La plateforme Java SE Outils nécessaires au développement

• Plateforme de base pour écrire une application • Situés dans le répertoire bin du JDK
Java • javac.exe : compiler les programmes en
• Deux installations faites en parallèle: transformant le code Java en bytecode
1) l’installation du JDK • java.exe et javaw.exe : exécuter des
2) L’installation du JRE applications Java
• javadoc.exe : générer la documentation Java
à partir des commentaires écrits dans le
programme.

3 4
La plateforme Java EE Architecture Java EE
• JavaEE est une architecture 3-tiers :
• Java EE est basée sur le langage de développement • Tiers présentation : affichage des données
Java. • Tiers métier: gestion du métier de l’application
• Java permet de développer des applications. • Tiers donnée: persistance des données

• Ajouter un ensemble de bibliothèques qui ajoutent Présentation


Conteneur de
Métier
APIs
Données

des fonctionnalités à Java. Servlets


Base de
données
Conteneur
• Java EE permet de développer des sites web solides,
JDBC
d’EJB Relationnelle
Client
JSP EJB JCA
robustes et bien structurés Java
Système
EJB Mail
d’information
Ensemble de Servlet
Java EE Java bibliothèques Client EJB …

5 6
Serveur Web Serveur d’application

Container JEE Enterprise Java Beans (EJB)


• Container JEE : Environnement d’exécution • Code exécuté sur le serveur
– proche des données
Java permettant d’héberger des composants
– serveur souvent plus puissant que le client
applicatifs et de contrôler leur exécution. Il
• Code localisé sur le serveur
existe deux types de container : – changer le code du serveur ne change pas le code du client
– Container JEE Web : utilisés pour héberger des • Un EJB est juste une collection de classes Java et d’un
servlets ou des pages JSP fichier XML. Les classes Java suivent un certains
– Container JEE EJB : supportant l’exécution des nombre de règles et fournissent des callbacks
composants EJB comme définis dans l’environnement JEE et les
spécifications EJB.
Le protocole HTTP
Container EJB • Le protocole HTTP (Hyper Text Transfer Protocol)
est indispensable dans la réalisation d’application
• Le container EJB fournit un nombre de services Web.
additionnels
• Le principe repose sur un couple requête/réponse
– Gestion de la persistance
Requête
– Transactions Client Serveur
– Sécurité Réponse
– Portabilité Etablissement connexion
– Gestion des erreurs Requête 1

Réponse 1 Temp
Client Requête 2 Serveur

Réponse 2
Fermeture connexion TCP/IP 10

Les URI (Uniform Resource Identifier) Les URI (Uniform Resource Identifier)
• Chaîne de caractères identifiant une ressource
• Elle permet de localiser une ressource (URL)
• Nommer une ressource (URN)
• Faire les deux en même temps
• Le terme URL est utilisé dans le développement
Web pour identifier et localiser une ressource
• Structure d’une URL HTTP
"http://"+hôte+[":"+port] ["/"+ chemin ressource+["? "+paramètres]]

11 12
La requête
Requête/réponse http Parties obligatoires Partie optionnelle

Entête de requête Ligne vide Corps de requête

• Type de la requête
• Host : nom du domaine du serveur auquel on envoie la requête, le port s’il est
différent de 80
• Connection : comportement de la connexion
• Cache-control: Cette propriété indique au cache du serveur s’il doit recharger la
page à chaque reprise ou suivant un délai précis
• Upgrade-Insecure-request: Indique au client que l’on préfèrera toujours une
reconnection HTTPS si jamais celui-ci est en train de migrer entre HTTP et HTTPS
• User-agent: Il s’agit de la chaine de caractère permettant d’identifier
formellement le navigateur qui a généré la requête; on y trouve sa version son
développeur …
• Accept: Indique le type de contenu (de média) que le client est en mesure
d’accepter.

13 14

La requête (suite) Exemple


• Referer : Définit l’URL de la page à partir de laquelle la ressource est
demandée. • URL demandée : www.lemonde.fr
• Type de la requête : GET (utilisée pour charger les images et les pages HTML)
• Accept-encoding: Spécifie le type de compression du contenu que le client (le
• Host: www.lemonde.fr
navigateur) peut traiter. Le contenu est en effet souvent compresser pour • Connection: keep-alive
optimiser le temps de transfert ! • Cache-control: max-age=0
• Upgrade-insecure-requests : 1
• Cookie: On retrouve ici le cookie (une série de données) qui avait été
• User-agent : Mozilla /5.0 (Windows NT 10.0, …)
précédemment enregistré sur le navigateur de l’utilisateur et qui est renvoyé • Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
au serveur lors de chaque requêtes. • Referer: http://www.lemonde.fr/
• Accept-encoding: gzip, deflate, sdch
• If-Modified-Since: Permet au serveur de renvoyer la réponse “304 Not
• Accept-language : fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
modified” si jamais la page n’a pas été modifiée depuis la date indiquée • Cookie: _ga=GA1.2.374864853.1475228586; xtvrn=43260; _cb_ls=1
• If-Modified-Since: Fri, 30 Sep 2016 16:16:34 GMT

15 16
Les types de requêtes La réponse(Structure)
Parties obligatoires Partie optionnelle
HTTP/1.1 propose plusieurs types de requêtes.
•GET permet de demander une ressource sans la modifier ;
•POST permet de transmettre des données dans le but de Entête de réponse Ligne vide Corps de réponse
manipuler une ressource (formulaire en ligne);
•PUT permet de remplacer ou d’ajouter une ressource sur le HTTP/1.1 200 OK
serveur ; Date: Wed, 05 Oct 2016 19:44:50 GMT
Server: apache/2.4.7 (Ubuntu)
•DELETE permet de supprimer une ressource du serveur ; Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT
•HEAD permet de demander des informations sur la ressource sans Etag: "39b8-53ceaec9cf9c5-gzip"
demander la ressource elle-même ; Accept-Ranges: bytes
Vary: Accept-Encoding
•PATCH permet de modifier partiellement une ressource ; Content-Encoding: gzip
•OPTIONS permet d’obtenir les options de communication d’une Content-Lenght: 4065
ressource ou du serveur (méthodes utilisées) ; Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
•CONNECT permet d’utiliser un proxy comme un tunnel de Content-Type: text/html
communication (faire passer une connexion interdite par un pare-
feu dans un protocole HTTP presque toujours autorisé).; <!DOCTYPE html SYSTEM « about:legacy-compat">
<html lang="en">
•TRACE permet de tester et d’effectuer un diagnostic de la …
connexion et demandant au serveur de retourner la requête reçue.
17
</html> 18

La réponse(Structure) La réponse(Les codes du statut)


• L’entête de la réponse peut être découpé en 2 parties: • Chaque réponse est associée à un code de statut sur trois digits. Il permet
d’indiquer au client l’état de la réponse. Le client peut ainsi réagir en
1) Première ligne: statut de la réponse conséquence.
- version du protocole HTTP (HTTP/1.1) • Ces codes sont classés en 5 catégories.
- Le code du statut (200) Catégorie Code Description

- L’interprétation textuelle du code de statut (ok) Information 1xx La requête est reçue par le serveur, le traitement se poursuit
Succès 2xx La requête a été reçue, comprise et traitée par le serveur
2) Autres attributs de réponse : permettent au serveur de passer des informations
Redirection 3xx Des actions complémentaires sont nécessaires pour terminer la
complémentaires. requête
• Le corps de la réponse: partie utilisée par le client pour l’affichage, il peut prendre Erreur client 4xx La requête ne peut pas être traitée par le serveur

plusieurs types. Erreur serveur 5xx Le serveur est mis en échec sur le traitement d’une requête
valide

19 20
La réponse(Les codes du statut) La réponse(Les codes du statut)
Code Libelle Description
Code Libelle Description
100 Continue Continue
400 Bad Request Req incorrecte
101 Switching Protocols Changement de protocole
401 Unauthorized Le client doit s’authentifier pour accéder à la ressource
200 OK OK
403 Forbidden Le client n’a pas le droit d’accéder à la ressource
201 Created Créé
404 Not Found Ressource non trouvée
202 Accepted Acceptée
405 Method Not Allowed Type de req non autorisé
204 No Content Req traitée avec succès mais aucune info en retour
500 Internal Server Error Le serveur a rencontré une erreur inattendue
206 Partial Content Contenu partiel
501 Not Implemented Le serveur ne sait pas traiter le type de req pour la
301 Moved Permanently La ressource a changé d’adresse de façon permanente
ressource visée
302 Found La ressource a changé d’adresse temporairement 503 Service Unavailable Le serveur n’est pas capable de répondre à cause d’une
304 Not modified La ressource n’a as changé. Le client peut utiliser la surcharge temporaire ou d’une maintenance
version en cache

21 22

Les attributs de réponse La gestion du cache


• Les attributs génériques : même attributs que celles de la requête • Elément essentiel dans le développement Web
• Les attributs de réponse: entête d’une réponse. Ils ne sont pas tous obligatoires.
• Améliorer les performances en limitant le transfert de données si celles-ci
n’ont pas été modifiées.
Attribut Description • Le protocole HTTP met à disposition du client et du serveur un ensemble
Content-Encoding Définit la méthode de compression du corps de d’attributs pour dialoguer et pour savoir si une ressource en cache est
la réponse toujours d’actualité ou obsolète.
Content-Language Définit la langue utilisée dans le corps de la • Le cache peut se situer sur le poste client ou sur un intermédiaire (serveur
réponse proxy).
Location Définit l’URL de la ressource lors d’une • Exemple: Un client faisant une requête de type GET
redirection
• Si la req correspond à la première demande alors la ressource est
Server Définit les caractéristiques du serveur ayant retournée avec en en-tête de réponse des attributs indiquant les
généré la réponse
possibilité de mise en cache.
Set-Cookie Permet au serveur d’envoyer des cookies au
client.

23 24
La gestion du cache La gestion du cache
Attributs Description • Lors des requêtes suivantes vers la même ressource, le mécanisme de
Cache-Control Plusieurs valeurs peuvent êtres attribuées: cache peut entrer en action
private : la réponse ne peut pas être mise en cache par
1) S’il n’y avait pas de cache possible  la req est envoyée comme si c’était
un intermédiaire partagé par plusieurs clients
public : la réponse peut être mise en cache par
le premier appel
n’importe quel intermédiaire 2) Dans le cas où les attributs de réponse indiquaient une possible mise en
max-age : indiquer le temps en secondes durant le quel cache :
la ressource en cache est d’actualité 2.1) Le client peut utiliser l’attribut Expires ou la directive max-age (Cache-
Pragma Indiquer que la ressource ne doit pas être en cache Control) de la ressource mise en cache s’ils sont renseignés. Si la
Etag Associer un id à la ressource qui change à chaque fois où ressource est toujours d’actualité  aucune requête n’est effectuée.
la ressource change. 2.2) Le client peut utiliser la valeur des attributs Etag et Last-Modified
Expires Définir une date de fin de validité de la ressource mise pour interroger le serveur pour voir s’il a une ressource plus récente.
en cache
Last-Modified Définir la date de dernière modification de la ressource

25 26

La gestion du cache
 La requête est enrichie par les attributs suivants

Attribut Description

Cet attribut prend la valeur d’Etag associé à la réponse qu’il a


If-None-Match
éventuellement déjà eu pour la même req

Cet attribut prend la valeur de Last-Modified associé à la réponse


If-Modified-Since
qu’il a éventuellement déjà eu pour la même req

27 28
Gestion de l’authentification Gestion de l’authentification
• Lorsque une ressource est protégée et nécessite une authentification
auprès du serveur pour pouvoir y accéder, un couple d’attributs est Remarque
utilisé.
• Lorsque vous transmettez des données sensibles sur vos sites
• L’attribut WWW.Authenticate demandant au client de s’authentifier
(Login/Pwd) favoris et que ces derniers n’utilisent pas HTTPS (la version
• Login/Pwd envoyés via Authorization au travers d’une nouvelle req sécurisée du protocole HTTP) cela représente un réel danger,
visant la même ressource.
• Si la req doit passer par un proxy pour accéder à la ressource  le car toute requête peut être interceptée ! et dans une requête
proxy demande au client de s’authentifier (selon sa configuration)  POST de transmission de formulaire vos données sont lisibles!
Proxy-Authenticate et Proxy-Authorization

29 30

Les types de médias Les types de médias


Types de médias Description
• MIME (Multipurpose Internet Mail Extensions) : définir le type de text/plain Contenu textuel brut
contenu dans le corps de la requête et de la réponse. text/html Contenu HTML
• Attribut Content-Type text/xml Contenu XML
• Les navigateurs, dans leurs version actuelles, sont capables text/csv Contenu CSV
d’interpréter le contenu d’une réponse sans passer par Content- text/css Contenu CSS
Type. image/jpeg Image au format JPEG
• Accept permet au client d’indiquer au serveur quel type de contenu image/png Image au format PNG
il accepte pour la réponse. image/svg+xml Contenu SVG permettant de faire du dessin vectoriel
• Un type de média est composé d’un type et un sous-type video/mpeg Vidéo au format MPEG
{type} / {sous-type} video/mp4 Vidéo au format MP4
• 6 types : text, image, video, application, audio et multipart application/javascript Contenu JavaScript
application/octet-stream Contenu binaire non typé
application/pdf Contenu au format PDF
application/json Contant au format JSON (JavaScript Object Notation)
31 application/xml Contenu au format XML 32
Rappel
• Communication client serveur ?
Chapitre 2
• Côté client : navigateur
Le modèle MVC • Côté serveur : serveur HTTP
• L’écoute des informations arrivées sur le port
Emna KALLEL utilisé par le protocole HTTP, le port 80 et
scruter chaque requête entrante.
• Appache HTTP Server et IIS (Microsoft)
emna.kallel@enetcom.usf.tn

34

Serveur d’applications Rôles d’un serveur d’applications


• Une fois une requête HTTP est lue et analysée, il faut traiter son • Récupérer les requêtes HTTP issues des clients
contenu et renvoyer une réponse au client en conséquence • Les mettre dans des objets où le code sera capable de manipuler.
 code qui indique le traitement à faire suite à l’arrivée d’une req. • Faire passer ces objets dans l’application en question.
• Composant qui se charge d’exécuter le code + faire le travail • Renvoyer des réponses HTTP aux clients en se basant sur le objets
d’un serveur HTTP  Serveur d’applications retournés par le code.
• Serveur d’applications = serveur HTTP + gestion d’objets de • Solutions propriétaires et payantes : WebLogic (Oracle) et
diverses natures  Conteneur WebSphere (IBM)
Client Serveur d’applications • Solutions libres et gratuites : Apache Tomcat, Jboss, Jonas et
Requête HTTP
Conteneur GlassFish
Serveur
Réponse HTTP HTTP
Le serveur HTTP reçoit la requête HTTP
qui sera lue, découpée, analysée
Le conteneur permet d’exécuter
35 36
et envoyée ensuite au conteneur
le code Java EE
Modèle de conception pour JEE MVC
• Il découpe littéralement l’application en couches distinctes et
• Java Enterprise Edition n’impose aucun arrangement du code
de ce fait impacte très fortement l’organisation du code.
• Travailler à plusieurs contributeurs sur un même projet/application • Le traitement, le stockage et la mise à jour des données de
l’application doit être contenu dans la couche nommée
(travail en équipe)
Modèle (M du MVC).
• Difficulté de maintenir et corriger une application créée par d’autre • L’interaction avec l’utilisateur et la présentation des données
(mise en forme, affichage) doit être contenu dans la couche
programmeur/équipe
nommée Vue (V du MVC).
• Faire évoluer une application créée par d’autre programmeur/équipe • Le contrôle des actions de l’utilisateur et des données doit
être contenu dans la couche nommée Contrôle (C du MVC).
 Adopter une architecture +/- standard dans laquelle tout
développeur peut se situer  Modèle MVC (Modèle-Vue-Contrôleur)

37 38

MVC MVC … en pratique


Clients Serveur d’applications
• Couche Modèle = représentation des données
Requête HTTP
Contrôleur • Quel est le type de stockage dont a besoin votre application?
• Quelle est l’envergure de votre application?
Réponse HTTP
• Disposez-vous d’un budget?
• La quantité de données produites par votre application va-t-elle
Vue Modèle
être amenée à fortement évoluer?
•Le client émet une requête
•Le contrôleur intercepte la requête de l’utilisateur • …
•Le contrôleur détermine quelle partie du modèle est concernée et quelle vue y est
associée  Utilisation des frameworks: Il existe plusieurs Framework Java EE
•Le modèle traite les interactions avec les données, applique les règles métier et
renvoie les données au contrôleur
pour pouvoir développer avec MVC
•Le contrôleur sélectionne la vue et lui renseigne les données
•La vue présente les données à l’utilisateur 39 40
Framework MVC avec JEE
• Modèle: Traitements + Données
Objets Java = Attributs + méthodes + système de stockage de données.
• Un ensemble de composants qui servent à créer l’architecture
Complexité du code  complexité des traitements à faire dans l’application
et les grandes lignes d’une application. • Vue : pages JSP
Exécutée côté serveur
• Boîte à outils géante conçue par des développeurs et mise à
Pages en langage client : TML, XML, CSS, Javascript, etc
disposition d’autres développeurs. permet au concepteur de la page d’appeler des portions de code java au
travers des balises et expressions ressemblant aux balises HTML
• Pas un concept propre pour JEE ni au développement web en
• Contrôleur : des servlets
particulier. Objet qui permet d’intercepter les requêtes faites par un client
Méthodes permettant d’examiner les req HTTP
• JSF, Spring, Struts, Hibernate
analyser une req issue du client + appelle les traitements effectués par le
Modèle et ordonne en retour à la Vue le résultat au client.

41 42

MVC avec Java EE

Serveur
Clients

Requête HTTP
Contrôleur
(Servlets)

Réponse HTTP
Vue Modèle
(pages JSP) (objets Java)

43
L’écosystème JAVA
Chapitre 1 • Java : plus que 20 ans !
• Sun Microsystems Oracle
Introduction au Java EE
• Langage orienté objet
• Java SE + Java EE + JRE (JVM)
Emna KALLEL

emna.kallel@enetcom.usf.tn

La plateforme Java SE Outils nécessaires au développement

• Plateforme de base pour écrire une application • Situés dans le répertoire bin du JDK
Java • javac.exe : compiler les programmes en
• Deux installations faites en parallèle: transformant le code Java en bytecode
1) l’installation du JDK • java.exe et javaw.exe : exécuter des
2) L’installation du JRE applications Java
• javadoc.exe : générer la documentation Java
à partir des commentaires écrits dans le
programme.

3 4
La plateforme Java EE Architecture Java EE
• JavaEE est une architecture 3-tiers :
• Java EE est basée sur le langage de développement • Tiers présentation : affichage des données
Java. • Tiers métier: gestion du métier de l’application
• Java permet de développer des applications. • Tiers donnée: persistance des données

• Ajouter un ensemble de bibliothèques qui ajoutent Présentation


Conteneur de
Métier
APIs
Données

des fonctionnalités à Java. Servlets


Base de
données
Conteneur
• Java EE permet de développer des sites web solides,
JDBC
d’EJB Relationnelle
Client
JSP EJB JCA
robustes et bien structurés Java
Système
EJB Mail
d’information
Ensemble de Servlet
Java EE Java bibliothèques Client EJB …

5 6
Serveur Web Serveur d’application

Container JEE Enterprise Java Beans (EJB)


• Container JEE : Environnement d’exécution • Code exécuté sur le serveur
– proche des données
Java permettant d’héberger des composants
– serveur souvent plus puissant que le client
applicatifs et de contrôler leur exécution. Il
• Code localisé sur le serveur
existe deux types de container : – changer le code du serveur ne change pas le code du client
– Container JEE Web : utilisés pour héberger des • Un EJB est juste une collection de classes Java et d’un
servlets ou des pages JSP fichier XML. Les classes Java suivent un certains
– Container JEE EJB : supportant l’exécution des nombre de règles et fournissent des callbacks
composants EJB comme définis dans l’environnement JEE et les
spécifications EJB.
Le protocole HTTP
Container EJB • Le protocole HTTP (Hyper Text Transfer Protocol)
est indispensable dans la réalisation d’application
• Le container EJB fournit un nombre de services Web.
additionnels
• Le principe repose sur un couple requête/réponse
– Gestion de la persistance
Requête
– Transactions Client Serveur
– Sécurité Réponse
– Portabilité Etablissement connexion
– Gestion des erreurs Requête 1

Réponse 1 Temp
Client Requête 2 Serveur

Réponse 2
Fermeture connexion TCP/IP 10

Les URI (Uniform Resource Identifier) Les URI (Uniform Resource Identifier)
• Chaîne de caractères identifiant une ressource
• Elle permet de localiser une ressource (URL)
• Nommer une ressource (URN)
• Faire les deux en même temps
• Le terme URL est utilisé dans le développement
Web pour identifier et localiser une ressource
• Structure d’une URL HTTP
"http://"+hôte+[":"+port] ["/"+ chemin ressource+["? "+paramètres]]

11 12
La requête
Requête/réponse http Parties obligatoires Partie optionnelle

Entête de requête Ligne vide Corps de requête

• Type de la requête
• Host : nom du domaine du serveur auquel on envoie la requête, le port s’il est
différent de 80
• Connection : comportement de la connexion
• Cache-control: Cette propriété indique au cache du serveur s’il doit recharger la
page à chaque reprise ou suivant un délai précis
• Upgrade-Insecure-request: Indique au client que l’on préfèrera toujours une
reconnection HTTPS si jamais celui-ci est en train de migrer entre HTTP et HTTPS
• User-agent: Il s’agit de la chaine de caractère permettant d’identifier
formellement le navigateur qui a généré la requête; on y trouve sa version son
développeur …
• Accept: Indique le type de contenu (de média) que le client est en mesure
d’accepter.

13 14

La requête (suite) Exemple


• Referer : Définit l’URL de la page à partir de laquelle la ressource est
demandée. • URL demandée : www.lemonde.fr
• Type de la requête : GET (utilisée pour charger les images et les pages HTML)
• Accept-encoding: Spécifie le type de compression du contenu que le client (le
• Host: www.lemonde.fr
navigateur) peut traiter. Le contenu est en effet souvent compresser pour • Connection: keep-alive
optimiser le temps de transfert ! • Cache-control: max-age=0
• Upgrade-insecure-requests : 1
• Cookie: On retrouve ici le cookie (une série de données) qui avait été
• User-agent : Mozilla /5.0 (Windows NT 10.0, …)
précédemment enregistré sur le navigateur de l’utilisateur et qui est renvoyé • Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
au serveur lors de chaque requêtes. • Referer: http://www.lemonde.fr/
• Accept-encoding: gzip, deflate, sdch
• If-Modified-Since: Permet au serveur de renvoyer la réponse “304 Not
• Accept-language : fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
modified” si jamais la page n’a pas été modifiée depuis la date indiquée • Cookie: _ga=GA1.2.374864853.1475228586; xtvrn=43260; _cb_ls=1
• If-Modified-Since: Fri, 30 Sep 2016 16:16:34 GMT

15 16
Les types de requêtes La réponse(Structure)
Parties obligatoires Partie optionnelle
HTTP/1.1 propose plusieurs types de requêtes.
•GET permet de demander une ressource sans la modifier ;
•POST permet de transmettre des données dans le but de Entête de réponse Ligne vide Corps de réponse
manipuler une ressource (formulaire en ligne);
•PUT permet de remplacer ou d’ajouter une ressource sur le HTTP/1.1 200 OK
serveur ; Date: Wed, 05 Oct 2016 19:44:50 GMT
Server: apache/2.4.7 (Ubuntu)
•DELETE permet de supprimer une ressource du serveur ; Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT
•HEAD permet de demander des informations sur la ressource sans Etag: "39b8-53ceaec9cf9c5-gzip"
demander la ressource elle-même ; Accept-Ranges: bytes
Vary: Accept-Encoding
•PATCH permet de modifier partiellement une ressource ; Content-Encoding: gzip
•OPTIONS permet d’obtenir les options de communication d’une Content-Lenght: 4065
ressource ou du serveur (méthodes utilisées) ; Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
•CONNECT permet d’utiliser un proxy comme un tunnel de Content-Type: text/html
communication (faire passer une connexion interdite par un pare-
feu dans un protocole HTTP presque toujours autorisé).; <!DOCTYPE html SYSTEM « about:legacy-compat">
<html lang="en">
•TRACE permet de tester et d’effectuer un diagnostic de la …
connexion et demandant au serveur de retourner la requête reçue.
17
</html> 18

La réponse(Structure) La réponse(Les codes du statut)


• L’entête de la réponse peut être découpé en 2 parties: • Chaque réponse est associée à un code de statut sur trois digits. Il permet
d’indiquer au client l’état de la réponse. Le client peut ainsi réagir en
1) Première ligne: statut de la réponse conséquence.
- version du protocole HTTP (HTTP/1.1) • Ces codes sont classés en 5 catégories.
- Le code du statut (200) Catégorie Code Description

- L’interprétation textuelle du code de statut (ok) Information 1xx La requête est reçue par le serveur, le traitement se poursuit
Succès 2xx La requête a été reçue, comprise et traitée par le serveur
2) Autres attributs de réponse : permettent au serveur de passer des informations
Redirection 3xx Des actions complémentaires sont nécessaires pour terminer la
complémentaires. requête
• Le corps de la réponse: partie utilisée par le client pour l’affichage, il peut prendre Erreur client 4xx La requête ne peut pas être traitée par le serveur

plusieurs types. Erreur serveur 5xx Le serveur est mis en échec sur le traitement d’une requête
valide

19 20
La réponse(Les codes du statut) La réponse(Les codes du statut)
Code Libelle Description
Code Libelle Description
100 Continue Continue
400 Bad Request Req incorrecte
101 Switching Protocols Changement de protocole
401 Unauthorized Le client doit s’authentifier pour accéder à la ressource
200 OK OK
403 Forbidden Le client n’a pas le droit d’accéder à la ressource
201 Created Créé
404 Not Found Ressource non trouvée
202 Accepted Acceptée
405 Method Not Allowed Type de req non autorisé
204 No Content Req traitée avec succès mais aucune info en retour
500 Internal Server Error Le serveur a rencontré une erreur inattendue
206 Partial Content Contenu partiel
501 Not Implemented Le serveur ne sait pas traiter le type de req pour la
301 Moved Permanently La ressource a changé d’adresse de façon permanente
ressource visée
302 Found La ressource a changé d’adresse temporairement 503 Service Unavailable Le serveur n’est pas capable de répondre à cause d’une
304 Not modified La ressource n’a as changé. Le client peut utiliser la surcharge temporaire ou d’une maintenance
version en cache

21 22

Les attributs de réponse La gestion du cache


• Les attributs génériques : même attributs que celles de la requête • Elément essentiel dans le développement Web
• Les attributs de réponse: entête d’une réponse. Ils ne sont pas tous obligatoires.
• Améliorer les performances en limitant le transfert de données si celles-ci
n’ont pas été modifiées.
Attribut Description • Le protocole HTTP met à disposition du client et du serveur un ensemble
Content-Encoding Définit la méthode de compression du corps de d’attributs pour dialoguer et pour savoir si une ressource en cache est
la réponse toujours d’actualité ou obsolète.
Content-Language Définit la langue utilisée dans le corps de la • Le cache peut se situer sur le poste client ou sur un intermédiaire (serveur
réponse proxy).
Location Définit l’URL de la ressource lors d’une • Exemple: Un client faisant une requête de type GET
redirection
• Si la req correspond à la première demande alors la ressource est
Server Définit les caractéristiques du serveur ayant retournée avec en en-tête de réponse des attributs indiquant les
généré la réponse
possibilité de mise en cache.
Set-Cookie Permet au serveur d’envoyer des cookies au
client.

23 24
La gestion du cache La gestion du cache
Attributs Description • Lors des requêtes suivantes vers la même ressource, le mécanisme de
Cache-Control Plusieurs valeurs peuvent êtres attribuées: cache peut entrer en action
private : la réponse ne peut pas être mise en cache par
1) S’il n’y avait pas de cache possible  la req est envoyée comme si c’était
un intermédiaire partagé par plusieurs clients
public : la réponse peut être mise en cache par
le premier appel
n’importe quel intermédiaire 2) Dans le cas où les attributs de réponse indiquaient une possible mise en
max-age : indiquer le temps en secondes durant le quel cache :
la ressource en cache est d’actualité 2.1) Le client peut utiliser l’attribut Expires ou la directive max-age (Cache-
Pragma Indiquer que la ressource ne doit pas être en cache Control) de la ressource mise en cache s’ils sont renseignés. Si la
Etag Associer un id à la ressource qui change à chaque fois où ressource est toujours d’actualité  aucune requête n’est effectuée.
la ressource change. 2.2) Le client peut utiliser la valeur des attributs Etag et Last-Modified
Expires Définir une date de fin de validité de la ressource mise pour interroger le serveur pour voir s’il a une ressource plus récente.
en cache
Last-Modified Définir la date de dernière modification de la ressource

25 26

La gestion du cache
 La requête est enrichie par les attributs suivants

Attribut Description

Cet attribut prend la valeur d’Etag associé à la réponse qu’il a


If-None-Match
éventuellement déjà eu pour la même req

Cet attribut prend la valeur de Last-Modified associé à la réponse


If-Modified-Since
qu’il a éventuellement déjà eu pour la même req

27 28
Gestion de l’authentification Gestion de l’authentification
• Lorsque une ressource est protégée et nécessite une authentification
auprès du serveur pour pouvoir y accéder, un couple d’attributs est Remarque
utilisé.
• Lorsque vous transmettez des données sensibles sur vos sites
• L’attribut WWW.Authenticate demandant au client de s’authentifier
(Login/Pwd) favoris et que ces derniers n’utilisent pas HTTPS (la version
• Login/Pwd envoyés via Authorization au travers d’une nouvelle req sécurisée du protocole HTTP) cela représente un réel danger,
visant la même ressource.
• Si la req doit passer par un proxy pour accéder à la ressource  le car toute requête peut être interceptée ! et dans une requête
proxy demande au client de s’authentifier (selon sa configuration)  POST de transmission de formulaire vos données sont lisibles!
Proxy-Authenticate et Proxy-Authorization

29 30

Les types de médias Les types de médias


Types de médias Description
• MIME (Multipurpose Internet Mail Extensions) : définir le type de text/plain Contenu textuel brut
contenu dans le corps de la requête et de la réponse. text/html Contenu HTML
• Attribut Content-Type text/xml Contenu XML
• Les navigateurs, dans leurs version actuelles, sont capables text/csv Contenu CSV
d’interpréter le contenu d’une réponse sans passer par Content- text/css Contenu CSS
Type. image/jpeg Image au format JPEG
• Accept permet au client d’indiquer au serveur quel type de contenu image/png Image au format PNG
il accepte pour la réponse. image/svg+xml Contenu SVG permettant de faire du dessin vectoriel
• Un type de média est composé d’un type et un sous-type video/mpeg Vidéo au format MPEG
{type} / {sous-type} video/mp4 Vidéo au format MP4
• 6 types : text, image, video, application, audio et multipart application/javascript Contenu JavaScript
application/octet-stream Contenu binaire non typé
application/pdf Contenu au format PDF
application/json Contant au format JSON (JavaScript Object Notation)
31 application/xml Contenu au format XML 32
Rappel
• Communication client serveur ?
Chapitre 2
• Côté client : navigateur
Le modèle MVC • Côté serveur : serveur HTTP
• L’écoute des informations arrivées sur le port
Emna KALLEL utilisé par le protocole HTTP, le port 80 et
scruter chaque requête entrante.
• Appache HTTP Server et IIS (Microsoft)
emna.kallel@enetcom.usf.tn

34

Serveur d’applications Rôles d’un serveur d’applications


• Une fois une requête HTTP est lue et analysée, il faut traiter son • Récupérer les requêtes HTTP issues des clients
contenu et renvoyer une réponse au client en conséquence • Les mettre dans des objets où le code sera capable de manipuler.
 code qui indique le traitement à faire suite à l’arrivée d’une req. • Faire passer ces objets dans l’application en question.
• Composant qui se charge d’exécuter le code + faire le travail • Renvoyer des réponses HTTP aux clients en se basant sur le objets
d’un serveur HTTP  Serveur d’applications retournés par le code.
• Serveur d’applications = serveur HTTP + gestion d’objets de • Solutions propriétaires et payantes : WebLogic (Oracle) et
diverses natures  Conteneur WebSphere (IBM)
Client Serveur d’applications • Solutions libres et gratuites : Apache Tomcat, Jboss, Jonas et
Requête HTTP
Conteneur GlassFish
Serveur
Réponse HTTP HTTP
Le serveur HTTP reçoit la requête HTTP
qui sera lue, découpée, analysée
Le conteneur permet d’exécuter
35 36
et envoyée ensuite au conteneur
le code Java EE
Modèle de conception pour JEE MVC
• Il découpe littéralement l’application en couches distinctes et
• Java Enterprise Edition n’impose aucun arrangement du code
de ce fait impacte très fortement l’organisation du code.
• Travailler à plusieurs contributeurs sur un même projet/application • Le traitement, le stockage et la mise à jour des données de
l’application doit être contenu dans la couche nommée
(travail en équipe)
Modèle (M du MVC).
• Difficulté de maintenir et corriger une application créée par d’autre • L’interaction avec l’utilisateur et la présentation des données
(mise en forme, affichage) doit être contenu dans la couche
programmeur/équipe
nommée Vue (V du MVC).
• Faire évoluer une application créée par d’autre programmeur/équipe • Le contrôle des actions de l’utilisateur et des données doit
être contenu dans la couche nommée Contrôle (C du MVC).
 Adopter une architecture +/- standard dans laquelle tout
développeur peut se situer  Modèle MVC (Modèle-Vue-Contrôleur)

37 38

MVC MVC … en pratique


Clients Serveur d’applications
• Couche Modèle = représentation des données
Requête HTTP
Contrôleur • Quel est le type de stockage dont a besoin votre application?
• Quelle est l’envergure de votre application?
Réponse HTTP
• Disposez-vous d’un budget?
• La quantité de données produites par votre application va-t-elle
Vue Modèle
être amenée à fortement évoluer?
•Le client émet une requête
•Le contrôleur intercepte la requête de l’utilisateur • …
•Le contrôleur détermine quelle partie du modèle est concernée et quelle vue y est
associée  Utilisation des frameworks: Il existe plusieurs Framework Java EE
•Le modèle traite les interactions avec les données, applique les règles métier et
renvoie les données au contrôleur
pour pouvoir développer avec MVC
•Le contrôleur sélectionne la vue et lui renseigne les données
•La vue présente les données à l’utilisateur 39 40
Framework MVC avec JEE
• Modèle: Traitements + Données
Objets Java = Attributs + méthodes + système de stockage de données.
• Un ensemble de composants qui servent à créer l’architecture
Complexité du code  complexité des traitements à faire dans l’application
et les grandes lignes d’une application. • Vue : pages JSP
Exécutée côté serveur
• Boîte à outils géante conçue par des développeurs et mise à
Pages en langage client : TML, XML, CSS, Javascript, etc
disposition d’autres développeurs. permet au concepteur de la page d’appeler des portions de code java au
travers des balises et expressions ressemblant aux balises HTML
• Pas un concept propre pour JEE ni au développement web en
• Contrôleur : des servlets
particulier. Objet qui permet d’intercepter les requêtes faites par un client
Méthodes permettant d’examiner les req HTTP
• JSF, Spring, Struts, Hibernate
analyser une req issue du client + appelle les traitements effectués par le
Modèle et ordonne en retour à la Vue le résultat au client.

41 42

MVC avec Java EE

Serveur
Clients

Requête HTTP
Contrôleur
(Servlets)

Réponse HTTP
Vue Modèle
(pages JSP) (objets Java)

43

Vous aimerez peut-être aussi