J2EE: Création des Applications Web d'Entreprise Basées Composants

Apress
Page 1 sur 146Lecteur de document UniversityLib

J2EE: Création des Applications Web d'Entreprise Basées Composants

ENSA · Software Development, Enterprise Web Applications · lab

Voir tous les documents en gestion et économie

J2EE: CR ATION DES

APPLICATIONS WEB D'ENTREPRISE

BAS ES COMPOSANTS

Pr. Youn s EL BOUZEKRI EL IDRISSI

[email protected]

AU: 2016/2017

R F RENCES (AVALABLE 4 STUDENTS)

Beginning Java EE, de Antonio Goncalves Apress

Edition 2013.

J2EE Developer's Handbook de Paul J. Perrone, Venkata

S.R. "Krishna" R. Chaganti et Tom Schwenk. Felleuitter

edition 2003;

EJB & JSP: Java On The Edge, Unlimited Edition, de

Lou Marco, 2010;

JEE guide de d veloppement d'application Web en Java,

de Jerome Laafousse, 2009.

2

PLAN DU COURS

Introduction

L'architecture Java Entreprise Edition

Les composants

Les Conteneurs JEE

Les services et les API

Le serveur Java Tomcat

Le framework Struts

Le framework Hibernate

Les EJBs

3

LES PILIERS D'UNE APPLICATION

Pr sentation

Prise en charge des jeux d'affichage (affichage HTML en

cas du web)

M tier

Appeler aussi couche applicative, tape o l'ex cution des

application se d roule (la g n ration du code HTML en cas

du Web).

G rer les requ tes SQL et les r sultats

Persistance

Propre au serveur de BD: Gestion de la correspondance

entre le serveur m tier avec celui de la base de donn es.

4

MOD LE CENTRALIS

Tout est sur la m me machine

Pr sentation

M tiers

Persistance

5

A DEUX NIVEAUX

Client / serveur de base, avec 2 l ments

Client : pr sentation, interface utilisateur

Serveur : partie persistance, gestion physique des donn es

Les services m tier / la partie applicative peuvent tre

Soit enti rement cot client, int gr s avec la pr sentation

La partie serveur ne g re que les donn es

Ex : application acc dant une BDD distante

Soit enti rement cot serveur

L'interface utilisateur peut m me tre ex cut e sur le serveur

Fonctionnement mode terminal / mainframe

Soit d coup s entre la partie serveur et la partie client

6

DEUX NIVEAUX (2-TIERS)

Pr sentation

M tiers

Persistance

Client

Serveur

Pr sentation

M tiers

Persistance

7

DEUX NIVEAUX: IL EST AUSSI ACCEPTABLE

Pr sentation

Pr sentation

M tiers

Persistance

Client

Serveur

Pr sentation

M tiers

M tiers

Persistance

8

TROIS NIVEAUX (3-TIERS)

Les 3 principaux tiers s'ex cutent chacun sur une machine

diff rente:

Pr sentation

Machine client

Applicatif / m tier

Serveur d'applications

Persistance

Serveur de base de donn es

Pr sentaion

M tiers

Persistance

Client

Serveur

d'application

Serveur de base

de donn es

9

N NIVEAUX (N-TIERS)

Par rapport 3-tiers: ajoute des couches suppl mentaires;

Pr cis ment la couche m tier n'est pas atomique

(monolithique), elle est compos e d'un ensemble de

services;

Interaction horizontale:

Les services (application) m tiers peut interagir avec d'autres

services m tiers (composition de services);

Interaction verticale;

Les services m tiers peuvent utiliser des services techniques (non

m tiers) :

R pertoire (LDAP)

Messagerie;

S curit

10

NB: Chaque service correspond un niveau: N niveaux

N NIVEAUX: DISCUSSION

Int r ts d'avoir plusieurs services / couches (3 ou plus)

R utilisation de services existants;

D couplage des aspects m tiers et techniques et des services

entre eux : meilleure modularit ;

Facilite l' volution : nouvelle version de service;

Facilite passage l' chelle : volution de certains services:

Permet de faire voluer les services un par un sans modification du

reste de l'application.

Inconv nients

En g n ral, les divers services s'appuient sur des technologies

tr s vari es : n cessit de g rer l'h t rog n it et

l'interop rabilit :

Utilisation de framework / outils suppl mentaires.

