COURS
INTRODUCTION
J2EE
1
JAVA &?
Java 1 : El ments de base
J2SE (Java Standard Edition): I/O, TCP -IP,
Thread, AWT, Applet,&
J2EE (Java Entreprise Edition): Servlet, JSP,
EJB, JDBC,&
J2ME (Java Micro Edition) : Applications
mobiles
2
J2EE OU JAVA EE
(ENTREPRISE EDITION)
J2EE est une plateforme pour le
d veloppement dapplications
dentreprises distribu es (en particulier
Web) multi-niveaux bas es sur des
composants.
3
APPLICATION DENTREPRISE ?
4
UN PETIT RAPPEL&
Une application informatique peut tre
d coup e en trois niveaux d'abstraction
:
la couche de pr sentation (IHM) :
permet l'interaction de l'application
avec l'utilisateur
La couche applicative (m tier):
d crivant les travaux r aliser par
l'application
La couche des donn es (dacc s au
donn es):regroupant l'ensemble des
m canismes permettant la gestion des
informations stock es par l'application
Ces trois niveaux peuvent tre imbriqu s
ou r partis de diff rentes mani res
entre plusieurs machines physiques
5
ARCHITECTURE 3-TIERS
Client
Tiers 1
Couche pr sentation
Couche m tier
Serveur dapplication
Couche donn es
Serveur de BD
Tiers 2
Tiers 3
6
Architecture 3- tiers
L'architecture trois tiers applique les
principes suivants :
" les donn es g r es de fa on par un
serveur centralis e
" la pr sentation est prise en charge
par le poste client
" la logique applicative est prise en
charge par un serveur interm diaire
Avantages:
" Ind pendance des niveaux :
facilit de maintenance,
d composition de la t che de
d veloppement,&
" Client all g (l ger)
7
ARCHITECTURE 3- TIERS
(INTERNET)
Client l ger: HTML, ACTIVEX,
APPLET,..
Serveur Web: CGI, PHP, ASP,
SERVLET,&
8
ARCHITECTURE N- TIERS
le
type d'architecture permet
de
Ce
serveur HTTP et de
soulager
logique
distribuer plus
applicative, ce qui facilite la r partition
de la charge entre tous les niveaux.
librement
la
9
ARCHITECTURE N- TIERS
(SUITE)
et
non
services
L'architecture n-tiers qualifie la
distribution d'application entre de
multiples
la
multiplication des niveaux de service
Cette distribution est facilit e par
l'utilisation de composants ``m tier'',
et
sp cialis s,
r utilisables
les
introduits
concepts orient s objets
ind pendants,
par
Ces composants rendent un service si
et
clairement
possible g n rique
capables de
sont
identifi .
communiquer entre eux et peuvent
donc coop rer en tant implant s
Advertisement
sur des machines distinctes
Ils
10
ARCHITECTURE J 2EE (N-TIERS)
HTML
Applet
Client
Pr sentation
Servlet
JSP
EJB
EJB
Serveur
Web +
conteneur
Web
Traitement
HTTP
Serveur
dapplication
+ conteneur
EJB
Traitement
m tier
Serveur BD
Acc s
donn es
1
1
LES API DE J2EE
Les API de J2EE peuvent se
r partir en trois grandes
cat gories :
1. Les composants :
Les composants web:
Servlets et JSP (Java Server Pages)
Il s'agit de la partie charg e de l'interface avec
l'utilisateur
Les composants m tier : EJB (Enterprise Java
Beans). Il s'agit de composants sp cifiques
charg s des traitements des donn es propres un
secteur d'activit et de l'interfa age avec les bases
de donn es.
12
LES API DE J2EE (SUITE)
2. Les services
d'infrastructures :
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
JTA/JTS (Java Transaction
API/Java Transaction Services) est
un 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,
13
LES API DE JEE (SUITE)
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
RMI-IIOP est une API permettant la
communication synchrone entre
objets
&.
14
SERVLET
J2EE
15
TERMINOLOGIE
Serveur Web ou Serveur Http:
- Programme sex cutant sur une machine
reli e Internet
- R pond
clients
requ tes
(navigateur web) et les traite (selon le
protocole HTTP)
des
aux
- Retourne des pages HTML
- Exemples: Netscape Entreprise Server,
Apache HTTP Server,..
Remarque: On appelle souvent Serveur
web la machine et le logiciel
URL: (Uniform Ressource Locator)
adresse qui permet de localiser une
ressource du Web , elle comporte : le
protocole, le nom du domaine, le chemin
dacc s et le nom de la ressource
demand e (fichier html)
Exemple :
http://fr.wikipedia.org/wiki/Uniform_Resource_L
ocator.html
16
Terminologie (suite)
Protocole HTTP: (Hyper Text Transfert
Protocol)
- Protocole de rapatriement de ressources
et de soumission de formulaires entre le
client et le serveur Web
- Une ressource est localis e partir dune
URL
- Principe g n ral:
Connexion,
Demande de ressource (GET),
Renvoi de la ressource ou dune erreur,
D connexion
Advertisement
17
PR SENTATION
SERVLET
Les servlets sont la base de la
programmation Web J 2EE
Toute la conception dun site Web en Java
repose sur les servlets
Pour la cr ation dapplications dynamiques
Classe java charg e dynamiquement, elle
tend les fonctionnalit s dun serveur web et
r pond des requ tes HTTP
dynamiquement
Permet de g rer des requ tes HTTP et de
fournir au client une r ponse HTTP
Sex cute dans un moteur de Servlet ou
conteneur de Servlet permettant d tablir le
lien entre la Servlet et le serveur Web
18
MOTEUR OU CONTENEUR
DE SERVLET
Logiciel qui permet lex cution des Servlets
Ex: TOMCAT, JBOSS
L e m ot e ur de Se r vl e t a s s u r e :
- l a c o n n e xi o n a ve c l e s e r ve u r W E B,
- l e d c o d ag e d e s r e q u te s e t l e c o d a g e d e s r p o n s es,
- l a i g u i l l age s u r l a b o n n e s e r vl e t ( e t l a b o n n e
a p p l i cati on) ,
- l a g e s t i on d e s s e s s i ons,
- l e c yc l e d e vi e d e s s e r vl e t s,
- l a g e s t i on e s t l a l l o c a tio n d e s t h r e a ds.
Les moteurs de servlet sont des plug -in (ex:
TOMCAT) pour des serveurs Web existants ou
bien des serveurs Web eux m mes (WebSphere)
Voir java.sun.com/products/servlet
Exemple : TOMCAT t l chargeable (en version
d'utilisation l mentaire) gratuitement
h t t p://j akarta .apa che.org /down l o ads/bi n/i nde x.h tml
Plug-in de Apache v1.3 ou plus, Microsoft IIS
v4.0 ou plus,
19
FONCTIONNEMENT
SERVLET
20
PROGRAMMER UNE
SERVLET
Utiliser deux paquetages :
javax.servlet : paquetage g n rique
javax.servlet.http : paquetage pour serveurs
Web
Ces paquetages sont int gr s dans
J2EE
Sous classer la classe &Servlet&
M thodes fondamentales d'une
Servlet
public void init ():
Appel e uniquement lors du 1er appel la Servlet
Effectue des op rations de param trage et dinitialisation de
la Servlet
public void service(&) :
Appel e pour chaque requ te re ue
Param tres: ServletRequest et ServletResponse
public void destroy() :
Suppression de linstance de la Servlet
Fermeture de connexion une BD, fermeture de fichiers&
21
CYCLE DE VIE DUNE
SERVLET
Avant
chargement
Chargement
Servlet
charg e
init( )
Servlet initialis e
Servlet ex cut e
service(...)
destroy( )
Servlet d charg e
22
CYCLE DE VIE DUNE
SERVLET (SUITE)
Chargement = chargement en
m moire du moteur de servlets.
Une Servlet est initialis e, utilis e
puis d truite Cycle de vie de la
Servlet
Une seule instance par Servlet est
utilis e
Le conteneur de servlets lance la
m thode service(&) chaque
requ te.
Une requ te client a pour r sultat
un nouveau Thread transmis
service ( )
23
CR ATION DE SERVLET
Une Servlet doit impl menter l'interface
javax.servlet.Servlet et
javax.servlet.ServletConfig
Interface Servlet
+ void init(&)
+ void service(&)
+ void destroy()
+ ServletConfig getServletConfig ()
+ String getServletInfo ()
Interface ServletConfig
+ String getInitParameter (&)
+ Enumeration getInitParameterNames ()
+ String getServletName ()
+ ServletContext getServletContext ()
L'API Servlet fournit des classes qui proposent
d j une
Impl mentation, comme:
"HttpServlet : pour la conception de Servlets
sp cifiques au protocole HTTP
24
CR ATION DE
SERVLET (SUITE)
On tend HTTPServlet pour construire des
Servlets propre aux protocoles HTTP
la m thode service(...) dans HttpServlet :
public void service (HttpServletRequest req,
HttpServletResponse resp)
Advertisement
throws
ServletException,
java.io.IOException
redirige la requ te suivant son type http.
" M thode HTTP GET => Red finir doGet(&)
" M thode HTTP POST => Red finir doPost(&)
25
LA CLASSE
HTTPSERVLETREQUEST
Encapsule la requ te HTTP et fournit des
m thodes pour :
r cup rer les param tres pass s au
serveur par le client
acc der aux informations du client et de
l'environnement du serveur
InpuStream geInputStream (): lit un flux
doctets partir du client
Reader getReader(): lit un flux de
caract res partir du client
String getServerName() : retourne le
nom du serveur
String getParameter(String name) :
retourne la valeur d'un param tre
String[ ] getParameterNames() :
retourne le nom des param tres
String getRemoteAddr() : retourne l'IP
du client
& (voir l'API Servlets)
26
LA CLASSE
HTTPSERVLETRESPONSE
Utilis e pour construire un message de
r ponse HTTP renvoy au client
Contient les m thodes n cessaires pour
d finir le type de contenu, en -t te et code
de retour un flot de sortie pour envoyer
des donn es (par exemple HTML) au
client
PrintWriter getWriter() : permet
denvoyer des donn es texte au client
ServletOutputStream getOutputStream()
: flot pour envoyer des donn es binaires
au client
void setContentType(String) : d finit le
type de contenu MIME
void sendRedirect (URL) : reirige vers
une une autre ressources (Servlet, JSP,
HTML)
&
Remarqe: MIME (Multipurpose Internet
Mail Extension) standard pour pr ciser le
format des donn es
Exemple:
ContentType : text/plain
ContentType : text/html
27
EXEMPLE
SOUS CLASSER
HTTPSERVLET
import javax.servlet.*;
import javax.servlet.http .*;
import java.io.*;
public class MaServlet extends HttpServlet {
//Traiter la requ te HTTP Get
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throw s
ServletException ,
IOException {
response.setContentType ("text/html");
PrintWriter out = response.getWriter ();
out.println ("<html>");
out.println ("<head><title>Bonjour</title></head>");
out.println ("<body>");
out.println ("<p>Bonjour, je suis la Servlet </p>");
out.println ("</body></html>");
}
}
28
INVOQUER UNE SERVLET
Une Servlet est un programme Java qui
tourne sur la machine o est install le
moteur de Servlet, et qui est
invoqu
lorsquun navigateur client appelle lURL
li e ce programme .
Une
servlet
appel e
nest
directement,elle ne lest qu travers
une URL
pas
Exemple : la Servlet MaServlet.java (qui
sera compil e en MaServlet.class) peut
tre appel e
la page
la Servlet
HTML MaPage.htm et cest
MaServlet.class qui sex cute.
jappelle
lorsque
Le fichier web.xml est le fichier le plus
il
important dune application J2EE car
contient le param trage des servlets
Chaque Servlet doit tre d crite dans le
fichier web.xml et le lien de la servlet avec
lURL y figure
29
LE FICHIER WEB.XML
(EXEMPLE)
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun
Microsystems,Inc.//DTD Web Application
2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app >
<servlet >
Advertisement
<servlet-name >ServletBonjour </servlet-name >
<servlet-class >MaServlet </servlet-class >
</servlet >
<servlet-mapping >
<servlet-name >ServletBonjour </servlet-name >
<url-pattern >/MaPage</url-pattern >
</servlet-mapping >
</web-app >
30
LE FICHIER WEB.XML (SUITE)
La d claration de la servlet se fait dans l l ment
XML <servlet >:
"<servlet-name >est le nom interne de la Servlet, qui
lidentifie de fa on unique.
"<servlet-class >est la classe Java associ e la
servlet
Le lien entre l URL et la servlet s effectue gr ce
l l ment <servlet-mapping >:
"<servlet-name >est le nom interne donn la
servlet (qui doit tre identique celui indiqu dans
l l ment <servlet >)
"<url-pattern > est l URL permettant de faire le lien
avec la servlet.
Le fichier web.xml s appelle le descripteur de
d ploiement .On peut y indiquer autant de
servlets que l on veut.
31
COMMENT INVOQUER UNE
SERVLET PAR LURL LI E LA
SERVLET
On tape ladresse dans le navigateur
Exemple : http://localhost:8080/MaPage?nom=toto
OU
Par linterm diaire dun lien ou par
linterm diaire dun bouton de validation
de formulaire (qui activerait la Servlet).
Exemple de formulaire:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
</head>
<body>
<form action="http://localhost:8080/MaPage"
method="get">
<p>Entrer votre nom : <input type="text"
name="nom"></p>
<input type="submit" value= " envoyer " >
</form>
</body>
</html>
32
EX CUTION DE LA
SERVLET
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MaServlet extends HttpServlet {
//Traiter la requ te HTTP Get
public void doGet (HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
String n = request.getParameter("nom");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
if (n== null) n ="";
out.println("<html>");
out.println("<head><title>Servlet1</title></head>");
out.println("<body>");
out.println("<p>hello " + n+"</p>");
out.println("</body></html>");
}
}
33
LES VERSIONS DES SERVLETS
34
EX CUTION DE LA
SERVLET
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
// annotation d finissant l'url associ e cette
// servlet (servletMapping)
@WebServlet (name= "ServletBonjour", urlPatterns=
"MaPage" )
public class MaServlet extends HttpServlet {
//Traiter la requ te HTTP Get
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
String n = request.getParameter("nom");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
if (n== null) n ="";
out.println("<html>");
out.println("<head><title>Servlet1</title></head>");
out.println("<body>");
out.println("<p>hello " + n+"</p>");
out.println("</body></html>");
}
}
35
AVANTAGES DES
SERVLETS
Portabilit : niveau syst mes et
serveurs
Efficacit : semi compil e, multithread
Puissance : communication
bidirectionnelle avec le serveur web,
cha nage de servlets,
Pratique : gestion des cookies, suivi
des sessions, manipulation simple du
protocole HTTP
36