Você está na página 1de 103

Programmation orient objet JAVA

Huitime partie

JAVA Programmation oriente objet

Pr Hafidi Imad
Hafidi Imad -ENSA de Khouribga-Cours JAVA

imad.hafidi@gmail.com

Rappelle sur les applications web

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Application WEB

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Architecture
3 niveaux : niveau 1: prsentation navigateur serveur !eb niveau 2: applicatif s"ri#t ou #rogramme niveau 3: donnes donn$es n$"essaires au niveau %

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Droulement
&ne a##'i"ation !eb t(#e :
): re"uei''e 'es donn$es uti'isateur *niveau )+ %: envoie une re,u-te au serveur !eb 3: ex$"ute 'e #rogramme serveur re,uis *niveau %.3+ /: assemb'e0renvoie 'es donn$es vers 'e navigateur *niveau )+
Hafidi Imad -ENSA de Khouribga-Cours JAVA

Collecte des donnes des utilisateurs 1ue',ues so'utions #our 'e "'ient :
sim#'es : formu'aire H234
saisie de "ham#s #uis 5 submit 6 va'idation #ar s"ri#ts *7avaS"ri#t+

Autres : a##'ets Java :


"onnexion so"8et 0 93I ave" 'e serveur !eb mise en forme et va'idation des donn$es :::
Hafidi Imad -ENSA de Khouribga-Cours JAVA

Re u!tes "##P $ers le ser$eur web


"ontient :
' ;&94 de 'a ressour"e < a""$der *#age=s"ri#t=#rog+ 'es donn$es de formatage *'e "as $"h$ant+ des infos d ;en-t-te "om#'$mentaires

re,u-te >E2 :
#our extraire des informations sur 'e serveur int?gre 'es donn$es de formatage < ' ;&94
htt#:00@@@:3onSite:"om0serv'et0he''o?ke 1! value1"#

re,u-te ABS2 :
#our modifier 'es donn$es sur 'e serveur donn$es de 'a #age assemb'$es0envo($es vers 'e serveur
Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%cution d&un script sur un ser$eur


Ave" 'a re,u-te htt#= 'e serveur !eb :
)+ identifie 'e t(#e d ;environnement d;ex#'oitation < "harger *mapping)
en fon"tion de ' ;extension du fi"hier *:jsp$ %cgi$ %%%& ou du r$#ertoire oC i' se trouve *cgi'bin($ servlet(&

%+ "harge ' ;environnement d ;ex$"ution *run-time)


inter#r$teur Aer' #our 'es #rogrammes "gi en #er' JV3 #our 'es serv'ets Java= :::

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Retour des rsultats au na$igateur


4e s"ri#t0#rog "Dt$ serveur : #r$"ise 'e t(#e de "ontenu *H234= E34= images=+ int?gre 'a r$#onse dans un f'ot de sortie 4e navigateur : d$finit 'e t(#e 3I3E dans ' ;en-t-te *text0htm'=F+ et affi"he 'es donn$es en fon"tion
du#'i"ation de ' ;environnement *variab'es= ex$"ution+= m$moire a''ou$e= "o#ie du #rogramme= F retourne *en g$n$ra'+ du H234
Hafidi Imad -ENSA de Khouribga-Cours JAVA

'er$lets

Hafidi Imad -ENSA de Khouribga-Cours JAVA

"istori ue
G$ve'o##ement de #ages en H234 S"ri#ts C>I
Arogrammes C= she'' s"ri#ts= #er'

4angages s#$"ifi,ues
AHA= JSA= ASA *Server Side s"ri#ting+ JavaS"ri#t *C'ient Side S"ri#ting+

Evo'utions de H234
EH234= CSS= JavaS"ri#t

Hafidi Imad -ENSA de Khouribga-Cours JAVA

(uels sont les probl)mes *


A##'i"ation distribu$e
Con"urren"e d;a""?s S$"urit$

Aroto"o'e H22A *state'ess+


Identifi"ation des "'ients 3aintien des sessions

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es 'er$lets
Aermettre 'a #rogrammation dHa##'i"ations "ot$ serveur Aermettre 'Hextension dHun serveur !eb en 7ava Aermettre 'a "onstru"tion dHa##'i !eb d(nami,ue E,uiva'ent des C>I en 7ava