Les services tant plus d coup s et distribu s, pose plus de

11

probl mes li s la distribution

N-TIERS AVEC LE WEB

12

TIERS CLIENT

Un navigateur

Interpr te les pages HTML ou XML;

Ex cute les applets ou du code JavaScript;

Poss de diff rents niveaux de s curit configurable;

Peut interagir avec un serveur d application via HTTP.

Application cliente

Diff rente quun navigateur, elle ne se base pas sur HTTP

Communique via RPC, Corba, RMI,JRMP, IIOP, TCP/IP, ...

13

TIERS WEB: SERVEUR

Fourni du contenu Web (HTML, &)

Communique via HTTP, ...

Traite des requ tes: CGI par exemple

Peut tre un proxy frontal d un serveur d applications:

Ex: Apache, Tomcat

14

TIERS D'APPLICATION: SERVEUR

Permettent d'ex cuter des composants;

Conformes une technologie, JEE par exemple;

Ind pendants du visuel et de l acc s aux donn es;

D ployable dans un environnement:

Permettant une large possibilit d extension de puissance;

Saffranchissant du lieu.

Le composant le plus volu est un Enterprise Java

Bean ;

Ex: Jonas, GlassFish, Apache Geromino, WebSpher,

WebLogic&.

15

TIERS DONN ES: PERSISTANCE

Stockage et manipulation des donn es de l'application

Plusieurs supports physiques:

Fichiers binaires, textes de base ;

Fichiers XML;

Une base de donn es ou un ensemble de bases de donn es.

Mode d'emploi:

N cessit d'envoyer distance des requ tes (types SQL) et

d'en r cup rer les r sultats.

Deux proc dures:

Soit c'est natif dans le langage utilis (ex : PHP);

Soit on passe par des frameworks ou des API d di s.

16

PERSISTANCE: G N RALIT S

APIs de persistance:

RDA (Remote Data Access) de l'ISO;

ODBC (Open Data Base Connectivity) ;

JDBC (Java Data Base Connectivity) ;

Fonctionnement g n ral:

Gestion de requ tes SQL mais avec ind pendance du SGBDR utilis

(mySQL, PostgreSQL, Oracle ...).

En g n ral, seule la phase de connexion au SGBDR est sp cifique.

Frameworks de haut niveau

Ex: Hibernate (Sun, J2EE):

On d finit de mani re abstraite (via XML ) la structure des donn es

manipuler;

L'outil transforme des donn es relationnelles vers des objets;

17

L'outil fait en interne le lien avec le support et les objets persistants.

SERVEUR D'APPLICATIONS

Services d'administration:

D ploiement des composants (ex: servlets) ;

Structuration en serveur, application;

Gestion d'annuaires (ex: JNDI);

Gestion des sources de donn es.

Publicité

Mod le de s curit applicable:

Au niveau de chaque composant;

Au niveau de chaque m thode.

18

J2EE: JAVA 2 PLATFORM ENTREPRISE EDITION

Il s'agit d'un standard et un ensemble de sp cification;

Les applications doivent respecter le standard;

Les applications sont d ployables dans tout

environnement (serveur) respectant la sp cification

J2EE;

Composants logiciels : EJB;

Applications orient es Web : JSP, Servlet;

Communication distance : Java RMI, IIOP, JMS

(communication par message), Web Services;

Gestion donn es distantes : JDBC, JPA (Java Persistance API);

Gestion d'annuaires (type LDAP) : JNDI;

Transactions : JTA.

19

J2EE ET LE N-TIERS

Pr sentation:

Avec client l ger (Html) ou client lourd (API).

Interaction avec la partie applicative sur le serveur:

Via JSP / Servlet pour un client l ger:

S'occupe de la logique de pr sentation.

Direct si client lourd (via un middleware type RMI).

Logique applicative:

R alis e par composants EJB;

Communication via Hibernate ou JDBC pour attaquer

BDD distante.

20

J2EE: 3-TIERS ET N-TIERS

Client lours

Client leger

Application

Conteneur

d'application

Base de

donn es

21

Serveur de BD

JSP/Servlet

Conteneur Web

Application

Conteneur

d'application

Serveur J2EE

Base de

donn es

Serveur de BD

21

J2EE: COMMUNICATION DE SERVEUR

Ref: www.oracle.com

22

APPLICATION J2EE 3-TIERS

Ref: www.oracle.com

