01 Jee
01 Jee
01 Jee
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é.
8
Contraints d’une application
d’entreprise
Robustesse (tolérance aux pannes, haute disponibilité)
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
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 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
19
Architecture Java EE
20
Les « containers » JavaEE
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
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
35
Description du servlet
37
Architecture du package
servlet.jar
Servlet
• 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
39
Cycle de vie d’une Servlet
• Le serveur crée un pool de threads auxquels il va
pouvoir affecter chaque requête
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)
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