Vous êtes sur la page 1sur 54

La Technologie Java Entreprise

Edition JavaEE

Pr:YOUSEF EL MOURABIT
Faculté des Sciences et Techniques Béni Mellal
2017-2018
1
Objectif du Cours
 Connaître la plateforme J2EE.
 Acquérir les connaissances sur les dernières technologies utilisées dans la
conception des web applications et la gestion du contenue.
 Concevoir et déployer des composants web dans une application Multi-
tiers.
 Mettre en place un environnement de développement J2EE.
 Configurer des serveurs conteneurs des web et des serveurs d’application.
 Connaître les principales librairies J2EE.
 Concevoir une architecture d’application Web.
 Développer des applications Java Web complexes utilisant des technologies
actuelles.
 Développer des compétences d’analyse dans un environnement web.
 Développer l’esprit de travail dans le développement des applications web.

2
Plan Général
 Introduction à JEE
 Servlets
 java server pages jsp
 Entreprise java bean EJB
 MVC
 Hibernate
 Struts

3
Chapitre 1: Introduction à JavaEE
Plan
◦ Les langages du web
◦ Contraintes d'une application d'entreprise
◦ Description de JavaEE
◦ Evolution de la technologie JavaEE
◦ L’architecture 3tires
◦ L’architecture javaEE
◦ Les composants JEE

4
Les langages du web
 Il ne faut pas confondre l'internet et le web :
 L'internet est le réseau, le support physique de
l'information. C'est un ensemble de machines, de
câbles et d'éléments réseau en tout genre éparpillés
sur la surface du globe.
 Le web constitue une partie seulement du contenu
accessible sur l'internet.Vous connaissez et utilisez
d'autres contenus, comme le courrier électronique
ou encore la messagerie instantanée.

5
Les langages du web
 Un site web est un ensemble constitué de pages web (
HTML, CSS, Javascript, etc.). Lorsqu'on développe puis publie
un site web, on met en réalité en ligne du contenu sur
internet.
On distingue deux types de sites :
 les sites internet statiques : Ce sont des sites dont le
contenu est « fixe », il n'est modifiable que par le propriétaire
du site. Ils sont réalisés à l'aide des technologies HTML, CSS
et Javascript uniquement.
 les sites internet dynamiques : Ce sont des sites dont le
contenu est « dynamique », en plus des langages
précédemment cités, ils font intervenir d'autres technologies :
Java EE est l'une d'entre elles !
6
Les langages du web
 Consultation d’un site web = échange (client/serveur)
 le client : dans la plupart des cas, c'est le navigateur
installé sur votre ordinateur.
 le serveur : c'est la machine sur laquelle le site est
hébergé.

 La communication qui s'effectue entre le client et le


serveur est régie par des règles bien définies :
le protocole HTTP
7
Les langages du web
 le client ne fait que recevoir des pages web, les afficher à
l'utilisateur et transmettre ses actions au serveur. Les
langages utilisés pour mettre en forme les données et les
afficher à l'utilisateur sont le HTML, le CSS et éventuellement
le Javascript.

 A la différence du couple HTML & CSS qui est un standard


incontournable pour la mise en forme des pages web, il
existe plusieurs technologies capables de traiter les
informations sur le serveur. Java EE est l'une d'entre elles,
mais il en existe d'autres : PHP, .NET, Django…

8
Contraints d’une application
d’entreprise
 Robustesse (tolérance aux pannes, haute disponibilité)

 Scalablilté (1 utilisateur ou 1000 utilisateurs = même app)

 Portablilité (indépendance des plateformes)

 Extensibles (nouveaux besoins = nouveaux services )

 Réutilisabilité (conception Orientée Objet )

 Maintenance et tests d'intégration faciles


9
La réponse de JavaEE
 La technologie JavaEE vise à faciliter le
développement de nouvelles applications distribuées,
multicouches et à base de composants.

 Elle vise l'intégration avec les systèmes d’information


existants, et la réutilisation du code déja écrit.

 Etablit des standards pour les applications «


critiques » de l’entreprise: Disponibilité, tolérance
aux pannes, montée en charge, securité ...
10
Description JavaEE
 Le terme « Java » fait bien évidemment
référence à un langage, mais également à une
plate-forme : son nom complet est « Java SE »
pour Java Standard Edition. Celle-ci est
constituée de nombreuses bibliothèques, ou API
exemple: java.lang, java.io, java.math, java.util, etc.
 Bref, toutes ces bibliothèques que vous devez