23

APPLICATION J2EE 4 ET PERSISTANCE-TIERS

Ref: www.oracle.com

24

J2EE: EXEMPLE DE SERVEUR

GlassFish

Ref http:// / ifsic-DIC2-ARC-LSI-Architecture JEE / p9 (eric hebert

25

Ref: www.oracle.com

26

LES COMPOSANTS D'UNE APPLICATION J2EE

Ref: http://www.cmg.org/measureit/issues/mit18/m_18_6.html

27

ARCHITECTURE D'UNE APPLICATION J2EE

R f: http://www.cmg.org/measureit/issues/mit18/m_18_6.html

28

PROGRAMMATION C T SERVEUR

G N RATION DES PAGES HTML

Servlet & JSP

29

OBJECTIF: PAGES HTML DYNAMIQUES

G n ration du code HTML partir du serveur

Parfois accompagn du style de la page;

Visant un client l ger: Navigateur Web;

Envoi et r cup ration des donn es partir du navigateur;

Proc dures:

Ex cuter un code diff rent sur une plateforme afin de

produire du code HTML;

L'affichage ob ira plusieurs crit res:

Selon le type de donn es;

Selon le r le de l'utilisateur;

30

G N RATION DES PAGES DYNAMIQUES: APPROCHES

Ex cution d'un programme:

Un programme complet s'ex cute et g n re du contenu

HTML;

La page est enti rement dynamique;

Plus pr cis ment : les partie statiques existent mais elles sont

int gr es dans le code, pas crites directement en HTML standard;

Le navigateur demande l'ex cution d'un programme et

r cup re le code HTML g n r :

La demande d'ex cution est transparente : utilise URL standard.

31

G N RATION DES PAGES: APPROCHES II

Langages de scripts

Double type de contenu dans une page HTML

Partie statique : balises HTML standards avec contenu textuel;

Partie dynamique : du code crit dans un langage de script:

Ce code g n re du code HTML standard.

La page entrem le les parties statiques et dynamiques;

Quand un navigateur demande le contenu d'une page:

La partie dynamique est ex cut e et remplac e par le HTML

g n r ;

Le navigateur du client re oit donc uniquement du code HTML.

32

G N RATIONS DES PAGES: TECHNOLOGIES

Langage de script:

PHP;

Asp.net;

JSP.

Ex cution d'un programme

CGI;

Servlet.

33

TECHNOLOGIES

Protocole de communication:

HTTP: le client invoque l'ex cution des programmes dans

le serveur via ce protocole;

Serveur HTTP &/ou serveur d'application (conteneur)

Serveur HTTP;

Apache par exemple;

Conteneur d'application (eventuels EJBs):

GlassFish;

Tomcat &/ou Geronimo.

34

LES SERVLETS

Servlet est un programme Java avec des caract ristiques

particuli res:

Accessible par une URL donn e:

D tecter et r pondre des requ tes de l'utilisateur;

Chercher et invoquer le traitement correspondant;

G n rer une page Html et y mettre la r ponse;

HTML

35

SERVLET II

Applet: programme Java s'ex cutant au niveau client;

Servlet: Programme Java s'ex cutant au niveau serveur;

Classe Java avec ces m thodes et attributs;

L'ex cution et l'interactions diff rentes d'un objet Java

standard:

Pas d'appel de constructeur, pas de main();

A la cr ation de la servlet par le serveur d'ex cution:

Appel par le serveur d'ex cution de la fonction init(ServletConfig);

On peut y faire les actions qu'on ferait dans un constructeur;

Quand la servlet est d truite:

Appel par le serveur d'ex cution de destroy();

A red finir si on veut effectuer certaines actions la suppression de

36

la servlet.

SERVLET: REQU TE-R PONSE

Le client envoie les requ tes standards du HTTP:

Post, Get, Put, Delete&

Au niveau serveur chaque m thode re ue, son homologue

dans la Servlet est ex cut e:

Exemple: Requ te Post trouve doPost() dans la Servlet;

Les m thodes doXXX h ritent de la classe HttpServlet;

Les m thodes doXXX sont red finies pour y placer le

code ex cuter par la Servlet;

En pratique, pas besoin de red finir toutes les m thodes

(GET et POST minimum).

37

SERVLET: EXEMPLE GET

doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException

request : contient la description de la requ te du client;

response : utiliser pour envoyer la r ponse au client;

