11/13/2019
DEVELOPPEMENT
DES
APPLICATIONS WEB EN
JAVA
S.MNIF Novembre 2019
1
Vue d’ensemble
Principe des applications web
Principaux composants J2EE pour le web
Les servlets
Java server Page (JSP)
Entreprise Java Beans(EJB)
Persistance des données (JPA)
2
Chapitre 1
PRINCIPE DES APPLICATIONS WEB
PRINCIPE DES APPLICATIONS WEB
3
Introduction
 J2EE (Java 2 Enterprise Edition) est une norme proposée par la société Sun, visant à définir
un standard de développement d'applications d'entreprises multi-niveaux, basées sur des
composants.
 On parle généralement de «plate-forme J2EE» pour désigner l'ensemble constitué des
services (API) offerts et de l'infrastructure d'exécution. J2EE comprend notamment :
 Les spécifications du serveur d'application, c'est-à-dire de l'environnement d'exécution
 Des services, au travers d'API, c'est-à-dire des extensions Java indépendantes permettant
d'offrir en standard un certain nombre de fonctionnalités.
4
11/13/2019
Outils nécessaires au développement
 Situés dans le répertoire bin du JDK
 javac.exe : compiler les programmes en transformant le code Java en bytecode
 java.exe et javaw.exe : exécuter des applications Java
 javadoc.exe : générer la documentation Java à partir des commentaires écrits dans le
programme.
5
Le protocole HTTP
 L'Hypertext Transfer Protocol HTTP, littéralement « protocole de transfert hypertexte » est
un protocole de communication client - serveur développé pour le World Wide Web
 Le principe repose sur un couple requête/réponse
6
La requête
 Une requête est un message qui va du client au serveur. Elle est structurée de la manière
suivante :
verbe
verbe URI
URI HTTP/X.X
HTTP/X.X
Entêtes
Entêtes
corps
corps
7
La requête
 VERBE HTTP /file_path.html HTTP/X.X
 Verbe HTTP : Le verbe que vous utiliserez va déterminer l’interaction avec le serveur : est-ce que vous
allez récupérer un fichier, envoyer des données avec, modifier un objet existant…
 HTTP : la version d’HTTP que vous utilisez est toujours envoyée dans la première ligne de la requête. La
version que vous verrez le plus souvent est HTTP/1.1.
 Entêtes: Les en-têtes sont là pour donner des informations sur l’échange, souvent sur le client qui
fait la requête.
quelques exemples du contenu d'un en-tête :
 Date: Elle indique quand le client a effectué sa demande.
 EX: Date: Tue, 19 Jan 2016 18:15:41 GMT
 Referer: Définit l’URL de la page à partir de laquelle la ressource est demandée.
 Ex: Referer: https://www.google.fr/
 User agent: Indique l'application utilisée par le client, ainsi que sa version.
 Ex: User-Agent: Mozilla/5.0
 User language: Renseigne sur la langue utilisée par le client dans son application
 Ex: Accept-Language: en-us,en;q=0.8
8
11/13/2019
La requête
 Corps: Après les en-têtes, vient le corps de la requête. Là-dedans vous aurez des détails selon la
nature de la requête. Par exemple, si une requête envoie des données à une API avec POST les
attributs seront envoyés dans ce corps.
9
La requête
10
La réponse
 Les réponses HTTP sont au format suivant :
11
Code HTTP
Code HTTP
HTTP/X.X
HTTP/X.X
Entêtes
Entêtes
corps
corps
La réponse
 La version HTTP: Indique la version d'HTTP utilisée.
 Le code réponse HTTP: Indique l'état de la réponse. La ressource a-t-elle bien été
trouvée ? Si non, pourquoi ? Ce code de 3 chiffres vous dira tout ce qu’il faut savoir. Il y a
à peu près 30 codes possibles qui couvrent plein de situations.
 Les en-têtes: Ici vous trouverez des infos classiques (la date, etc.) comme vous l'avez vu