déjà connaître et qui contiennent un nombre
conséquent de classes et de méthodes prêtes à
l'emploi pour effectuer toutes sortes de tâches.

11
Description JavaEE
 Le terme « Java EE » fait référence à une extension
de la plate-forme standard.
 la plate-forme Java EE est construite sur le langage
Java et la plate-forme Java SE, et elle y ajoute un
grand nombre de bibliothèques remplissant tout
un tas de fonctionnalités que la plate-forme
standard ne remplit pas d'origine.
 L'objectif majeur de Java EE est de faciliter le
développement d'applications web robustes et
distribuées, déployées et exécutées sur un serveur
d'applications
12
Description JavaEE
 Java EE (Java Enterprise Edition), est une
spécification du langage de programmation java
écrite et maintenue par SUN pour la conception, le
codage et le déploiement des applications
d'entreprises basées sur le modèle client-serveur.
Toute implémentation de cette spécification
contient un ensemble d’extensions au framwork Java
standard JSE afin de faciliter la création
d’applications réparties et multi-niveaux.

13
Description JavaEE
 On parle généralement de plateforme J2EE pour
désigner l'ensemble constitué des services
(API) offerts et de l'infrastructure
d'exécution

 Services = les API ( jsp, javamail, jndi, rmi, servlet, ...)

 Infrastructure = les serveurs d'application et les


conteneurs.

14
Evolution de la technologie JavaEE
 Standard en évolution depuis 1997 avec J2EE 1.0,
actuellement on trouve la version javaEE 8 en 2017.
 Au début les applications Web multi-tiers (n-tiers) :
 Présentation (Servlets puis JSP), essentiellement basées sur HTTP
 Logique métier : EJB
 Accés aux données : JDBC
 Puis infrastructure de support standard pour
Application d'entreprise réparties
Technologies de services standards (JTA, JMS, JCA, Web
Services)
Evolution des progiciels ( ERP) existants vers JavaEE

15
Principes de fonctionnement
 Le client et le serveur doivent se parler via HTTP
 un serveur HTTP de base ne peut pas gérer votre application
 le serveur d'applications va :
 récupérer les requêtes HTTP issues des clients
 les mettre dans des boîtes, des objets, que votre code sera capable de
manipuler
 faire passer ces objets à votre application, via le conteneur
 renvoyer des réponses HTTP aux clients, en se basant sur les objets
retournés par votre code

16
L’architecture Trois-tiers

• La couche de présentation :
 C'est la partie de l'application visible et interactive avec les
utilisateurs. Elle peut prendre la forme d'une application
graphique (Swing, AWT,..) soit en forme de pages Html.

 La couche présentation relaie les requêtes de l'utilisateur à


destination de la couche métier, et en retour lui présente les
informations renvoyées par les traitements de cette couche.
Il s'agit donc ici d'un assemblage de services métiers et
applicatifs offerts par la couche inférieure.
17
L’architecture Trois-tiers

 La couche Métier
C'est la partie fonctionnelle de l'application, elle implémente la
« logique », décrit les traitements que l'application effectue
sur les données en fonction des requêtes des utilisateurs. La
couche métier offre des services applicatifs et métier à la
couche présentation. Pour fournir ces services, elle s'appuie,
le cas échéant, sur les données du système, accessibles au
travers des services de la couche inférieure. En retour, elle
renvoie à la couche présentation les résultats qu'elle a
calculés.
18
L’architecture Trois-tiers

Couche de d'accés aux données :


 C'est la partie qui gère l'accès aux de données du système. Ces données
peuvent être propres au système, ou gérées par un autre système. Les
services de cette couche sont disponibles pour la couche métier. Si les
données sont propres au système on parle de couche de persistance.
Si elles ne sont pas stockées par le système considéré, il s'appuie sur la
capacité d'un autre système à fournir ces informations.

19
Architecture Java EE

20
Les « containers » JavaEE

• Les applications multi-tiers sont difficiles à écrire :


 Beaucoup de code entrelacé pour gérer les transactions,
l’état, etc.

• Container: Sert d’interface entre les fonctionnalités de bas


niveau qui sont spécifiques à une plateforme

• Avant de pouvoir exécuter un composant web, EJB ou


d’application client:
 L’assembler dans un module J2EE
 Le déployer dans son conteneur

21
Architecture Java EE
Types de container