Toutes les m thodes doXXX(...) ont la m me signature.

38

HTTPSERVLETREQUEST REQUEST

Initialis par l'appel du client (le navigateur);

Donn es / informations sur la requ te envoy e par le

client;

On peut y r cup rer notamment:

Valeurs entr es pour un formulaire;

Une session pour g rer un tat d di chaque client;

Cookies du client envoy s avec la requ te;

Informations sur l'URL utilis e pour l'appel de la Servlet;

Login de l'utilisateur s'il s'est identifi .

39

HTTPSERVLETRESPONSE RESPONSE

A initialiser et utiliser par la Servlet pour g n rer le

r sultat envoyer au navigateur client;

D finir le type MIME des donn es envoy es

G n ralemet du code HTML

response.setContentType("text/html;charset=UTF-8");

R cup rer le flux de sortie pour envoyer les donn es:

PrintWriter getWriter()

Flux texte, typiquement pour du HTML

ServletOutputStream getOutputStream

Flux binaire pour des images, vid os ...

Ajouter/envoyer des donn es cot client

Cr er ou modifier un nouveau cookie;

40

Publicité

SERVLET: CARACT RISTIQUES

Unicit d'une Servlet:

Une Servlet n'est cr e qu'en une seule instance.

Si plusieurs clients acc dent l'URL d'une m me Servlet:

Appelle les m thodes sur cette instance unique.

Une Servlet poss de des attributs donc un tat:

Cet tat est permanent et conserv (tant que la Servlet

existe).

Il est acc d / modifi par tous les clients : tat global.

41

SERVLET: CARACT RISTIQUES II

Pour chaque client acc dant la Servlet, le serveur lui

contribue un tat (temporaire ou permanent):

Temporaire:

Pour chaque client, une session est cr e;

On peut lui associer des donn es via des couples cl (chaine) /

objet ;

La session a une dur e de vie configurable;

Exemple typique d'utilisation d'une session Panier d'un

utilisateur sur un site de vente en ligne : conserve les produits

choisis par l'utilisateur pendant son parcours sur le site.

Permanent:

Cr ation des cookies c t client.

42

SERVLET: STRUCTURE AVEC DOGET

import javax.servlet.*;

import javax.servlet.http.*;

public class SimpleServlet extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse res)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

try { out.println("<html>");

out.println("<body>");

out.println(<h1> Coucou </h1>);

out.println("</body>"); out.println("</html>");

}}

public void destroy() {&}

43

SERVLETS: CR ATION

Une Servlet peut tre charg e :

automatiquement lors du d marrage du serveur Web;

lorsque le premier client demande les services de la

Servlet.

Une fois charg es, les servlets restent actives dans

l'attente d'autres requ tes du client;

La Servlet peut utiliser toutes les fonctions du langage

Java lors de la cr ation de la r ponse;

Elle peut galement communiquer avec des ressources

externes tels que des fichiers ou des bases de donn es, ou

avec d'autres API (application ou composant Java).

44

Exemple: d'autres Servlets.

SERVLET: OPPORTUNIT S

Les servlets ex cutent un grand nombre de fonctions,

par exemple:

Une Servlet peut cr er et renvoyer une page Web HTML

compl te dont le contenu dynamique d pend de la nature

de la requ te du client;

Une Servlet peut simplement cr er une partie d'une page

Web HTML qui est int gr e une page HTML statique

existante;

Une Servlet peut traiter les connexions avec plusieurs

clients en acceptant les donn es en entr e de plusieurs

clients et en diffusant ces derniers des r sultats.

45

SERVLET: AVANTAGES

Les servlets sont ind pendantes des OS (Unix ou NT) et

des serveurs Web (Apache, IIS etc.) ;

Peuvent produire de l'HTML c t client (notamment

pour la consultation de la base), sur la base d'http;

Peuvent dialoguer avec des applets Java c t client avec

un protocole objets distribu s de type RMI;

S'appuient sur un langage vraiment standard : Java (et

non pas Java script ou Visual Basic);

Par rapport aux applets, le client est all g ;

Par rapport aux CGI, les servlets prennent en charge les

connexions des utilisateurs en multi-thread, qui nest

pas le cas des CGI.

46

SERVLET VS CGI

La plus grande diff rence entre les CGI et les servlets

est la performance;