Hafidi Imad -ENSA de Khouribga-Cours JAVA

,onctionnement d-un ser$let


&n serv'et 'it 'es donn$es envo($es #ar un "'ient !eb *transmises #ar 'e serveur+
Gonn$es ex#'i"ites *Iormu'aire+ Gonn$es im#'i"ites *9e,uest Header+

I' g$n?re un r$su'tat I' envoit 'e r$su'tat au "'ient


Gonn$es ex#'i"ites *Aage H234+ Gonn$es im#'i"ites *9es#onse Header= Status "ode+
Gatabase Jndi Java A##

Serveur !eb

Hafidi Imad -ENSA de Khouribga-Cours JAVA

A$antage des ser$lets


Effi"a"it$
&ti'isent des threads #'utDt ,ue des #ro"essus "omme 'es C>I

Arati,ue
4ibrairie tr?s d$ve'o##$e *moins ,ue AHA mais #'us "onsistante+

Aortab'e
G$#'o(ab'e ,ue',ue soit 'e serveur *ou #res,ue+

S$"uris$
Ion"tionne dans une ma"hine virtue''e *#'us maitrisab'e+

Aas "her
Nombreux serveurs gratuits

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es technologies

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es containers de ser$let


4es serv'ets sont des "om#osants
I's sHex$"utent dans un "ontainer I's doivent se "onformer < une interfa"e #r$d$finie I's ne sont 7amais "r$$s

4es "ontainers
2om"at *7a8arta:a#a"he:org0tom"at+
Im#'antation de r$f$ren"e

Jett( !eb'ogi" :::

Hafidi Imad -ENSA de Khouribga-Cours JAVA

.n premier ser$let
4e serv'et He''o!or'd &n serv'et sur"harge 'a "'asse Htt#Serv'et I' doit im#'anter au moins une des m$thodes
do>et doAost doAut doGe'ete

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e ser$let "elloWorld

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e /ichier de con/iguration

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+&application Web
Une archive war Dploye dans le serveur Web Web.xml = description de lapplication

'tructure d&une application


Aa"8age d$#'o(ab'e Com#osants !eb : Serv'et et JSA 9essour"es stati,ues *images+ C'asses 7ava *he'#er+ 4ibrairies Ges"ri#teurs de d$#'oiement *@eb:xm'+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%ecution d&une re u!te

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es param)tres

4es #aram?tres dHune re,u-te sont a""essib'es dans 'Hob7et *Htt#Serv'et9e,uest+re,uest


re,uest:getAarameter*J#aramnameJ+K

I' est #ossib'e de r$"u#$rer tous 'es noms des #aram?tres


re,uest:getAarameterNames*+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emples param)tres

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple P0'#

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple P0'# 1suite2

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+a classe "ttp'er$let

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+-inter/ace "ttp'er$letRe uest


Iournit 'es informations sur 'a re,u-te du "'ient au serveur Arin"i#a'es m$thodes :
String getAarameter*String name+ Enumeration getAarameterNames*+
9etourne une $num$ration de tous 'es noms de #aram?tres

StringLM getAarameterVa'ues*+
9etourne un tab'eau "ontenant toutes 'es va'eurs des #aram?tres

String getHeader*String name+ Enumeration getHeaderNames*+


9etourne une $num$ration de tous 'es noms des #ro#ri$t$s du header

StringLM getHeaderVa'ues*+
9etourne un tab'eau de toutes 'es va'eurs du header

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es re uest headers

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+-inter/ace "ttp'er$letResponse
Bb7et fournissant 'es servi"es #our envo(er 'a r$#onse < un "'ient: 4es #rin"i#a'es m$thodes sont:
java.io.PrintWriter getWriter() getWriter
Aour r$"u#$rer un #rint!riter ,ui #ermet dHenvo(er du texte au "'ient

public void setContentLength(int len) setContentLength public void setContentType(java.lang.String type) setContentType
Positionne le Content-Length Header Position le Content-Type header (exemple text/html)

public void sendError(int sc, java.lang.String msg) throws sendError java.io.IOException public void setHeader(java.lang.String name, setHeader java.lang.String value)
Envoi un message d'erreur au client (cf code dans l'API)