Exemples:
Conteneur Web
Tomcat : http://www.apache.org
Jetty : http://jetty.mortbay.org/jetty/index.html
Conteneur EJB3
22
EasyBeans:http://www.easybeans.net/xwiki/bin/view/Main/WebHome
Les Composants JEE
Une implémentation JEE peut contenir les API suivantes :
 Servlet : Conteneur Web
 Portlet : Conteneur Web (extension de l’API Servlet)
 JSP (JavaServer Pages) : Framework Web
 JSF (JavaServer Faces) : Framework Web, extension des JSP
 EJB : Composants distribués transactionnels, utilisé pour
coder la logique métier des applications
 JNDI : API de connexion à des annuaires, LDAP, et espace de
noms d’objets.
 JAXB : API de sérialisation par XML
 JAXR : API de gestion des registres XML
 Java RMI : API de communication distante entre des objets
Java
23
Les Composants JavaEE
 JDBC : API de connexion à des bases de données
 JMS (Java Message Service): API de comm asynchrone par
message
 JCA : API de connexion, notamment à des PGI
 JavaMail : API de gestion des mails
 JMX : Extension d’administration des applications
 JTA : API de gestion des transactions
 JAXP (Java API for XML Processing ) : API d’analyse XML
 JAXM : API de communication asynchrone par XML
 JAX-RPC : API de communication synchrone par XML,
 Java IDL : API de communication entre objets Java et objets
non-Java, via le protocole CORBA
24
Les Composants JavaEE
les API qui font partie d'une plateforme javaEE, sont
classées suivant trois familles distinctes:
 1- Les composants :
 On distingue habituellement deux familles de
composants:
 Les composants web : Servlets et JSP. Il s'agit de la
partie chargée de l'interface avec l'utilisateur
 Les composants métier : EJB. Il s'agit de composants
spécifiques chargés des traitements des données
propres à un secteur d'activité (on parle de logique
métier) et de l'interfaçage avec les bases de données.
25
Les Composants JavaEE
 2- Les services:
les services à leurs tours peuvent être classés par
catégories :
Les services d'infrastructures : il en existe un grand
nombre, défini ci-dessous :
 JDBC (Java DataBase Connectivity) est une API d'accès aux
bases de données relationnelles.
 JNDI (Java Naming and Directory Interface) est une API
d'accès aux services de nommage et aux annuaires
d'entreprises tels que DNS, NIS, LDAP, etc.
 JTA/JTS (Java Transaction API/Java Transaction Services)
est une API définissant des interfaces standard avec un
gestionnaire de transactions. 26
Les Composants JavaEE
 Les services d'infrastructures (Suite)
 JTA/JTS (Java Transaction API/Java Transaction
Services) est une API définissant des interfaces standard
avec un gestionnaire de transactions.
 JCA (J2EE Connector Architecture) est une API de
connexion au système d'information de l'entreprise,
notamment aux systèmes dits «Legacy» tels que les ERP.
 JMX (Java Management Extension) fournit des
extensions permettant de développer des applications
web de supervision d'applications.
27
Les Composants JavaEE
3- Les services de communication :
 JAAS (Java Authentication and Authorization Service) est
une API de gestion de l'authentification et des droits
d'accès.
 JavaMail est une API permettant l'envoi de courrier
électronique.
 JMS (Java Message Service) fournit des fonctionnalités
de communication asynchrone (appelées MOM pour
Middleware Object Message) entre applications.
 RMI-IIOP est une API permettant la communication
synchrone entre objets.
28
correspondance des tiers dans le
modèle JEE
 Couche de présentation : Servlets et JSP
 Couche logique du métier : EJB
 Couche de persistance : JDBC, DAO,
Frameworks (Hibernate, Ibatis ...)

29
Les Servlets

30
Le Protocole HTTP
 HTTP :HyperText Tranfert Protocol
 Protocole qui permet au client de récupérer des documents du serveur
 Ces documents peuvent être statiques (contenu qui ne change pas : HTML, PDF,
Image, etc..) ou dynamiques ( Contenu généré dynamiquement au moment de la
requête : PHP, JSP, ASP…)
 Ce protocole permet également de soumissionner les formulaires
 Fonctionnement (très simple en HTTP/1.0)
 Le client se connecte au serveur (Créer une socket)
 Le client demande au serveur un document : Requête HTTP (GET/POST)
 Le serveur renvoi au client le document (status=200) ou d’une erreur
(status=404 quand le document n’existe pas)
 Déconnexion

31
Dialogues HTTP
 Types de dialogue
◦ Récupération d’un document
 méthode GET
◦ Soumission d’un formulaire
 méthodes GET ou POST