Il n'y a qu'une seule machine virtuelle Java qui tourne

sur le serveur;

La Servlet est plac e en m moire une fois qu'elle est

appel e. Elle n'est pas remise en m moire jusqu' ce que

la Servlet change;

Une Servlet dont le code a t modifi peut tre r activ e

(c'est dire replac e en m moire) sans red marrer le

serveur ou l'application.

47

SERVLET VS CGI II

Req. CGI1

Req. CGI2

Req. CGI1

Processus Fils pour CGI1

Processus

Principal

Processus Fils pour CGI2

CGI

Processus Fils pour CGI1

Req.

servlet1

Req.

servlet2

Req. servlet1

Processus Principal

Thread

Thread

servlet1

Les servlets

Thread

servlet2

48

SERVLET: PERFORMANCE

Les servlets r sident en m moire, de ce fait leur

ex cution est tr s rapide;

L'information statique peut tre partag e par plusieurs

invocations de la Servlet:

Possibilit de partager cette information entre plusieurs

utilisateurs.

Les servlets sont modulaires, chaque Servlet peut

accomplir une tache sp cifique et ainsi vous pouvez les

rendre communicantes.

Moins il y a de calcul faire c t client, plus lapproche

servlet est int ressante.

49

L'INTERFACE SERVLET

java.lang.Object

|

+--javax.servlet.GenericServlet

|

+--javax.servlet.http.HttpServlet

Toutes les servlets implantent l'interface Servlet:

javax.servlet.Servlet

soit directement ou bien via une classe qui implante cette interface,

comme:

javax.servlet.GenericServlet

(paquetage javax.servlet)

javax.servlet.http.HttpServlet

(paquetage javax.servlet.http)

particuli rement d sign e pour des requ tes et r ponses HTTP

50

L'INTERFACE SERVLET

cette interface poss de les m thodes pour :

initialiser la servlet : init()

recevoir et r pondre aux requ tes des clients : service()

d truire la servlet et ses ressources : destroy()

la servlet est cr e puis initialis e (init() )

cette m thode nest appel e par le serveur quune seule fois lors du

chargement en m moire par le moteur de servlet.

Le service du client est impl ment (service() )

cette m thode est appel e automatiquement par le serveur chaque

requ te de client.

la servlet est d truite (destroy() )

cette m thode nest appel e par le serveur quune seule fois la fin

permet de lib rer des ressources (allou es par init() ).

51

UNE SERVLET WEB : HTTPSERVLET

Pour faciliter le traitement particulier des serveurs Web,

la classe Servlet est affin e en

javax.servlet.http.HttpServlet

2 m thodes remplacent service() de la classe m re :

doGet() : pour les requ tes Http de type GET;

doPost() : pour les requ tes Http de type POST.

la classe servlet doit obligatoirement contenir lune ou lautre de ces 2

m thodes red finies, choisies selon le mode denvoi du formulaire

HTML qui l'ex cute;

service() de HttpServlet appelle automatiquement la bonne

m thode en fonction du type de requ tes Http .

52

SERVLET: GESTION DES SESSIONS

Service avec/sans tat: Le serveur ne garde pas une

tra abilit sur la navigation du client:

Parfois, dans quelques applications il est tr s utile de

reconnaitre l'utilisateur afin de poursuivre son activit sur

le serveur.

Deux techniques:

Sessions;

Cookies.

53

SERVLET: GESTION DES SESSIONS II

Champ cach : Les serveur peut inclure des informations

cach es dans un formulaire afin d'identifier la

navigation du client:

<input type="hidden" name="sessionid" value="2013">

Le nom et la valeur de l'entr e sont automatiquement

inclus dans la m thode post ou get;

A chaque fois le navigateur envoie une requ te, le serveur

a la possibilit de suivre la navigation.

Inconv nient: Le cas du href le serveur ne pourra pas

poursuivre la navigation.

54

SERVLET: GESTION DES SESSIONS III

HttpSession: L'API Servlet fournit une interface

HttpSession qui permet de garder trace de l'utilisateur

travers plusieurs pages dans le m me site.

Il y a aussi la possibilit de stocker des informations

Publicité

propos de l'utilisateur dans le site (meta-donn es).

Le conteneur de Servlet utilise cette interface pour cr er

une session entre un client et serveur http.

La session persiste durant une p riode dans le temps (

d finir par le d veloppeur), travers plusieurs pages et

durant plusieurs connexions.

Exemple:

HttpSession session = request.getSession();

55

SERVLET: GESTION DES SESSIONS IV

Quelques m thodes utiles:

Request.getSession(true) // pr la cr ation de la session

getAttribute(String name)

Enumeration getAttributeNames()

long getCreationTime()

String getId()

long getLastAccessedTime()

boolean isNew()

setAttribute(String name, Object value)

56

SERVLET: GESTION DES SESSIONS V

Exemple:

doGest&..

HttpSession session = request.getSession(true);

Date createTime = new Date(session.getCreationTime());

Date lastAccessTime = new Date(session.getLastAccessedTime());

Int visitCount =0;

String visitCountKey = "visitCount";

String userIDKey = "userID";

String userID = "younes";

if (session.isNew()){

title = "Welcome to my website";

session.setAttribute(userIDKey, userID);

else {

}

visitCount = (Integer)session.getAttribute(visitCountKey);

visitCount = visitCount + 1;

userID = (String)session.getAttribute(userIDKey); }

session.setAttribute(visitCountKey, visitCount);

response.setContentType("text/html");

PrintWriter out = response.getWriter();

57

SERVLETS: GESTION DES COOKIES

Un cookie: fichier texte stock c t client enregistrant

toutes les interactions avec le serveur;

Les informations d'un cookie aide le serveur s'adapter

un client particulier;

C'est le serveur qui cr e le cookie dans le client. Lors d'une

connexion le client envoie le cookie au serveur.

Plusieurs caract ristiques:

Les informations de navigation;

Les donn es saisies par le client dans un formulaires;

Dur e de vie d finir par le serveur&

58

SERVLETS: GESTION DES COOKIES II

Utiliser les fonctions de l API des servlets&

cr er un cookie : classe Cookie,

crire/lire un cookie : addCookie(mycookie),

getCookies(),

positionner des attributs dun cookie : mycookie.setXxx(&)

Exemple d'envoi d'un cookie :

...

String nom = request.getParameter("nom");

Cookie myCookie = new Cookie("nom", "c le nom de

mon cookie");

...ici positionner des attributs si on le d sire

response.addCookie(myCookie);

...

59

SERVLETS: GESTION DES COOKIES III

Quelques m thodes utiles:

getValue/setValue;

getName/setName ;

getComment/setComment;

getMaxAge/setMaxAge :

d lai restant avant expiration du cookie (en seconde) par

d faut : pour la session courante.

getPath/setPath :

r pertoire o s'applique le cookie dir. courant ou pages

sp cifiques.

60

ANATOMIE D'UNE APPLICATION JAVA WEB

61

DESCRIPTEUR DE D PLOIEMENT: WEB.XML

Il s'agit d'un fichier situ dans le r pertoire WEB-INF du

r pertoire racine de l'application web.

Il contient les caract ristiques et les param tres de

l'application.

la description des servlets utilis es;

les diff rents param tres d'initialisation.

Il repr sente un sch ma pour le serveur afin de relier les

Servlets avec leurs compilations et leurs param tres

dans le serveur.

62

SQUELETTE DE BASE DU WEB.XML

<?xml version="1.0" encoding="ISO-8859-1"?>

<!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>

...

</web-app>

Toutes les descriptions de l'application sont ins r es

dans la balise <web-app>;

C'est au niveau de cette balise le serveur cherche les

Servlets et leurs param tres.

63

WEB.XML: <WEB-APP>

On y trouve deux balises pour la description de

l'application (pas d'influence technique):

display-name permet de donner un nom l'application. Il s'agit

de description, pour s'y retrouver dans les fichiers;

La balise description permet de fournir une description plus

d taill e. elle est inop rante techniquement parlant.

<web-app>

...

<display-name>Application pr mon stage</display-name>

<description>Cette premi re application web est un exemple

permettant de pr senter le d ploiement d'une webapp.

</description>

...

</web-app>

64

WEB.XML ET LES SERVLETS:

Une Servlet est toujours d clar e entre <servlet> et

</servlet>

On doit affecter un nom chaque Servlet d clar e, dans

une balise servlet-name.

Ce nom n'est pas n cessairement le nom de la classe de la

servlet.

la balise description permet de fournir une information

sur la Servlet;

la balise servlet-class permet de d finir la classe de la

Servlet. La classe doit se trouver dans le r pertoire

WEB-INF/classes de l'application, en respectant les

packages.

65

WEB.XML ET LES SERVLETS II

La balises init-param permet de sp cifier des param tres

d'initialisation pour une servlet.

Des param tres charg s en m me temps que la servlet, et

qu'elle peut r cup rer.

La balise param-name permet de d finir le nom du param tre,

et param-value pour sp cifier la valeur.

L'application peut r cup rer un tel param tre gr ce la

m thode getServletConfig().getInitParameter("random")

La balise load-on-startup demande que la servlet soit charg e

d s le d marrage du serveur (et non lors de sa premi re

sollicitation). Le nombre entier situ l'int rieur de ces balises

repr sente l'ordre de chargement.

66

WEB.XML: MAPPING DES SERVLETS

Le mapping d'une Servlet sert indiquer au serveur

quelle Servlet charger pour tel requ te du client (telle

URL demand e). Rappelons que les URL des servlets

sont relatives l'URL du context (la webapp) auquel

elles appartiennent.

<web-app>

...

<servlet-mapping>

<servlet-name>maservlet</servlet-name>

<url-pattern>/uneservlet</url-pattern>

</servlet-mapping>

...

</web-app>

67

WEB.XML ET LES SERVLETS:

<web-app>

...

<servlet>

<servlet-name>maservlet</servlet-name>

<servlet-class>org.test.servlet.PremiereServlet</servlet-class>

<description>des servlets pr le test</description>

<init-param>

<param-name>random</param-name>

<param-value>org.test.randomizer</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

...

</web-app>

68

SERVLET: LIMITATION

Par rapport aux applets, interface graphique utilisateur

limit e HTML;

Solution d'autre framework de pr sentation (JSF par

exemple);

