Programmation orient objet JAVA
Huitime partie
JAVA Programmation oriente objet
Pr Hafidi Imad
Hafidi Imad -ENSA de Khouribga-Cours JAVA
[email protected]
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