Hafidi Imad -ENSA de Khouribga-Cours JAVA

web3%ml
4e fi"hier @eb:xm' donne des instru"tions sur 'e d$#'oiement du serv'et dans 'e "ontainer @eb-a##
4a des"ri#tion dHune !eb A##'i"ation

Serv'et
4a re'ation entre 'e nom du serv'et et 'a "'asse ,ui 'Him#'ante

Serv'et-ma##ing
4a re'ation entre 'e nom du serv'et et 'Hur' ,ui #ermet dH( a""$der

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es param)tres d-initialisation


4es serv'ets #euvent avoir des #aram?tres dHinitia'isation: Ces #aram?tres #euvent -tre "hang$s sans avoir < re"om#i'er 'Ha##'i"ation
Ninit-#aramO
N#aram-nameOtestVa'ueN0#aram-nameO N#aram-va'ueO)%N0#aram-va'ueO Ndes"ri#tionOune va'eur ,ue'"on,ueN0des"ri#tionO

N0init-#aramO

Ces #aram?tres #euvent -tre uti'is$s ave" 'a m$thode


7avax:serv'et:getInitAarameter*+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e ser$let mapping
Aermet de "onstruire 'a re'ation entre un serv'et et son &94
Nserv'et-ma##ingO
Nserv'et-nameO2estN0serv'et-nameO Nur'-#atternO02est0PN0ur'-#atternO

N0serv'et-ma##ingO

2ous 'es ur's "orres#ondant < htt#:00host:#ort0@eba##0ur'-#attern d$"'en"herons ';ex$"ution du serv'et Exem#'es
0P:do 02est 0"ours0test0P

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es lments du chemin de re u!te


ContextAath : 'e "hemin du "ontexte de d$#'oiement Serv'etAath : 'a se"tion du "hemin ,ui a d$"'en"h$ 'e ma##ing AathInfo : 'a #artie de 'a re,u-te ,ui n;est ni 'e ContextAath ni 'e Serv'etAath
9e,uest:getContextAath*+ 9e,uest:getServ'etAath*+ 9e,uest:getAathInfo*+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emples

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e c4cle de $ie d-un ser$let


2ous 'es serv'ets ont 'e m-me "("'e de vie
4e "ontainer "harge 'e serv'et
4a fon"tion init*+ est a##e'$e *initia'isation de variab'es= "onne"tion < des bases de donn$es+

4e serv'et r$#ond aux re,u-tes des "'ients 4e "ontaire d$truit 'e serv'et
4a fon"tion destro(*+ est a##e'$e *fermeture des "onne"tions+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

do5et et doPost
Server

HttpServlet subclass
doGet( )

Request

Service( )

Response

doPost( )

Key:

Implemented by subclass

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+a $isibilit

*from 7>uru+
Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e 'er$let Conte%t
3aintien des donn$es #our toute ';a##'i"ation Iournit 'e re,uest dis#at"her Gonn$es d;initia'isations #our toute ';a##'i"ation 4og &n Serv'etContext #ar a##'i"ation et #ar JV3

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e 'er$letConte%t
Bb7et #ermettant au serv'et de "ommuni,uer ave" 'e serv'et "ontainer Bbtenu ave"
Serv'et:getServ'etContext*+

4es #rin"i#a'es m$thodes de Serv'etContext


Bb7e"t getAttribute*String name+
9etourne un attribut du "ontexte

Void setAttribute*String name= Bb7e"t va'ue+


A7oute ou rem#'a"e un ob7et dans 'e "ontexte

String getInitAarameter*String name+


9etourne un #aram?tre dHinitia'isation de 'Ha##'i"ation

Void 4og*String msg+


A7oute un message dans 'e 'og fi'e du serv'et "ontainer

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e 'er$let Conte%t

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e Re uestDispatcher
L'objet RequestDispatcher est utilis pour
Transfrer la requte un autre programme Inclure la rponse d'un autre programme

Pour obtenir le request dispatcher

+-utilisation du Re uestDispatcher
4a re,u-te #eut -tre transf$r$e
rd:for@ard*re,uest=res#onse+ 4Huti'isation "'assi,ue "onsiste < avoir un serv'et "ontrD'eur ,ui transmet 'es "ommandes < des serv'ets s#$"ia'is$s 4e "ontrD'e ne revient 7amais au serv'et