69

JSP: JAVA SERVER PAGE

70

VUE D'ENSEMBLE

La sp cification J2EE permet aux utilisateurs de

d velopper des pages statiques et dynamiques:

La partie statique: pure Html;

La partie dynamique: langage Java.

Deux possibilit s:

API Servlet: du code Java dans lequel on ins re du Html;

API JSP: une page Html dans laquelle on ins re du Java.

71

Y. EL BOUZEKRI EL IDRISSI

Publicité

COMMENT A MARCHE?

Le d veloppeur a la possibilit d'ins rer du code java

dans le fichier Html l'aide des balises pr d finies;

Le moteur des JSP (Serveur d'app) reconnait ces

balises, puis proc de leur compilation et leur

ex cution;

Le serveur traite les balises html et java

diff remment afin de cr er une Servlet quivalente

la JSP, l'ex cution de cette derni re g n re le code

Html quivalent au r sultat.

NB: possibilit aussi de g n rer du code Xml.

72

Y. EL BOUZEKRI EL IDRISSI

CYCLE DE VIE D'UNE JSP

Moteur JSP

Compilation de laJSP

Servlet quivalente

Serveur

Web

Client

73

Y. EL BOUZEKRI EL IDRISSI

EXEMPLE SIMPLE: DATE()

Datecourante.jsp

<html>

<title> Ma JSP</title>

<body>

La date retourn e par la JSP

<% = new Java.util.Date() %>

</body>

</html>

74

Y. EL BOUZEKRI EL IDRISSI

LES BALISES JSP

Toutes les balises JSP doivent tre entre <% %>;

Elles repr sentent les l ments de base pour construire la

Servlet (lors de l'instanciation);

On peut introduire plusieurs instructions Java dans une

balise, comme on peut cr er plusieurs balises Java

ind pendantes;

L'emplacement des balises dans le serveur est le dossier Web,

tandis que, dans une application J2EE est le WebContent

75

Y. EL BOUZEKRI EL IDRISSI

LA SYNTAXE DES BALISES

On distingue cinq types de balise JSP:

Les commentaires:

< -- hello -- >

Scriplets: insertion du code Java:

<% System.out.println("hello"); %>

L'affichage des valeurs:

<%= "hello" > quvalent <% System.out.println("hello"); %>

Balise de d claration globale:

<%! Int compteur; %>

Directives et param tres appliquer sur la JSP:

<%@ page import= "java.util.Date" %>

76

Y. EL BOUZEKRI EL IDRISSI

<%! BALISE %>

L'objectif de cette balise est de d clarer des membres

globaux de la Servlets:

M thodes;

Variables;

Exemples:

<%! Int compteur = 0; %>

<%! Int somme (int a, int b) {

return a+b; ] %>

77

Y. EL BOUZEKRI EL IDRISSI

SCRIPLET <% %>

L'objectif est d'ins rer plusieurs instructions Java

dans la m me balise;

A remarquer que les variables d clar es dans la

Scriplet, leur port ne d passe pas la fermeture de la

balise;

Exemple:

<% int x = "chaine"; for (int i=0; i<10; i++)

out.println(x); %>

78

Y. EL BOUZEKRI EL IDRISSI

<%@ BALISE DES DIRECTIVES %>

L'objectif est le param trage de la page pour la

compilation;

Les directives en jeu:

Page:

Include:

Taglibs

Syntaxe:

<%@directive param=valeur %>

79

Y. EL BOUZEKRI EL IDRISSI

DIRECTIVE: INCLUDE

Permet d'ins rer un fichier texte brut ou une autre

ressource textuelle;

Lors de la compilation, exactement la conversion

vers une Servlet, le moteur JSP inclut le texte

externe;

Il s'agit d'une forme d'entit externe ins rer,

comme si elle faisait partie du fichier:

Exemple:

<%@Include file="c:\partie.txt"] %>

80

Y. EL BOUZEKRI EL IDRISSI

DIRECTIVE PAGE

Contr le des attributs de la page et du Servlet:

Param tres :

contentType type de contenu (text/html);

<%@page contentType="(text/pl ain)"%>

import Classes Java utiliser;

<%@page import="java.util.*"%

errorPage Page afficher en cas derreur;

<%@page errorPage="/erreur.jsp"%>

isErrorPage Si la page est une page derreur;

81

session Si la page fait partie dune session;

Y. EL BOUZEKRI EL IDRISSI

DIRECTIVE PAGE: ISERRORPAGE

Mapage.jsp

<%@page language="Java" contentType="Text/html"%>

<%@page errorPage="/casderreur.jsp"%>

<html>&&..</html>

Errorpage.jsp

<%@page language="Java" contentType="Text/html"%>

<%@page isErrorPage="true"%>

<html>&.

<%=exception.getClass().getName()%><

/html>

82

Y. EL BOUZEKRI EL IDRISSI

DIRECTIVE: TAGLIBS

L'API JSP permet l'utilisateur de d finir des

balises personnalis es (ou une biblioth que de tag)

de la page JSP;

Il s'agit de d finir un comportement personnalis de

la page JSP;

La d claration de la directive Taglib vous permet

l'utilisation de tag personnalis e et un moyen de les

appeler:

URI

Pr fix

83

Y. EL BOUZEKRI EL IDRISSI

DIRECTIVE: TAGLIBS

<%@ taglib uri="uri" prefix="prefixOfTag" >

Exemple; La librairie custlib et le pr fixe mytag

<%@ taglib uri="http://www.example.com/custlib"

prefix="mytag" %>

<html>

<body>

<mytag:hello/>

</body>

</html>

84

Y. EL BOUZEKRI EL IDRISSI

TAGLIB : TUTO

Pour y faire il faut deux tapes:

D claration d'une classe:

D claration de la tag dans fichier tld

mmmmm.tld

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>2.0</jsp-version>

<short-name>Example TLD</short-name>

<tag>

<name>Hello</name>

<tag-class>com.tutorial.HelloTag</tag-class>

<body-content>empty</body-content>

</tag>

</taglib>

import javax.servlet.jsp.tagext.*;

import javax.servlet.jsp.*;

import java.io.*;

public class HelloTag extends SimpleTagSupport {

public void doTag() throws JspException,

IOException {

JspWriter out = getJspContext().getOut();

out.println("Hello Custom Tag!");

}

}

85

Y. EL BOUZEKRI EL IDRISSI

DESIGN PATTERN MVC

86

Struts dans votre web application

LE DESIGN PATTERN MVC

Design pattern (mod le patron): Une d marche qui est

propos e, puis utilis e et finalement fait preuve de son

performance:

Son utilisation est tr s recommand e.

MVC: une d marche pour la cr ation des applications,

particuli rement Web dont le contenu est d compos

selon sa nature:

Donn es, leurs pr sentations et la gestion des v nements

envoy s par un utilisateur.

87

Y. EL BOUZEKRI EL IDRISSI

...