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

Browse all programmation documents

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