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 d’applications
d’entreprises distribuées (en particulier
Web) multi-niveaux basées sur des
composants.
3
APPLICATION D’ENTREPRISE ?
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 (d’accè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 d’application
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 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 d’application + conteneur EJB
Traitement métier
Serveur BD
Accès données
1 1
LES API DE J2EE
Les API de J2EE peuvent se
Publicité
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 s’exé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 d’accè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 d’une
URL
- Principe général: Connexion, Demande de ressource (GET), Renvoi de la ressource ou d’une erreur, Déconnexion
17
PRÉSENTATION SERVLET
Les servlets sont la base de la
programmation Web J 2EE
Toute la conception d’un site Web en Java
repose sur les servlets
Pour la création d’applications dynamiques
Classe java chargée dynamiquement, elle
étend les fonctionnalités d’un 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
S’exé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 l’exé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
Publicité
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 d’initialisation de
la Servlet
– public void service(…) : Appelée pour chaque requête reçue Paramètres: ServletRequest et ServletResponse
– public void destroy() :
Suppression de l’instance de la Servlet Fermeture de connexion à une BD, fermeture de fichiers…
21
CYCLE DE VIE D’UNE 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 D’UNE 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)
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
d’octets à 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
d’envoyer 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.*;
Publicité
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é lorsqu’un navigateur client appelle l’URL liée à ce programme .
Une
servlet
appelée n’est directement,elle ne l’est 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 c’est MaServlet.class qui s’exécute.
j’appelle
lorsque
Le fichier web.xml est le fichier le plus il important d’une 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 l’URL 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 > <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
l’identifie 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 L’URL LIÉE À LA SERVLET
On tape l’adresse dans le navigateur Exemple : http://localhost:8080/MaPage?nom=toto
OU
Par l’intermédiaire d’un lien ou par
l’intermédiaire d’un 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