4a re#onse #eut -tre in"'use dans 'a r$#onse en "ours de "onstru"tion


rd:in"'ude*re,uest=res#onse+ I"i= on #eut im#'anter un e,uiva'ent de server side in"'ude:

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple d&utilisation

G$monstration Q

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es attributs du conte%t


Valeurs disponibles pour toute lapplication

+es 'essions
Comment maintenir ';$tat d;un "'ient au "ours d;une s$rie de re,u-tes d;un m-me uti'isateur #endant un tem#s donn$ R H22A est state'ess Comment identifier 'e "'ient R BC mettre 'es donn$es de 'a session R

Hafidi Imad -ENSA de Khouribga-Cours JAVA

'er$let et sessions
4a gestion des sessions uti'ise 'es te"hni,ues "'assi,ues
ur' re@riting Coo8ies Cham#s "a"h$s dans 'es formu'aires

4HAAI Htt#Serv'et fournit des fon"tions #our g$rer 'es sessions 4Him#'antation est trans#arente #our 'Huti'isateur

Hafidi Imad -ENSA de Khouribga-Cours JAVA

'ession 6 "ttp'er$letRe uest


CHest 'e #aram?tre re,uest ,ui maintient 'es informations sur 'a session 4es m$thodes sont
Htt#Session re,uest:getSession*boo'ean f'ag+
I'agStrue : retourne 'Hob7et session "ourant ou en "r$e un sHi' nH( en a #as: I'agSfa'se : 9etourne 'Hob7et session "ourant ou nu'' sHi' nH( en a #as

is9e,uestedSessionIdVa'id*+
Vrai si 'Hid de 'a session est va'ide dans 'e "ontexte "ourant

is9e,uestedSessionIdIromCoo8ie*+
Vrai si 'Hid de 'a session vient dHun "oo8ie

is9e,uestedSessionIdIrom&94*+
Vrai si 'Hid de 'a session vient dHun &94

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Cration de la session

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Re u!te dans la m!me session

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+-objet "ttp'ession
4Hob7et Htt#Session #ermet de "onserver des va'eurs entre des a##e's dHun "'ient 4es #rin"i#a'es m$thodes sont
Bb7e"t getAttribute*String name+
9$"u#?re 'a va'eur de 'Hattribut #ar son nom

Enumeration getAttributeNames*+
9etourne 'a 'iste de tous 'es attributs

Void setAttribute*String name= Bb7e"t va'ue+


A7oute un attribut < 'a session

String getId*+
9etourne 'Hidentifiant de 'a session

Void inva'idate*+
Inva'ide 'a session

4ong getCreation2ime*+ 4ong get4astA""essed2ime*+ 4ong get3axIna"tiveInterva'*+ Serv'etContext getServ'etContext*+


Hafidi Imad -ENSA de Khouribga-Cours JAVA

Con/iguration des sessions


I' est #ossib'e de fixer 'a dur$e dHune session #ar a##'i"ation *en minutes+
Nsession-"onfigO
Nsession-timeoutO3TN0session-timeoutO

N0session-"onfigO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

#erminer une session

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e conte%te
I' est #ossib'e dHavoir des #aram?tres dHinitia'isation du "ontexte
N"ontext-#aramO
N#aram-nameOdatabaseN0#aram-nameO N#aram-va'ueOtestGUN0#aram-va'ueO Ndes"ri#tionO'e nom de 'a baseN0des"ri#tionO

N0"ontext-#aramO

Ces #aram?tres #euvent -tre uti'is$s dans 'e serv'et ave" 'a m$thode
Javax:serv'et:Serv'etContext getInitAarameter*+ et Javax:serv'et:Serv'etContext:getInitAarameterNames*+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e 'er$letCon/ig
Bb7et uti'is$ #ar 'e "ontainer de serv'et #our #asser des va'eurs 'ors de 'Hinitia'isation du serv'et Bbtenu ave"
Serv'et:getServ'etConfig*+

Arin"i#a'es m$thodes
String getInitAarameter*String name+
9etourne 'a va'eur dHun #aram?tre dHinitia'isation du serv'et

Serv'etContext getServ'etContext*+
Aermet de r$"u#$rer 'Hob7et serv'et"ontext

