les java servlet pages (jsp) - lecroq/cours/jsp.pdf · si la servlet de la jsp est plus ancienne...

31

Upload: vuongtuong

Post on 30-Dec-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Les Java Servlet Pages (JSP)

Thierry Lecroq(merci à Alexandre Pauchet (INSA Rouen))

Université de Rouen

FRANCE

Thierry Lecroq (Univ. Rouen) JSP 1 / 31

Page 2: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Plan

1 Introduction

2 Fonctionnement

3 Inclusion/Délégation

4 JSP & JavaBeans

5 Standard Tag Library

Thierry Lecroq (Univ. Rouen) JSP 2 / 31

Page 3: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Introduction (1/4)

Description d'une JSP

JSP = Java Servlet PagesLes JSP sont comparables à PHPLangage de script côté serveur

Une page JSP contient :

du contenu statique (texte simple, XHTML, XML, . . . )

du code JSP qui produit dynamiquement du contenu

Thierry Lecroq (Univ. Rouen) JSP 3 / 31

Page 4: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Introduction (2/4)

Premier exemple

hello.jsp

<%@ page contentType=" t e x t / html ; c h a r s e t=u t f 8 " %><!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd "><html>

<head>< t i t l e>Ma premi&eg rave ; r e page JSP</ t i t l e>

</head><body>

<% S t r i n g prenom=r equ e s t . ge tParamete r ( "prenom" ) ; %><h1>Bonjour <%=(prenom!= n u l l && prenom . l e n g t h ( ) !=0) ?prenom : " b e l ( l e ) inconnu ( e

) "%></h1><% i f ( prenom!= n u l l && prenom . e qua l s ( " l e monde" ) ) { %>

<h2>Bien jou&eacu te ; ! ! ! !</h2><% } %><form a c t i o n=" h e l l o . j s p " method=" pos t ">

< l a b e l>Pr&eacu te ; nom : </ l a b e l><inpu t t ype=" t e x t " name="prenom" s i z e="30"><inpu t t ype=" submit " v a l u e=" envoye r ">

</ form></body>

</html>

Thierry Lecroq (Univ. Rouen) JSP 4 / 31

Page 5: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Introduction (3/4)

Traduction, compilation, instanciation, . . .

Une JSP est transformée en servlet

Fonctionnement :

1 requête sur une JSP

2 une servlet compare les dates de la JSP et de sa servletsi la servlet de la JSP est plus ancienne que la page :

I traduction de la JSP en servlet (dérivation)I compilation de la servlet (cf. répertoire tomcat/work)

3 si la servlet de la page n'a pas encore été chargéeI chargement de la servletI instanciationI initialise la servlet avec la méthode jspInit

4 invocation de la méthode jspService

5 Appel de jspDestroy lors du déchargement de la servlet

Thierry Lecroq (Univ. Rouen) JSP 5 / 31

Page 6: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Introduction (4/4)

Quelques éléments JSP

<%@ ... %> : directives valables pour la page

<%! ... %> : déclarations

<% ... %> : scriptlet (= script : tests, itération, . . . )

<%= ... %> : récupération d'une valeur d'expression

<jsp: include ... /> : inclusion à l'exécution

<jsp:forward ... /> : délégation à un autre composant

<jsp:useBean ... /> : utilisation d'un java bean

Thierry Lecroq (Univ. Rouen) JSP 6 / 31

Page 7: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (1/11)

Directives de page

Ces directives s'appliquent à la page

Syntaxe

<%@ page directive %>

Exemples

<%@ page isThreadSafe="false" %>

<%@ page contentType="text/plain; charset=UTF-8" %>

<%@ page import="java.io.*, java.util.*" %>

Thierry Lecroq (Univ. Rouen) JSP 7 / 31

Page 8: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (2/11)

Paramètres d'exécution d'une page JSP

L'exécution d'une JSP est paramétrable via la directive page

<%@ page bu�er="none|xxxkb"%>spéci�e la taille du bu�er où est renvoyée la réponseun petit bu�er allège en charge le serveur d'application et envoie laréponse plus rapidement.

<%@ page errorPage="�le_name"%>spéci�e la page (JSP ou non) vers laquelle le serveur d'applicationrenvoie lorsqu'une exception non gérée est lancée par la JSP.La directive <%@ page isErrorPage="true|false"%> permet despéci�er si la page de renvoie est une page d'erreur et lui autorise ainsila transmission de l'exception pour un éventuel traitement.

Thierry Lecroq (Univ. Rouen) JSP 8 / 31

Page 9: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (3/11)

Exemple

