Java EE 101 : Fondements et développement d’applications multi-tiers avec Servlets et EJB

Page 1 sur 36Lecteur de document UniversityLib

Java EE 101 : Fondements et développement d’applications multi-tiers avec Servlets et EJB

Programming, Java EE · course

Voir tous les documents en programmation

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