String getServ'etName*+
9etourne 'e nom du serv'et "omme s#$"ifi$ dans 'e fi"hier de des"ri#tion:

Im#'ant$ #ar Htt#Serv'et

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+a gestion des erreurs


I' est #ossib'e de d$finir 'es #ages < affi"her
En fon"tion dHerreurs htt# En fon"tion dHex"e#tions 7ava

Gans @eb:xm'

Aour une ex"e#tion 7ava

<error-page> <exception-type> cours.event.EventException </exception-type> <location>/erreur.html</location> </error-page>

Aour une erreur Htt#

<error-page> <error-code>404</error-code> <location>/404.html</location> </error-page> Hafidi Imad -ENSA de Khouribga-Cours JAVA

J'P

Hafidi Imad -ENSA de Khouribga-Cours JAVA

7ais u-est ce ue c-est *


Standard #our "onstruire des a##'is !eb
Aortab'e En m$'angeant 'e H234 et des dire"tives Uas$ sur Java

E,uiva'ent AHA et ASA


A'us J#ro#reJ ,ue AHA A'us ind$#endant ,ue ASA

A'usieurs s#$"ifi"ations
JSA %:T S 'a derni?re

Ge nombreuses 'ibrairies : 'es 2ag4ibs


Hafidi Imad -ENSA de Khouribga-Cours JAVA

J'P et 'er$lets *
4es deux sont bas$s sur Java 4es Serv'ets sont #eu ada#t$ < 'a g$n$ration de "ontenu 4es JSA sont #eu ada#t$s < 'Hextension de fon"tions du serveur Note : 4e JSA engine ,ui inter#r?te 'es #ages JSA est un Serv'et 4es JSA sont un mo(en de "onstruire des Serv'et de faVon d$"'arative
&n #age JSA est transform$e en un #rogramme 7ava *serv'et+ #uis "om#i'$e et ex$"ut$e

Hafidi Imad -ENSA de Khouribga-Cours JAVA

J'P et 'er$lets

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Architecture

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e c4cle de $ie d&un J'P


Js#Init*+ Js#Servi"e
A""e#t re,uest >enerate res#onse

Js#Gestro(*+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

C4cle de $ie
User Request Server File Changed ? Create Source Compile Execute Servlet
Hafidi Imad -ENSA de Khouribga-Cours JAVA

+a s4nta%e de base
4es dire"tives
Instru"tion #our 'e moteur JSA En"adr$es #ar NWX WO

4es d$"'arations
G$"'arations de variab'es ou de m$thodes uti'isab'es dans 'a #age En"adr$es #ar NWQ WO

4es ex#ressions
&n ex#ression est $va'u$e= transform$e en "haine et in"'use dans 'a #age En"adr$es #ar NWS WO

4es s"ri#'ets
3or"eau de "ode 7ava ex$"ut$ dans 'a #age En"adr$s #ar NW WO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es e%pressions
Une expression est une expression java dont la valeur est calcule, tranforme en String et insre dans la page.

+es dclarations
G$"'arations de variab'es et de fon"tions 'o"a'es < 'a #age *en 7ava+
NWQ int iK WO NWQ int iSTK String textK WO NWQ boo'ean f*int i+ Yreturn *iOT+KZ WO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es scriplets
Aeuvent "ontenir des fragments de "ode va'ide en 7ava I's sont ex$"ut$s ,uand 'a re,u-te est $va'u$e
NW if *"om#teOT+ Y WO 2u as en"ore des sousF NU9O NW Z e'se Y WO 2u es dans 'e rouge "ette fois NU9O NW Z WO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

J-oubliais les commentaires


4es "ommentaires sont 'es m-mes ,uHen E34
NW-- tagada --WO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es objets implicites


Bb7ets uti'isab'es sans d$"'aration dans 'es ex#ressions et 'es s"ri#'ets
re,uest *re,uest s"o#e+ : Htt#Serv'et9e,uest res#onse *#age s"o#e+ : Htt#Serv'et9es#onse #ageContext *#age s"o#e+ : AageContext
4Hob7et re#r$sentant 'e "ontexte de 'a #age

session *session s"o#e+ : Htt#Session


4Hob7et re#r$sentant 'e "ontexte de 'a session