erreur.jsp

<%@ page contentType=" t e x t / html ; c h a r s e t=UTF−8" %><%@ page e r r o rPage=" e r r e u r . html " %><!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd "><html>

<head>< t i t l e>Ma pr em i e r e page j s p</ t i t l e>

</head><body>

<h1>1/0 = <%=1/0 %></h1></body>

</html>

erreur.html

<!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/xhtml1 /DTD/xhtml1−s t r i c t . dtd ">

<html><head>

<meta http−equ i v="Content−Type" c on t en t=" t e x t / html ; c h a r s e t=UTF−8" />< t i t l e>Page d ' e r r e u r </ t i t l e >

</head><body>

<h1>I l d o i t y a v o i r une e r r e u r dans l a JSP . . . </ h1></body>

</html>

Thierry Lecroq (Univ. Rouen) JSP 9 / 31

Page 10: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (4/11)

Déclarations

Les déclarations permettent de dé�nir des classes, des variables, . . .Elles seront utilisables dans toute la JSP

Syntaxe

<%!

déclarations

%>

Ces déclarations, sont placées dans la classe au moment de la traduction dela JSP en Servlet⇒ les variables sont donc des attributs

Thierry Lecroq (Univ. Rouen) JSP 10 / 31

Page 11: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (5/11)

Initialisation/Finalisation d'une JSP

Paramétrage de l'initialisation et de la �nalisation

Initilisation lors du chargement par le serveur d'application :public void jspInit()

Finalisation lors du déchargement par le serveur d'application :public void jspDestroy()

Redé�nition dans les déclarations JSP

<%! p u b l i c v o i d j s p I n i t ( ) {. . .

}p u b l i c v o i d j s pDe s t r o y ( ) {

. . .}

%>

Utilité : ouverture persistante d'une connexion à une BD, . . .

Thierry Lecroq (Univ. Rouen) JSP 11 / 31

Page 12: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (6/11)

Scriptlets (scripts)

Utilisation des objets, variables, structures de contrôle, . . .

Syntaxe

<%s c r i p t

%>

Les scripts seront placées dans la méthode jspService() qui exécute larequête (GET, POST, . . . ) e�ectuée sur la page JSP

Thierry Lecroq (Univ. Rouen) JSP 12 / 31

Page 13: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (7/11)

Expressions

Insertion de valeurs dans la page résultat

Syntaxe

<%= ex p r e s s i o n %>

L'expression doit retourner une valeur

Thierry Lecroq (Univ. Rouen) JSP 13 / 31

Page 14: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (8/11)

Exemple

compteur.jsp<%@ page i sTh r e adSa f e=" f a l s e " %><%@ page contentType=" t e x t / p l a i n ; c h a r s e t=UTF−8" %><%@ page impo r t=" j a v a . i o .∗ " %>

<%!i n t compteur=0;S t r i n g f i c h i e r ;p u b l i c v o i d j s p I n i t ( ) {

t r y {f i c h i e r=g e t S e r v l e t C o n t e x t ( ) . ge tRea lPath ( "/ compteur . t x t " ) ;F i l eR e ad e r f i l e = new F i l eR e ad e r ( f i c h i e r ) ;Bu f f e r edReade r r e a d e r = new Buf f e r edReade r ( f i l e ) ;compteur = I n t e g e r . p a r s e I n t ( r e a d e r . r e adL i n e ( ) ) ;r e a d e r . c l o s e ( ) ;}c a t ch ( F i l eNotFoundExcep t i on e x c e p t i o n ) {}c a t ch ( IOExcept ion e x c e p t i o n ) {}c a t ch ( NumberFormatException e x c e p t i o n ) {}

}

. . .

Thierry Lecroq (Univ. Rouen) JSP 14 / 31

Page 15: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (9/11)

Exemple

compteur.jsp (�n). . .

p u b l i c v o i d j s pDe s t r o y ( ) {t r y {

F i l eW r i t e r f i l e = new F i l eW r i t e r ( f i c h i e r ) ;P r i n tW r i t e r w r i t e r = new P r i n tW r i t e r ( f i l e ) ;w r i t e r . p r i n t l n ( compteur ) ;w r i t e r . c l o s e ( ) ;

}ca tch ( IOExcept ion e x c e p t i o n ) {

l o g ( " E r r e u r S e r v l e t : e n r e g i s t r emen t de l ' e t a t imp o s s i b l e pour l a JSPcompteur2 . j s p " ) ;

l o g ( ""+ex c e p t i o n ) ;}

}%>

<% compteur+=1; %>

Le compteur : <%=compteur%>