◦ Envoi de Document et Gestion de Site
 méthodes PUT, DELETE
 Méthode HEAD (Récupération des infos sur le
document).

32
Méthodes du protocole HTTP

Une requête HTTP peut être envoyée en utilisant les méthodes


suivantes:
 GET : Pour récupérer le contenu d’un document
 POST : Pour soumissionner des formulaires (Envoyer, dans la
requête, des données saisies par l’utilisateur )
 PUT pour envoyer un fichier du client vers le serveur
 DELETE permet de demander au serveur de supprimer un
document.
 HEAD permet de récupérer les informations sur un
document (Type, Capacité, Date de dernière modification
etc…)

33
Description du servlet
 Une servlet est une classe Java , exécutée
par un moteur de servlets, fonctionnant
du côté serveur au même titre que les
langages de script côté serveur tels que
ASP ou bien PHP
 Les servlets permettent donc de gérer
des requêtes HTTP et de fournir au client
une réponse HTTP dynamique.

34
Description du servlet

 Permettre la programmation d'applications coté


serveur.
 Permettre l'extension d'un serveur Web en java.
 Permettre la construction d'application Web
dynamique.

35
Description du servlet

 Un servlet lit les données envoyées par un


client Web (transmises par le serveur)
– Données explicites (Formulaire)
– Données implicites (Request Header)
 Il génère un résultat.
 Il envoi le résultat au client:
– Données explicites (Page HTML)
– Données implicites (Response Header, Status
code)
36
Avantages des Servlets
 Efficacité
Utilisent des threads plutôt que des processus
 Pratique
Librairie très développée (moins que PHP mais plus
consistante)
 Portable
Déployable quelque soit le serveur (ou presque)
 Sécurisé
Fonctionne dans une machine virtuelle (plus maitrisable)
• Pas cher
Nombreux serveurs gratuits

37
Architecture du package
servlet.jar
Servlet

• Toutes les servlets implémentent GenericSrvlet


directement ou indirectement service()
l'interface Servlet, en dérivant une
classe qui l'implémente: c'est-à-dire
généralement la classe HttpServlet, HttpServlet

elle-même issue de GenericServlet. doPost()


doGet()