#age *Sthis+ *#age s"o#e+ : Htt#JSAAage out *#age s"o#e+ : Js#!riter a##'i"ation *a##'i"ation s"o#e+ Serv'etContext "onfig *#age s"o#e+ : Serv'etConfig ex"e#tion *#age s"o#e+ : 2hro@ab'e
G$finit dans 'es #ages de traitement des erreurs

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple

+-inter/ace de PageConte%t
Iournit des m$thodes #our retrouver des attributs en suivant 'a visibi'it$
Bb7e"t findAttribute*String name+
9e"her"he un attribut en uti'isant 'Hordre suivant : #age= re,uest= session= a##'i"ation

Bb7e"t getAttribute*String name+


9etourne un attribut dans 'e "ontexte de 'a #age

Bb7e"t getAttribute*String name= in "tx+


9etourne un attribut dans 'e "ontexte donn$ *AAA4ICA2IBN[SCBAE= AA>E[SCBAE= 9E1&ES2[SCBAE= SESSIBN[SCBAE+

Int getAttributeS"o#e*String name+


9etourne 'e s"o#e dHun attribut

Iournit aussi des m$thodes #our retrouver toutes 'es informations du "ontexte dHex$"ution de 'a #age *session= 7s#!riter=re,uest= res#onse=F+
Cf AageContext AAI #our 'es d$tai's

Hafidi Imad -ENSA de Khouribga-Cours JAVA

'4nta%e 87+
Ge#uis JSA ):%
N7s#:ex#ressionOEx#ressionN07s#:ex#ressionO N7s#:s"ri#t'etO N7s#:de"'arationO

Aermet
4a va'idation 4es transformations 4;$dition

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple

Hafidi Imad -ENSA de Khouribga-Cours JAVA

jsp9/orward
Js#:for@ard #ermet de "hainer 'es re,u-tes #our invo,uer
&ne autre #age 7s# &n serv'et

N7s#:for@ard #ageSJAutreAage:7s#J0O N7s#:for@ard #ageSJ0Serv'et0"ontro'0O

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Irom 7>uru

Jsp9/orward a$ec param)tres


I' est #ossib'e dHa7outer des #aram?tres < 'a re,u-te: A""essib'es #ar re,uest:getAttribute*name+

<jsp:forward page="chaine.jsp"> <jsp:param name="name1" value="v1"/> <jsp:param name="name2" value="v2"/> </jsp:forward>

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Jsp9include
9edirige 'a re,u-te et in"'ut 'e r$su'tat < 'Hendroit oC se trouve 'Ha"tion
N7s#:in"'ude #ageSJ"he"8Uean:7s#J0O Cette a"tion est ex$"ut$e < "ha,ue fois

4Ha"tion ex$"ut$e ne #eut #as modifier 'e Header de 'a #age *#as de "oo8ie ni de t(#e de "ontenu+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es tags J'P 1ou actions2


4es tags sont des a"tions in"'uses dans une #age !eb suivant 'a s(ntaxe E34
Nmod:tag attrSJva'ueJO Nmod:tag attrSJva'ueJObod(N0mod:tagO

4es a"tions de base font #artie de 'a 'ibrairie 7s#:


N7s#:useUeanO N7s#:setAro#ert(O N7s#:getAro#ert(O N7s#:in"'udeO N7s#:for@ardO N7s#:textO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

.n Ja$aBean
Composant simple. Respecte des conventions dcriture

E%emple .seBean

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Autre e%emple

Ja$aBean et J'P
4es a"tion useUean= setAro#ert( et getAro#ert( #ermettent de mani#u'er des JavaUean sans #rogrammation
7s#:usebean #our nommer= "r$er ou d$signer un bean 7s#:getAro#ert( #our r$"u#$rer une #ro#ri$t$ dHun bean 7s#:setAro#ert( #our "hanger 'a va'eur dHune #ro#ri$t$:

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es directi$es
NWX dire"tive YattrSJva'ueJZP WO
3essages #ass$s au moteur de JSA

Aage : #ro#ri$t$s de 'a #age


e)tendsSJClassName"
4a #age est une sous-"'asse de 'a "'asse indi,u$e

importSJ7avax:7ms:P="our:test:uti'J
im#ort des t(#es ou des #a"8ages 4es #a"8ages 'ang= serv'et et 7s# sont im#ort$s #ar d$faut

sessionSJtrueJ ou Jfa'seJ *defautStrue+


4a #age #arti"i#e < une session

is*+read,afe bufferS)\8
2ai''e du buffer #ar d$faut #our 'e Arint!riter:

auto-lus+SJtrueJ ou Jfa'seJ
Vide 'e buffer automati,uement ,uand 'e buffer est #'ein

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es directi$es 1:2


Aage -'a suite
isErrorAageSJtrueJ ou Jfa'seJ 4a #age est une #age dHerreur errorAageSJ0error:7s#J Aage "harg$e en "as dHex"e#tion "ontent2(#eSJtext0htm'K"harsetS&2I-]J 2(#e du "ontenu de 'a #age et 7eu de "ara"t?res

In"'ude
Ii'eSJre'ative &94J Ins?re 'e fi"hier "orres#ondant dans 'e fi"hier JSA 4e fi"hier est $va'u$ et "om#i'$ #ageSJtest:htm'^ In"'ut 'a ressour"e sans 'Hinter#r$ter
Hafidi Imad -ENSA de Khouribga-Cours JAVA

+a J'#+
Uut : Sim#'ifier 'H$"riture des #ages 4angage #our 'es auteurs de #ages In"'ut un 'angage dHex#ression #our $viter 'e "ode 7ava :
4angage dHex#ression #our "a'"u'er des va'eurs ContrD'e du f'ot dHex$"ution Va'idateur de 'ibrairie de tags
Aermet des "ontrD'er 'e st('e et 'es 'ibrairies uti'isab'es dans une #age

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+a J'#+
JS24S Java Standard 2ag 4ibrar(
Core tags
Sortie= gestion des variab'es= 'ogi,ue= bou"'es= im#ortation de texte

E34 tags
Aarsing= s$'e"tion= ES42= f'ot de "ontrD'e

Gatabase tags
Conne"tion= a""?s= re,u-tes= mises < 7our et transa"tions

Iormattage
4o"a'isation= internationa'isation

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+e langage d-e%pression
4e 'angage dHex#ression est invo,u$ #ar
${expr}

Ges ob7ets im#'i"ites #ermettent dHa""$der aux "ontextes de 'Henvironnement


page,cope= re.uest,cope= session,cope= application,cope donnent a""?s aux variab'es de 'Henvironnement param et paramValues donnent a""?s aux #aram?tres dHune re,u-te
${param["nom"]} donne 'a va'eur du #aram?tre nom dHune re,u-te htt# ${paramValues["nom"]} donne toutes 'es va'eurs asso"i$es au #aram?tre nom de 'a re,u-te htt# dans un tab'eau

page/onte)t donne a""?s aux va'eurs asso"i$es au "ontexte initParams donne a""?s aux #aram?tres dHinitia'isation +eaderValues donne a""?s aux #ro#ri$t$s du header

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple 9 acc)s au% param)tres

Beans et Collection
4Ha""?s aux #ro#ri$t$s dHun bean se fait #ar un notation #oint$e
_Y"d:titreZ _Y#ersonne:adresse:vi''eZ

Aour 'es "o''e"tions *3a#= 4ist= Arra(+ on #eut uti'iser 'a notation
mesCGLiM si mesCG est un tab'eau mesCGL"d:titreM si "Hest une 3a# ave" 'e titre "omme "'$

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es oprateurs
Bn dis#ose de tous 'es o#$rateurs "'assi,ues
=-=P=0= mod= SS ou e,= QS ou ne= N ou 't= O ou gt *#our $viter 'es sou"is ave" E34 em#t( #our v$rifier si une variab'e est nu''e ou vide

4es "onversions de t(#es sont automati,ues dans 'es ex#ressions en fon"tion des besoins

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es actions gnrales


":out #our g$n$rer du texte *$,uiva''ent du NWS WO
N":out va'ueS_Y#aram:nomZ defau'tSJN0AJ0O Affi"he 'a va'eur du #aram?ter ou N0A si e''e est vide