pour les requêtes. Dans les en-têtes réponses spécifiquement, vous trouverez aussi les
infos sur le serveur lui-même Ex: son type ou sa localisation.
 Le corps: Le corps de la réponse contient des données pour les utilisateurs, il peut
prendre plusieurs types.
12
11/13/2019
La réponse
13
 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 conséquence.
 Ces codes sont classés en 5 catégories.
Catégorie Code Description
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
Redirection 3xx Des actions complémentaires sont nécessaires pour terminer
la requête
Erreur client 4xx La requête ne peut pas être traitée par le serveur
Erreur serveur 5xx Le serveur est mis en échec sur le traitement d’une requête
valide
La réponse
14
HTTP/1.1 200 OK
Date: Wed, 05 Oct 2016 19:44:50 GMT
Server: apache/2.4.7 (Ubuntu)
Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT
Etag: "39b8-53ceaec9cf9c5-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Lenght: 4065
Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
Content-Type: text/html
<!DOCTYPE html SYSTEM « about:legacy-compat">
<html lang="en">
…
</html>
HTTP/1.1 200 OK
Date: Wed, 05 Oct 2016 19:44:50 GMT
Server: apache/2.4.7 (Ubuntu)
Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT
Etag: "39b8-53ceaec9cf9c5-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Lenght: 4065
Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
Content-Type: text/html
<!DOCTYPE html SYSTEM « about:legacy-compat">
<html lang="en">
…
</html>
Exemple de réponse
Exemple de réponse
Architecture des applications web
 Une application web est un ensemble de composants ou unité logique de
traitement.
 Objectif: modularité et réutilisation
 Trois couches applicatives composent ces composants
 Présentation: interaction avec l’utilisateur
 Traitement: traitement métiers
 Données: gestion des données ou des ressources
 Ces 3 niveaux peuvent être imbriques ou repartis de différentes manières
entre plusieurs machines physiques ou logiques
 Suivants les contraintes d’utilisation ou contraintes techniques, on distingue:
Architecture 2 tiers, Architecture 3 tiers, et Architectures n tiers.15
Architecture des applications Web
 La couche présentation et traitement sont sur le client
 Les données sont sur le serveur
 Contexte multi-utilisateurs avec accès aux données centralisées.
Architectures 2 tiers (Client-Serveur)
Architectures 2 tiers (Client-Serveur)
Présentations
Traitements
Données
16
11/13/2019
Architecture des applications Web
 La couche présentation (IHM) est sur le client
 La couche métier ou les traitements sont pris par un serveur intermédiaire
 Les données (fichiers, fichiers xml, BDD,…..) sont sur un serveur de données
 Contexte multi-utilisateur: internet
Architectures 3-tiers
Architectures 3-tiers
Traitements
Données
Présentations
Serveur BDD Serveur Web
Application 17
Architecture des applications Web
 Quelle est la différence entre un serveur web et un serveur d’application ?
 Pour répondre à cette question je vous propose d’exposer les différentes couches à
empiler pour arriver à monter un serveur d’application.
 Couche 1: Serveur web http
 Un serveur http, c’est un serveur qui gère exclusivement des requêtes HTTP
. Il a pour
rôle d’intercepter les requêtes http, sur un port qui est par défaut 80, pour les traiter
et générer ensuite des réponses http. Tous les serveurs web embarquent un daemon
http(httpd) ou équivalent qui s’occupe de cette fonctionnalité. Exemple serveur
Apache.
18
httpd est le programme du serveur HTTP d'Apache. Il a été conçu pour fonctionner sous forme de
processus démon indépendant. Les daemons sont souvent démarrés lors du chargement du
système d'exploitation, et servent en général à répondre à des requêtes du réseau,
Architecture des applications Web
 Couche 2: Conteneur web
 Maintenant, on va étendre notre serveur web pour devenir un
