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