Les page JSP - lsis. · PDF filePlan 1 Introduction 2 Creer une page JSP´ 3 Les balises...
date post
30-Dec-2018Category
Documents
view
217download
0
Embed Size (px)
Transcript of Les page JSP - lsis. · PDF filePlan 1 Introduction 2 Creer une page JSP´ 3 Les balises...
Les page JSP
Achref El Mouelhi
Docteur de luniversite dAix-MarseilleChercheur en Programmation par contrainte (IA)
Ingenieur en Genie logiciel
18 Decembre 2017, CDI Lyon 2017 1 / 42
Plan
1 Introduction
2 Creer une page JSP
3 Les balises JSP
4 Les directives
5 Recuperer les parametres dune requete
6 Transmission de donnees entre Servlet/JSP
7 Portee dune variable
8 Creation dun objet
9 EL : Expression Language
10 Objets implicites
11 Gerer les exceptions
18 Decembre 2017, CDI Lyon 2017 2 / 42
Introduction
Introduction
JSP
Java Server Pages
Une technologie de la plateforme JEE permettant de creerdynamiquement des pages HTML (dextension .jsp)
Une page JSP sera transformee par le compilateur en Servlet
Ensuite cette Servlet sera compilee par la JVM (machine virtuelle)
Les JSP sont extensibles : on peut creer nos propres balises JSP(avec JSTL)
18 Decembre 2017, CDI Lyon 2017 3 / 42
Introduction
Une page JSP : appelee par le controleur
Client
Controleur
(Servlet)
Serveur
Vue
(page JSP)
Modele
(Java Bean)
RequeteHTTP
ReponseHTTP
18 Decembre 2017, CDI Lyon 2017 4 / 42
Creer une page JSP
Creation dune page JSP
Deroulement
Faire un clic droit sur WEB-INF de notre projet
Aller dans New et choisir JSP File
Remplir le champ File name: par vue.jsp (par exemple)
Valider
18 Decembre 2017, CDI Lyon 2017 5 / 42
Creer une page JSP
Creation dune page JSP
Notre vue generee
Insert title here
18 Decembre 2017, CDI Lyon 2017 6 / 42
Creer une page JSP
Creation dune page JSP
Preparons notre Hello World
Projet JEE
Hello World (depuis une JSP)
18 Decembre 2017, CDI Lyon 2017 7 / 42
Creer une page JSP
Creation dune page JSP
Comment lappeler?
Cest toujours le controleur (Servlet) qui communique avec lesvues
18 Decembre 2017, CDI Lyon 2017 8 / 42
Creer une page JSP
Creation dune page JSP
Pour construire correctement une page HTML
protected void doGet(HttpServletRequest request,HttpServletResponse response) throwsServletException, IOException{this.getServletContext().getRequestDispatcher("/
WEB-INF/vue.jsp").forward(request, response);}
Explicationthis.getServletContext() : permet de communiquer avecdautres composants (via le conteneur de Servlet)getRequestDispatcher("/WEB-INF/vue.jsp") : permetdindiquer lemplacement de la vue et de la recupererforward(request, response) : pour envoyer la requete et lareponse (on les utilisera plus tard)
18 Decembre 2017, CDI Lyon 2017 9 / 42
Les balises JSP
Initiation aux balises JSPObservons notre vue
Projet JEE
Hello World (depuis une JSP)
18 Decembre 2017, CDI Lyon 2017 10 / 42
Les balises JSP
Initiation aux balises JSP
Les balises JSP
sont definies par
Entre ces deux balises, on peut utiliser les bases algorithmiquesdu langage Java :
des structures conditionnelles
des structures iteratives
...
Les balises JSP peuvent etre utilisees plusieurs fois dans unepage JSP
18 Decembre 2017, CDI Lyon 2017 11 / 42
Les balises JSP
Initiation aux balises JSP
Balises speciales
: pour ajouter un commentaire
: pour declarer une variable directementdans la classe de la servlet.
: pour afficher le contenu de la variable var
18 Decembre 2017, CDI Lyon 2017 12 / 42
Les balises JSP
Initiation aux balises JSP
AttentionIl est deconseille de melanger du code HTML avec du code JAVA
18 Decembre 2017, CDI Lyon 2017 13 / 42
Les directives
Les directives
Definition
Les directives sont des instructions dans des balises JSPspeciales
Elles ont la structure suivante :
Role
definir des donnees relatives a la page (directive page)
inclure une autre page JSP (directive include)
inclure des bibliotheques de balises (directive taglib)
18 Decembre 2017, CDI Lyon 2017 14 / 42
Les directives
Les directives
Definition
Les directives sont des instructions dans des balises JSPspeciales
Elles ont la structure suivante :
Role
definir des donnees relatives a la page (directive page)
inclure une autre page JSP (directive include)
inclure des bibliotheques de balises (directive taglib)
18 Decembre 2017, CDI Lyon 2017 14 / 42
Les directives
Les directives
Definir des donnees relatives a la page
...
Autres attributs
extends
import
session = "true | false"
isELIgnored = "true | false"
...
18 Decembre 2017, CDI Lyon 2017 15 / 42
Les directives
Les directives
Definir des donnees relatives a la page
...
Autres attributs
extends
import
session = "true | false"
isELIgnored = "true | false"
...
18 Decembre 2017, CDI Lyon 2017 15 / 42
Les directives
Les directivesInclure le contenu dune autre page JSP
ou
Difference entre les deux solutions
Avec la premiere solution, le fichier sera charge au moment de lacompilation (donc le contenu de maPage sera recompile avec lecode de la page appelante)Avec la deuxieme au moment de lexecution
UtilisationPour inclure (menu, entete...) qui sont generalement definis dans unfichier specifique et qui sera inclus dans les autres fichiers delapplication (pour eviter le copier/coller et favoriser la reutilisation).
18 Decembre 2017, CDI Lyon 2017 16 / 42
Les directives
Les directivesInclure le contenu dune autre page JSP
ou
Difference entre les deux solutions
Avec la premiere solution, le fichier sera charge au moment de lacompilation (donc le contenu de maPage sera recompile avec lecode de la page appelante)Avec la deuxieme au moment de lexecution
UtilisationPour inclure (menu, entete...) qui sont generalement definis dans unfichier specifique et qui sera inclus dans les autres fichiers delapplication (pour eviter le copier/coller et favoriser la reutilisation).
18 Decembre 2017, CDI Lyon 2017 16 / 42
Les directives
Les directivesInclure le contenu dune autre page JSP
ou
Difference entre les deux solutions
Avec la premiere solution, le fichier sera charge au moment de lacompilation (donc le contenu de maPage sera recompile avec lecode de la page appelante)Avec la deuxieme au moment de lexecution
UtilisationPour inclure (menu, entete...) qui sont generalement definis dans unfichier specifique et qui sera inclus dans les autres fichiers delapplication (pour eviter le copier/coller et favoriser la reutilisation).
18 Decembre 2017, CDI Lyon 2017 16 / 42
Les directives
Les directives
Inclure des bibliotheques de balises (a voir dans un prochainchapitre)
18 Decembre 2017, CDI Lyon 2017 17 / 42
Recuperer les parametres dune requete
Recuperer les parametres dune requete
Comme pour les Servlets
request.getParameter("nomParameter");
18 Decembre 2017, CDI Lyon 2017 18 / 42
Recuperer les parametres dune requete
Recuperer les parametres dune requete
Projet JEE
Hello World (depuis une JSP)
18 Decembre 2017, CDI Lyon 2017 19 / 42
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSP
Et si la Servlet veut transmettre des donnees (variables, objets...)a la vue ?
On peut utiliser request.setAttribute() pour transmettre etrequest.getAttribute() pour recuperer
request.setAttribute("nomAttribut","valeur")
request.getAttribute("nomAttribut") : recupere lobjetayant le nom nomAttribut qui doit correspondre au nom utiliselors de lenvoi
18 Decembre 2017, CDI Lyon 2017 20 / 42
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSP
Envoi de donnees par la Servlet
protected void doGet(HttpServletRequest request,HttpServletResponse response) throwsServletException, IOException {
String ville = "Marseille";request.setAttribute("maVille",ville);// lenvoi de request se fait apres cette
instructionthis.getServletContext().getRequestDispatcher("/
WEB-INF/vue.jsp").forward(request, response);}
18 Decembre 2017, CDI Lyon 2017 21 / 42
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSPRecuperation de donnees par la JSP
Projet JEE
18 Decembre 2017, CDI Lyon 2017 22 / 42
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSP
Envoi dun objet
protected void doGet(HttpServletRequest request,HttpServletResponse response) throwsServletException, IOException {Personne perso = new Personne();perso.setNom("Wick");perso.setPrenom("John");perso.setNum(100);request.setAttribute("perso",perso);this.getServletContext().getRequestDispatcher("/
WEB-INF/vue.jsp").forward(request, response);}
18 Decembre 2017, CDI Lyon 2017 23 / 42
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSP
Recuperation de lobjet
Projet JEE
18 Decembre 2017, CDI Lyon 2017 24 / 42
Portee dune variable
Portee dune