conteneur web. Cette extension va permettre d’avoir le possibilité
d’exécuter des programmes écrits avec des langages de
programmation (java, php, C#, …) dans le serveur web.
 Par exemple: le serveur Tomcat n’est autre qu’un serveur Apache
couplé avec un moteur web java et, les serveurs tel-que easyPhp,
wamp, xamp ne sont que des serveurs apaches couplés avec un moteur
web php.
19
Architecture des applications Web
 Couche 3: Serveur d’application
 Donc, il faut étendre encore plus le serveur Tomcat pour devenir
un vrai serveur d’application java j2ee. L’extension nécessaire est
composée de deux partie essentielles:
 Un conteneur EJB qui encapsule les traitements des entreprises JavaBeans.
 Un ensemble de services répartie en:
 Des services d’infrastructures
 Des services de communication
20
11/13/2019
Architecture des applications Web
Architecture 3-tiers: Exemple
Architecture 3-tiers: Exemple
Serveur Appache/Tomcat
URL Fichier php
Serveur BDD
Page web Envoie page html
Parseur PHP
Interception, traitement
et génération page HTML
Niveau 1
Niveau 3
Niveau 2
21
Architecture des applications Web
Architecture n-tiers
Architecture n-tiers
Serveur BDD
Serveur Application
Traitements Données
Serveur web
 C’est une architecture N-tiers dans laquelle le traitements des données
contient lui-même plusieurs couches multipliant ainsi les tiers.
Présentations
22
Architecture des applications Web
Architecture N-tiers: Exemple
Architecture N-tiers: Exemple
Serveur web
URL Envoie page JSP
Serveur BDD
Page web Génération et envoie
page JSP
Serveur Application
23
Architecture J2EE
 Fournir un cadre de développement par composants avec J2EE = Java 2 Entreprise
Edition.
 J2EE est une plate-forme fortement orientée serveur pour le développement et
l’exécution des applications distribuées. Elle propose des APIs:
 L’invocation de méthodes distantes: RMI, corba, Web services
 L’accés aux bases de données relationnelles: JDBC
 L’accés aux annuaires: JNDI
 L’utilisation du XML: DOM, SAX
 La gestion du mail: JAVA Mail
24
L'architecture J2EE permet ainsi de séparer la couche présentation, correspondant à l'interface
homme-machine (IHM), la couche métier contenant l'essentiel des traitements de données en se
basant dans la mesure du possible sur des API existantes, et enfin la couche de données
correspondant aux informations de l'entreprise stockées dans des fichiers, dans des bases de
données relationnelles ou XML, dans des annuaires d'entreprise ou encore dans des systèmes
d'information complexes.
L'architecture J2EE permet ainsi de séparer la couche présentation, correspondant à l'interface
homme-machine (IHM), la couche métier contenant l'essentiel des traitements de données en se
basant dans la mesure du possible sur des API existantes, et enfin la couche de données
correspondant aux informations de l'entreprise stockées dans des fichiers, dans des bases de
données relationnelles ou XML, dans des annuaires d'entreprise ou encore dans des systèmes
d'information complexes.
11/13/2019
Architecture J2EE
Conteneur
de servlets
JSP
Servlets
APIs
JNDI
Java mail
JAAS
JDBC
JTA
JCA
Etc.
EJB
EJB
EJB
Présentations Traitements Données
Client lourd
Client léger
Serveur web
Serveur d’application
Système d’information
Annuaire
BDD
Conteneur d’EJB
25
Architecture J2EE
 Serveur d’application
 Le rôle du serveur d’application est de faire fonctionner les applications d’entreprise
écrites en java.
 Le serveur d’application prend en charge l’environnement permettant a l’application
d’être disponible sur le web.
 Il fournit un certain nombre de services:
 Service de nommage
 Service de gestion des transactions
 Service de sécurité
 Service d’administration
26
Architecture J2EE
 Entreprise Java Beans (EJBs) sont des composants logiciels résident sur le serveur.
 Ils permettent de :
 Représenter des données (Entités).
 Offrir des services (Session).
 Réaliser des traitements asynchrones(MDB).
27
Architecture J2EE
 Serveurs J2EE
 Jboss http://www.jboss.org/
 Glassfish https://javaee.github.io/glassfish/
 Conteneurs web
 Tomcat http://tomcat.apache.org/
 Jetty https://www.eclipse.org/jetty/
28

chapitre 1 4SAMIMNIFENETCOMMMMMMMMMMMMMMMMM.pdf

  • 1.
    11/13/2019 DEVELOPPEMENT DES APPLICATIONS WEB EN JAVA S.MNIFNovembre 2019 1 Vue d’ensemble Principe des applications web Principaux composants J2EE pour le web Les servlets Java server Page (JSP) Entreprise Java Beans(EJB) Persistance des données (JPA) 2 Chapitre 1 PRINCIPE DES APPLICATIONS WEB PRINCIPE DES APPLICATIONS WEB 3 Introduction  J2EE (Java 2 Enterprise Edition) est une norme proposée par la société Sun, visant à définir un standard de développement d'applications d'entreprises multi-niveaux, basées sur des composants.  On parle généralement de «plate-forme J2EE» pour désigner l'ensemble constitué des services (API) offerts et de l'infrastructure d'exécution. J2EE comprend notamment :  Les spécifications du serveur d'application, c'est-à-dire de l'environnement d'exécution  Des services, au travers d'API, c'est-à-dire des extensions Java indépendantes permettant d'offrir en standard un certain nombre de fonctionnalités. 4
  • 2.
    11/13/2019 Outils nécessaires audéveloppement  Situés dans le répertoire bin du JDK  javac.exe : compiler les programmes en transformant le code Java en bytecode  java.exe et javaw.exe : exécuter des applications Java  javadoc.exe : générer la documentation Java à partir des commentaires écrits dans le programme. 5 Le protocole HTTP  L'Hypertext Transfer Protocol HTTP, littéralement « protocole de transfert hypertexte » est un protocole de communication client - serveur développé pour le World Wide Web  Le principe repose sur un couple requête/réponse 6 La requête  Une requête est un message qui va du client au serveur. Elle est structurée de la manière suivante : verbe verbe URI URI HTTP/X.X HTTP/X.X Entêtes Entêtes corps corps 7 La requête  VERBE HTTP /file_path.html HTTP/X.X  Verbe HTTP : Le verbe que vous utiliserez va déterminer l’interaction avec le serveur : est-ce que vous allez récupérer un fichier, envoyer des données avec, modifier un objet existant…  HTTP : la version d’HTTP que vous utilisez est toujours envoyée dans la première ligne de la requête. La version que vous verrez le plus souvent est HTTP/1.1.  Entêtes: Les en-têtes sont là pour donner des informations sur l’échange, souvent sur le client qui fait la requête. quelques exemples du contenu d'un en-tête :  Date: Elle indique quand le client a effectué sa demande.  EX: Date: Tue, 19 Jan 2016 18:15:41 GMT  Referer: Définit l’URL de la page à partir de laquelle la ressource est demandée.  Ex: Referer: https://www.google.fr/  User agent: Indique l'application utilisée par le client, ainsi que sa version.  Ex: User-Agent: Mozilla/5.0  User language: Renseigne sur la langue utilisée par le client dans son application  Ex: Accept-Language: en-us,en;q=0.8 8
  • 3.
    11/13/2019 La requête  Corps:Après les en-têtes, vient le corps de la requête. Là-dedans vous aurez des détails selon la nature de la requête. Par exemple, si une requête envoie des données à une API avec POST les attributs seront envoyés dans ce corps. 9 La requête 10 La réponse  Les réponses HTTP sont au format suivant : 11 Code HTTP Code HTTP HTTP/X.X HTTP/X.X Entêtes Entêtes corps corps La réponse  La version HTTP: Indique la version d'HTTP utilisée.  Le code réponse HTTP: Indique l'état de la réponse. La ressource a-t-elle bien été trouvée ? Si non, pourquoi ? Ce code de 3 chiffres vous dira tout ce qu’il faut savoir. Il y a à peu près 30 codes possibles qui couvrent plein de situations.  Les en-têtes: Ici vous trouverez des infos classiques (la date, etc.) comme vous l'avez vu pour les requêtes. Dans les en-têtes réponses spécifiquement, vous trouverez aussi les infos sur le serveur lui-même Ex: son type ou sa localisation.  Le corps: Le corps de la réponse contient des données pour les utilisateurs, il peut prendre plusieurs types. 12
  • 4.
    11/13/2019 La réponse 13  Chaqueré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 conséquence.  Ces codes sont classés en 5 catégories. Catégorie Code Description 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 Redirection 3xx Des actions complémentaires sont nécessaires pour terminer la requête Erreur client 4xx La requête ne peut pas être traitée par le serveur Erreur serveur 5xx Le serveur est mis en échec sur le traitement d’une requête valide La réponse 14 HTTP/1.1 200 OK Date: Wed, 05 Oct 2016 19:44:50 GMT Server: apache/2.4.7 (Ubuntu) Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT Etag: "39b8-53ceaec9cf9c5-gzip" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Lenght: 4065 Keep-Alive: timeout=30, max=100 Connection: Keep-Alive Content-Type: text/html <!DOCTYPE html SYSTEM « about:legacy-compat"> <html lang="en"> … </html> HTTP/1.1 200 OK Date: Wed, 05 Oct 2016 19:44:50 GMT Server: apache/2.4.7 (Ubuntu) Last-Modified: Tue, 20 Sep 2016 06:56:13 GMT Etag: "39b8-53ceaec9cf9c5-gzip" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Lenght: 4065 Keep-Alive: timeout=30, max=100 Connection: Keep-Alive Content-Type: text/html <!DOCTYPE html SYSTEM « about:legacy-compat"> <html lang="en"> … </html> Exemple de réponse Exemple de réponse Architecture des applications web  Une application web est un ensemble de composants ou unité logique de traitement.  Objectif: modularité et réutilisation  Trois couches applicatives composent ces composants  Présentation: interaction avec l’utilisateur  Traitement: traitement métiers  Données: gestion des données ou des ressources  Ces 3 niveaux peuvent être imbriques ou repartis de différentes manières entre plusieurs machines physiques ou logiques  Suivants les contraintes d’utilisation ou contraintes techniques, on distingue: Architecture 2 tiers, Architecture 3 tiers, et Architectures n tiers.15 Architecture des applications Web  La couche présentation et traitement sont sur le client  Les données sont sur le serveur  Contexte multi-utilisateurs avec accès aux données centralisées. Architectures 2 tiers (Client-Serveur) Architectures 2 tiers (Client-Serveur) Présentations Traitements Données 16
  • 5.
    11/13/2019 Architecture des applicationsWeb  La couche présentation (IHM) est sur le client  La couche métier ou les traitements sont pris par un serveur intermédiaire  Les données (fichiers, fichiers xml, BDD,…..) sont sur un serveur de données  Contexte multi-utilisateur: internet Architectures 3-tiers Architectures 3-tiers Traitements Données Présentations Serveur BDD Serveur Web Application 17 Architecture des applications Web  Quelle est la différence entre un serveur web et un serveur d’application ?  Pour répondre à cette question je vous propose d’exposer les différentes couches à empiler pour arriver à monter un serveur d’application.  Couche 1: Serveur web http  Un serveur http, c’est un serveur qui gère exclusivement des requêtes HTTP . Il a pour rôle d’intercepter les requêtes http, sur un port qui est par défaut 80, pour les traiter et générer ensuite des réponses http. Tous les serveurs web embarquent un daemon http(httpd) ou équivalent qui s’occupe de cette fonctionnalité. Exemple serveur Apache. 18 httpd est le programme du serveur HTTP d'Apache. Il a été conçu pour fonctionner sous forme de processus démon indépendant. Les daemons sont souvent démarrés lors du chargement du système d'exploitation, et servent en général à répondre à des requêtes du réseau, Architecture des applications Web  Couche 2: Conteneur web  Maintenant, on va étendre notre serveur web pour devenir un conteneur web. Cette extension va permettre d’avoir le possibilité d’exécuter des programmes écrits avec des langages de programmation (java, php, C#, …) dans le serveur web.  Par exemple: le serveur Tomcat n’est autre qu’un serveur Apache couplé avec un moteur web java et, les serveurs tel-que easyPhp, wamp, xamp ne sont que des serveurs apaches couplés avec un moteur web php. 19 Architecture des applications Web  Couche 3: Serveur d’application  Donc, il faut étendre encore plus le serveur Tomcat pour devenir un vrai serveur d’application java j2ee. L’extension nécessaire est composée de deux partie essentielles:  Un conteneur EJB qui encapsule les traitements des entreprises JavaBeans.  Un ensemble de services répartie en:  Des services d’infrastructures  Des services de communication 20
  • 6.
    11/13/2019 Architecture des applicationsWeb Architecture 3-tiers: Exemple Architecture 3-tiers: Exemple Serveur Appache/Tomcat URL Fichier php Serveur BDD Page web Envoie page html Parseur PHP Interception, traitement et génération page HTML Niveau 1 Niveau 3 Niveau 2 21 Architecture des applications Web Architecture n-tiers Architecture n-tiers Serveur BDD Serveur Application Traitements Données Serveur web  C’est une architecture N-tiers dans laquelle le traitements des données contient lui-même plusieurs couches multipliant ainsi les tiers. Présentations 22 Architecture des applications Web Architecture N-tiers: Exemple Architecture N-tiers: Exemple Serveur web URL Envoie page JSP Serveur BDD Page web Génération et envoie page JSP Serveur Application 23 Architecture J2EE  Fournir un cadre de développement par composants avec J2EE = Java 2 Entreprise Edition.  J2EE est une plate-forme fortement orientée serveur pour le développement et l’exécution des applications distribuées. Elle propose des APIs:  L’invocation de méthodes distantes: RMI, corba, Web services  L’accés aux bases de données relationnelles: JDBC  L’accés aux annuaires: JNDI  L’utilisation du XML: DOM, SAX  La gestion du mail: JAVA Mail 24 L'architecture J2EE permet ainsi de séparer la couche présentation, correspondant à l'interface homme-machine (IHM), la couche métier contenant l'essentiel des traitements de données en se basant dans la mesure du possible sur des API existantes, et enfin la couche de données correspondant aux informations de l'entreprise stockées dans des fichiers, dans des bases de données relationnelles ou XML, dans des annuaires d'entreprise ou encore dans des systèmes d'information complexes. L'architecture J2EE permet ainsi de séparer la couche présentation, correspondant à l'interface homme-machine (IHM), la couche métier contenant l'essentiel des traitements de données en se basant dans la mesure du possible sur des API existantes, et enfin la couche de données correspondant aux informations de l'entreprise stockées dans des fichiers, dans des bases de données relationnelles ou XML, dans des annuaires d'entreprise ou encore dans des systèmes d'information complexes.
  • 7.
    11/13/2019 Architecture J2EE Conteneur de servlets JSP Servlets APIs JNDI Javamail JAAS JDBC JTA JCA Etc. EJB EJB EJB Présentations Traitements Données Client lourd Client léger Serveur web Serveur d’application Système d’information Annuaire BDD Conteneur d’EJB 25 Architecture J2EE  Serveur d’application  Le rôle du serveur d’application est de faire fonctionner les applications d’entreprise écrites en java.  Le serveur d’application prend en charge l’environnement permettant a l’application d’être disponible sur le web.  Il fournit un certain nombre de services:  Service de nommage  Service de gestion des transactions  Service de sécurité  Service d’administration 26 Architecture J2EE  Entreprise Java Beans (EJBs) sont des composants logiciels résident sur le serveur.  Ils permettent de :  Représenter des données (Entités).  Offrir des services (Session).  Réaliser des traitements asynchrones(MDB). 27 Architecture J2EE  Serveurs J2EE  Jboss http://www.jboss.org/  Glassfish https://javaee.github.io/glassfish/  Conteneurs web  Tomcat http://tomcat.apache.org/  Jetty https://www.eclipse.org/jetty/ 28