Thierry Lecroq (Univ. Rouen) JSP 15 / 31

Page 16: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (10/11)

Objets disponibles

Objets directement disponibles dans une JSP

request httpServlet : correspondant à la requête

response : correspondant à la réponse renvoyée

session : permet de gérer une session

out : le �ot de sortie de la réponse

application : Servlet application ; contient, entre autres, la méthodelog() pour écrire dans le �chier log

pageContext : gestion du contexte et des attributs de la JSP

. . .

Thierry Lecroq (Univ. Rouen) JSP 16 / 31

Page 17: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Fonctionnement (11/11)

Exemple

log.jsp

<%@ page contentType=" t e x t / html ; c h a r s e t=UTF−8" %><!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd "><html>

<head>< t i t l e>Ec r i t u r e dans l e f i c h i e r l o g</ t i t l e>

</head><body>

<%S t r i n g ph ra s e = "" ;i f ( r e q u e s t . ge tParamete r ( " ph ra s e " ) != n u l l )

ph ra s e = r e qu e s t . ge tParamete r ( " ph ra s e " ) ;a p p l i c a t i o n . l o g ( ph ra s e ) ;

%><form a c t i o n=" l og . j s p " method=" get ">

< l a b e l>Phrase a e c r i r e dans l e f i c h i e r l o g : </ l a b e l><inpu t t ype=" t e x t "name=" phra s e " s i z e="30">

<% out . p r i n t l n ( "<i npu t type=\"submit \" v a l u e=\"envoye r\">" ) ; %></ form>

</body></html>

Thierry Lecroq (Univ. Rouen) JSP 17 / 31

Page 18: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Inclusion/Délégation (1/4)

Inclusion

Inclusion d'une page statique ou dynamique dans une JSP

inclusion à la traduction en servlet (= inclusion de texte)

<%@ include file="fichier " %>

inclusion à l'exécution (= inclusion du résultat)

<jsp:include page="fichier " />

ou

<jsp:include page="fichier ">

<jsp:param name="nom " value="valeur "/>

...

</jsp:include>

Thierry Lecroq (Univ. Rouen) JSP 18 / 31

Page 19: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Inclusion/Délégation (2/4)

Exempleinclusion.jsp

<%@ page contentType=" t e x t / html ; c h a r s e t=UTF−8" %><!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd "><html>

<head>< t i t l e>JSP avec i n c l u s i o n</ t i t l e></head><body><%@ i n c l u d e f i l e=" t i t r e . t x t " %>

<p><j s p : i n c l u d e page=" t e x t e . j s p " /></p><p><j s p : i n c l u d e page=" paramet re . j s p ">

<j s p : param name="nom" v a l u e="Bob" /></ j s p : i n c l u d e>

</p></body>

</html>

titre.txt

<h1>T i t r e de l a JSP , i n c l u s a p a r t i r d ' un f i c h i e r t e x t e </h1>

texte.jsp

<%@ page contentType=" t e x t / p l a i n ; c h a r s e t=UTF−8" %><% out . p r i n t l n ( "Texte gene r e par l a JSP t e x t e . j s p " ) ; %>

parametre.jsp

<%@ page contentType=" t e x t / p l a i n ; c h a r s e t=UTF−8" %><%

S t r i n g nom = r equ e s t . ge tParamete r ( "nom" ) ;out . p r i n t l n ( " Sa l u t " + nom) ;

%>

Thierry Lecroq (Univ. Rouen) JSP 19 / 31

Page 20: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Inclusion/Délégation (3/4)

Délégation

Délégation à un autre composant web

Syntaxe

<jsp:forward page="fichier " />

ou

<jsp:forward page="fichier " />

<jsp:param name="nom " value="valeur "/>

...

</jsp:forward>

Thierry Lecroq (Univ. Rouen) JSP 20 / 31

Page 21: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Inclusion/Délégation (4/4)

Exemple

delegation.jsp<%@ page contentType=" t e x t / html ; c h a r s e t=UTF−8" %><!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd "><html>

<head>< t i t l e>JSP avec d e l e g a t i o n</ t i t l e></head><body>

<j s p : f o rwa rd page=" paramet re . j s p "><j s p : param name="nom" v a l u e="Bob" />

</ j s p : f o rwa rd></body>

</html>

parametre.jsp<%@ page contentType=" t e x t / html ; c h a r s e t=UTF−8" %><!DOCTYPE html PUBLIC "−//W3C//DTD XHTML 1 .0 S t r i c t //EN" " ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd "><html>

<head>< t i t l e>Af f i c h a g e de l e gue</ t i t l e></head><body>