":set affe"te 'a va'eur dHune variab'e dans 'e "ontexte "ourant
N":set varSJtestJ va'ueSJ"a mar"he RJ s"o#eSJre,uestJ0O 4a va'eur #eut -tre aussi "a'"u'$e dans 'e bod( N":set varSJtest%O
Nex:"a'" #aram)SJ#ouetJ0O

N0":setO Aeut -tre aussi uti'is$ #our "hanger 'a va'eur dHune #ro#ri$t$ dHun bean N":set targetS_Y"dZ #ro#ert(SJtitreJ va'ueSJ3e``anineJ0O Aeut -tre aussi uti'is$ #our a7outer un $'$ment dans une "o''e"tion N":set targetS_Ym(CGZ #ro#ert(S_Y"d:titreZ va'ueS_Y"dZ0O

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es actions gnrales 1suite2


N":remove0O #ermet de su##rimer une variab'e
N":remove varSJtestJ s"o#eSJ#ageJ0O Su##rime 'a variab'e test de 'a #age

N":"at"h0O #ermet de "a#turer 'es ex"e#tions dans une #age


N":"at"h varSJex"e#tionJO
F some "ode

N0":"at"hO N":if testS^_Yex"e#tion QS nu''Z^O I' ( a eu un sou"i N0":ifO Attention Va ne rem#'a"e #as 'e traitement norma' des erreurs

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es conditionnelles
4es "onditions sim#'es
N":if testSJ_Y"d:anneeN)aaTZJO CHest un vieux dis,ue N0":ifO

4es "onditions ex"'usives


N":"hooseO
N":@hen testSJ_Y"d:auteurSSHbobHZJO
1ue''e daube

N0":@henO N":@hen testSSJ_Y"d:auteurSSHbi''HZJO


Ca s@ing

N0":@henO F N":other@iseO
Ueuh R

N0":other@iseO

N0":"hooseO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

+es ;terateurs
":forEa"h r$#$te une a"tion #our tous 'es $'$ments dHune "o''e"tion
Ntab'eO N":forEa"h varS^"d^ itemsS^_Ym(CGZ^O NtrONtdON":out va'ueS^_Y"d:titreZ^0ON0tdON0trO N0":forEa"hO N0tab'eO

Bn #eut aussi d$finir un interva'


N":forEa"h varS^i^ beginS^)TT^ endS^))T^O N":out va'ueS^_YiZ^0O N0":forEa"hO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Encore des itrateurs


":for2o8ens #ermet de #ar"ourir une "haine "ontenant des d$'imiteurs
N":set varSJ'isteJ va'ueSJa=b="=dJ0O N":for2o8ens varSJitemJ itemsSJ_Y'isteZJ de'imsSJ=JO
N":out va'ueSJ_YitemZJ0O

N0":for2o8ensO

Hafidi Imad -ENSA de Khouribga-Cours JAVA

7VC et applications web

Hafidi Imad -ENSA de Khouribga-Cours JAVA

7VC
3ode'
' ;a##'i"ation m$tier= 'es donn$esF "e ,ui est mani#u'$ #ar ' ;a##'i"ation:

Vie@
#r$sentation de ' ;$tat du mod?'e *g$n$ra'ement < un uti'isateur+

Contro''er
interfa"e d ;a"tion sur 'e mod?'e
*#ar exem#'e= #our 'es mises < 7our+

4 ;interfa"e uti'isateur= "om#os$e de vues= int$ragit ave" 'e "ontrD'eur:


Hafidi Imad -ENSA de Khouribga-Cours JAVA

Hafidi Imad -ENSA de Khouribga-Cours JAVA

7VC 7odel 1'er$let2


M VC Des ign Pattern 1
Reques t

(Controller) Servlet
te tia an st In

BROWSER
5
Res pons e

Redirect

(View) JSP

(M odel) Java Bean

Servlet Container

(EIS)

7odel
4e "ontro'eur #rend en "harge 'a re,u-te I' effe"tue 'es "ontrD'es et 'es a"tions I' s$'e"tionne 'a vue 4e serv'et sert de
Ii'tre *erreur= s$"urit$+ Contro'eur *dis#at"hing= a"tions= redire"tion+

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple simple

Hafidi Imad -ENSA de Khouribga-Cours JAVA

E%emple suite

Hafidi Imad -ENSA de Khouribga-Cours JAVA

Você também pode gostar