• La classe GenericServlet
(javax.servlet.GenericServlet) définit NotreServlet
une classe abstraite (implémentation doPost()
de base de l'interface Servlet). doGet()

38
Gestion des servlets

Moteur de
Servlets
Créer un pool Thread Thread
de threads
Instancier la servlet
Servlet
Appeler la méthode init()
Initialisation
Affecter une requête à un thread Appeler la méthode service()
Requête HTTP 1
Exécution
Affecter une requête à un thread Appeler la méthode service()
Requête HTTP 2 service

Réponse HTTP 1 Exécution


service
Réponse HTTP 2

Terminer le pool de threads


Appeler la méthode destroy()

39
Cycle de vie d’une Servlet
• Le serveur crée un pool de threads auxquels il va
pouvoir affecter chaque requête

• La servlet est chargée au démarrage du serveur ou


lors de la première requête

• La servlet est instanciée par le serveur

• La méthode init() est invoquée par le conteneur


Lors de la première requête, le conteneur crée les
objets Request et Response spécifiques à la
requête
40
Cycle de vie d’une Servlet
• La méthode service() est appelée à chaque requête
dans un nouveau thread. Les objets Request et
Response lui sont passés en paramètre

 Grâce à l'objet request, la méthode service() va


pouvoir analyser les informations en provenance du
client

 Grâce à l'objet response, la méthode service() va


fournir une réponse au client

 La méthode destroy() est appelée lors du


déchargement de la servlet, c'est-à-dire lorsqu'elle
n'est plus requise par le serveur. La servlet est alors
41
signalée au garbage collector
Fonctionnement du Servlet
 Lorsqu'une servlet est appelée par un client, la
méthode service() est exécutée. Celle-ci est le
principal point d'entrée de toute servlet et
accepte deux objets en paramètres:

◦ L'objet HttpServletRequest encapsulant la requête du


client, c'est-à-dire qu'il contient l'ensemble des
paramètres passés à la servlet (informations sur
l'environnement du client, cookies du client, URL
demandée, ...)

◦ L'objet HttpServletResponse permettant de renvoyer


une réponse au client (envoyer des informations au
navigateur).
42
Développement d’une Servlet
 Afin de développer un servlet fonctionnant avec
le protocole HTTP, il suffit de créer une classe
étendant HttpServlet (qui implémente elle-même
l'interface Servlet).
 La classe HttpServlet (dérivant de GenericServlet)
permet de fournir une implémentation de
l'interface Servlet spécifique à HTTP.
 La classe HttpServlet redéfinit la méthode service
en lisant la méthode HTTP utilisée par le client,
puis en redirigeant la requête vers une méthode
appropriée.
 Les deux principales méthodes du protocole
HTTP étant GET et POST, il suffit de redéfinir la
méthode adéquate afin de traiter la requête : 43
Développement d’une Servlet
 Si la méthode utilisée est GET, il suffit de redéfinir la
méthode :
◦ public void doGet(
HttpServletRequest request,
HttpServletResponse response
)
 Si la méthode utilisée est POST, il suffit de redéfinir la
méthode :
◦ public void doPost(
HttpServletRequest request,
HttpServletResponse response
)

44
HttpServletRequest
Méthode Description
Récupère la méthode HTTP utilisée par le
String getMethod()
client(retourne le type de requete)
Récupère la valeur de l'attribut Key de l'en-
String getHeader(String Key)
tête
String getRemoteHost() Récupère le nom de domaine du client
String getRemoteAddr() Récupère l'adresse IP du client
Récupère la valeur du paramètre
Key (clé) d'un formulaire.
String getParameter(String
Lorsque plusieurs valeurs sont
Key)
présentes, la première est
retournée
Récupère les valeurs correspondant au
paramètre Key (clé) d'un formulaire,
String[] getParameterValues(String c'est-à-dire dans le cas d'une sélection
Key) multiple (cases à cocher, listes à choix
multiples) les valeurs de toutes les entités
sélectionnées
Retourne un objet Enumeration contenant la
Enumeration getParameterNames() liste des noms des paramètres passés à la
requête
String getServerName() Récupère le nom du serveur 45
String getServerPort() Récupère le numéro de port du serveur
HttpServletRequest
Exemple : Quelques méthodes de l’objet request

46
HttpServletResponse

Méthode Description
String setStatus(int StatusCode) Définit le code de retour de la réponse
void setHeader(String Nom, String
Définit une paire clé/valeur dans les en-têtes
Valeur)

Définit le type MIME de la réponse


void setContentType(String
HTTP, c'est-à-dire le type de
type)
données envoyées au navigateur
void setContentLength(int len) Définit la taille de la réponse

Retourne un objet PrintWriter


permettant d'envoyer du texte
au navigateur client. Il se charge
PrintWriter getWriter()
de convertir au format approprié
les caractères Unicode utilisés
par Java
Définit un flot de données à envoyer au client, par
ServletOutputStream getOutputStream() 47
l'intermédiaire d'un objet ServletOutputStream, dérivé
de la classe java.io.OutputStream
Première Servlet
package web;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class FirstServlet extends HttpServlet {


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE> Titre </TITLE></HEAD>");
out.println("<BODY>");
out.println("Ma première servlet");
out.println("</BODY>");
out.println("</HTML>");
out.close();}}
48
Structure d’un projet Web JavaEE
• Le dossier src contient les classes java

• Le byte code est placé dans le dossier


build/classes

• Les dossier WebContent contient les


documents Web comme les pages
HTML, JSP, Images, JavaScript, CSS …

• Le dossier WEB-INF contient les


descripteurs de déploiement comme
web.xml

• Le dossier lib permet de stocker les


bibliothèques de classes java
(Fichiers.jar)
49
Déploiement d’une Servlet
 Pour que le serveur j2ee reconnaisse une servlet, celle-ci doit
être déclarée dans le fichier web.xml qui se trouve dans le
dossier WEB-INF
 Le fichier web.xml s’appelle le descripteur de déploiement de
Servlet.
 Ce descripteur doit déclarer principalement les éléments
suivant :
Le nom attribué à cette servlet
 La classe de la servlet
 Le nom URL à utiliser pour faire appel à cette servlet via
le protocole HTTP.

50
Web.xml

51
Servlet3.0
 Pour un projet web J2EE, utilisant un module web, version 3.0, le fichier
web.xml n’est pas nécessaire.
 Dans ce cas, le déploiement d’une servlet peut se faire en utilisant des
annotations:
package web;
import java.io.*; import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
@WebServlet(name="cs",urlPatterns={"/fs","*.do"})
public class FirstServlet extends HttpServlet {
}

52
53
Merci pour
votre attention

54

Vous aimerez peut-être aussi