<%S t r i n g nom = r equ e s t . ge tParamete r ( "nom" ) ;out . p r i n t l n ( "<p>Sa l u t " + nom + " !</p>" ) ;

%></body>

</html>

Thierry Lecroq (Univ. Rouen) JSP 21 / 31

Page 22: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (1/9)

Dé�nition

De�nition (JavaBean)

Classe java respectant certaines conventions (API) faisant d'elle uncomposant java réutilisable et facilement intégrable dans des applications.

Les JSP o�rent des balises pour interagir avec un JavaBean

Thierry Lecroq (Univ. Rouen) JSP 22 / 31

Page 23: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (2/9)

Contraintes de conception

Pour être un JavaBean, une classe doit :

être Serializable,

posséder un constructeur sans argument,

avoir des accesseurs sur ses attributs respectant des conventions denommage ; par exemple :attribut String name

⇒ public void setName(String)

⇒ public String getName()

contenir les méthodes d'interception d'évènements nécessaires.

Thierry Lecroq (Univ. Rouen) JSP 23 / 31

Page 24: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (3/9)

Utilisation dans les JSP

<jsp:useBean id="nom " class="classebean " scope="portée 1" />

<jsp:setProperty name="nom " property="propriété " value="valeur2"/>

ou <% nom.setPropriété (valeur ) %>

<jsp:setProperty name="nom " property="propriété " param="parametre_requete 3"/>

<jsp:useBean id="nom " class="classebean " scope="portée " >

<jsp:setProperty name="nom " property="propriété " .../>

...

</jsp:useBean>

<jsp:getProperty name="nom " property="propriété " />

ou <%=nom.getPropriété () %>

1request, page, session ou application2String ou expression <%= ... %>3si absent param=property, si * règle toutes les propriétés ayant des noms iden-

tiques aux paramêtres de requêteThierry Lecroq (Univ. Rouen) JSP 24 / 31

Page 25: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (4/9)

Exemple

UnMessage.javapackage l i bMes s age ;

impor t j a v a . beans . ∗ ;impor t j a v a . i o . ∗ ;impor t j a v a . t e x t . ∗ ;impor t j a v a . u t i l . ∗ ;

p u b l i c c l a s s UnMessage implements S e r i a l i z a b l e {p r i v a t e s t a t i c SimpleDateFormat f o rma t t e r = new SimpleDateFormat ( "E d MMM yyyy ,

H:m: s " , Loca l e .FRANCE) ;p r i v a t e s t a t i c Date date = new Date ( ) ;p r i v a t e S t r i n g ema i l ;p r i v a t e S t r i n g t e x t e ;

p u b l i c UnMessage ( ) { date . setTime ( System . c u r r e n tT im eM i l l i s ( ) ) ; }

p u b l i c S t r i n g getDate ( ) { r e t u r n f o rma t t e r . fo rmat ( date ) ; }

p u b l i c v o i d s e tEma i l ( S t r i n g ema i l ) { t h i s . ema i l=ema i l ; }

p u b l i c S t r i n g ge tEma i l ( ) { r e t u r n ema i l ; }

p u b l i c v o i d s e tTex t e ( S t r i n g t e x t e ) { t h i s . t e x t e=t e x t e ; }

p u b l i c S t r i n g getTexte ( ) { r e t u r n t e x t e ; }}

Thierry Lecroq (Univ. Rouen) JSP 25 / 31

Page 26: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (5/9)

Exemple

LivreOr.javapackage l i bMes s age ;

impor t j a v a . beans . ∗ ;impor t j a v a . u t i l . ∗ ;impor t j a v a . i o . ∗ ;

p u b l i c c l a s s L i v r eOr {

p r i v a t e Vector messages ;p r i v a t e S t r i n g nomFich i e r ;

p u b l i c L i v r eOr ( ) { }

p u b l i c v o i d s e t F i c h i e r ( S t r i n g f i c h i e r ) throws F i l eNotFoundExcept ion , IOExcept ion, C la s sNotFoundExcept ion {

nomFich i e r = f i c h i e r ;F i l e I n pu tS t r e am f i s ;Ob jec t InputSt r eam o i s = n u l l ;t r y {

f i s = new F i l e I n pu tS t r e am ( nomFich i e r ) ;o i s = new Objec t InputSt r eam ( f i s ) ;messages = ( Vector ) o i s . r eadOb j ec t ( ) ;

}ca tch ( Excep t i on e ) {

messages = new Vector ( ) ;}

}

. . .

Thierry Lecroq (Univ. Rouen) JSP 26 / 31

Page 27: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (6/9)

Exemple

LivreOr.java (�n)

. . .

p u b l i c v o i d addMessage ( UnMessage msg ) {messages . add (msg ) ;

}

p u b l i c Vector getMessages ( ) {r e t u r n messages ;

}

p u b l i c v o i d e n r e g i s t r e r ( ) throws F i l eNotFoundExcept ion , IOExcept ion {F i l eOutputSt ream f o s = new F i l eOutputSt ream ( nomFich i e r ) ;ObjectOutputStream oos = new ObjectOutputStream ( f o s ) ;oos . w r i t eOb j e c t ( messages ) ;

}}

Thierry Lecroq (Univ. Rouen) JSP 27 / 31

Page 28: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (7/9)

Exemple

livredor.jsp<%@ page contentType=" t e x t / html " %><%@ page language=" j a v a " impo r t=" l i bMes s age .∗ " %>

<!DOCTYPE HTML PUBLIC "−//W3C//DTD HTML 4.01 T r a n s i t i o n a l //EN"><html>

<head>< t i t l e>L i v r e d ' or</ t i t l e >

</head><body>

<form a c t i o n=' l i v r e d o r . j s p ' method='POST '><l a b e l >ema i l :</ l a b e l ><inpu t type=' t e x t ' name=' ema i l ' s i z e=' 50 '/><br/><t e x t a r e a name=' t e x t e ' rows=' 10 ' c o l s=' 80 '>S a i s i s s e z v o t r e message i c i </

t e x t a r e a ><br/><inpu t type=' submit ' name=' submit ' v a l u e=' Envoyer '/>

</form>

<j s p : useBean i d="msg" c l a s s="l i bMes s age . UnMessage" scope="page" ><j s p : s e tP r o p e r t y name="msg" p r op e r t y="∗"/>

</ j s p : useBean>

<j s p : useBean i d=" l i v r e o r " c l a s s="l i bMes s age . L i v r eOr " scope="page"/><j s p : s e tP r o p e r t y name=" l i v r e o r " p r o p e r t y=" f i c h i e r " v a l u e="/tmp/messages . t x t "/>

. . .

Thierry Lecroq (Univ. Rouen) JSP 28 / 31

Page 29: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (8/9)

Exemple

livredor.jsp (�n)

. . .

<%i f (msg!= n u l l && msg . ge tEma i l ( ) != n u l l && !msg . ge tEma i l ( ) . e q u a l s ( "" ) ) {

l i v r e o r . addMessage (msg ) ;l i v r e o r . e n r e g i s t r e r ( ) ;

}

i f ( l i v r e o r != n u l l && l i v r e o r . getMessages ( ) != n u l l && ! l i v r e o r . getMessages ( ) .i sEmpty ( ) ) {

f o r ( Object lemsg : l i v r e o r . getMessages ( ) ) {%><t a b l e bo r d e r="1pt "><t r>

<td><%= (( UnMessage ) lemsg ) . ge tEma i l ( ) %></ td><td><%= (( UnMessage ) lemsg ) . getDate ( ) %></ td>

</ t r><t r>

<td c o l s p a n="2"><pre>

<%= (( UnMessage ) lemsg ) . ge tTexte ( ) %><pre>

</ td></ t r></ t a b l e><% }} %>

</body></html>

Thierry Lecroq (Univ. Rouen) JSP 29 / 31

Page 30: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

JSP & JavaBeans (9/9)

Exemple

DéploiementL i v r e d o r

|_ s r c| |_ L i v r eOr . j a v a| |_ UnMessage . j a v a|_ WEB−INF| |_ c l a s s e s| |_ l i bMes s age| |_ L i v r eOr . c l a s s| |_ UnMessage . c l a s s|_ l i v r e d o r . j s p

Thierry Lecroq (Univ. Rouen) JSP 30 / 31

Page 31: Les Java Servlet Pages (JSP) - lecroq/cours/JSP.pdf · si la servlet de la JSP est plus ancienne que la page : I traduction de la JSP en servlet (dérivation) I compilation de la

Standard Tag Library

Les JSP fournissent une bibliothèque de balises standards répondantà des besoins de base

Quelques domaines :

Core : balises permettant des fonctionalités de base

XML : balises permettant de manipuler des données XML

I18n : balises permettant de traiter l'internationalisation

Database : balises permettant d'e�ectuer des requêtes SQL (travailnormalement dédié aux JavaBeans)

Il est possible d'étendre le langage en créant d'autre balises

Thierry Lecroq (Univ. Rouen) JSP 31 / 31