les page jsp - lsis.org · plan 1 introduction 2 creer une page jsp´ 3 les balises jsp 4 les...
TRANSCRIPT
![Page 1: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/1.jpg)
Les page JSP
Achref El Mouelhi
Docteur de l’universite d’Aix-MarseilleChercheur en Programmation par contrainte (IA)
Ingenieur en Genie logiciel
18 Decembre 2017, CDI Lyon 2017 1 / 42
![Page 2: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/2.jpg)
Plan
1 Introduction
2 Creer une page JSP
3 Les balises JSP
4 Les directives
5 Recuperer les parametres d’une requete
6 Transmission de donnees entre Servlet/JSP
7 Portee d’une variable
8 Creation d’un objet
9 EL : Expression Language
10 Objets implicites
11 Gerer les exceptions
18 Decembre 2017, CDI Lyon 2017 2 / 42
![Page 3: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/3.jpg)
Introduction
Introduction
JSP
Java Server Pages
Une technologie de la plateforme JEE permettant de creerdynamiquement des pages HTML (d’extension .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
![Page 4: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/4.jpg)
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
![Page 5: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/5.jpg)
Creer une page JSP
Creation d’une 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
![Page 6: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/6.jpg)
Creer une page JSP
Creation d’une page JSP
Notre vue generee
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Insert title here</title></head><body>
</body></html>
18 Decembre 2017, CDI Lyon 2017 6 / 42
![Page 7: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/7.jpg)
Creer une page JSP
Creation d’une page JSP
Preparons notre Hello World
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Projet JEE</title></head><body>
Hello World (depuis une JSP)</body>
</html>
18 Decembre 2017, CDI Lyon 2017 7 / 42
![Page 8: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/8.jpg)
Creer une page JSP
Creation d’une page JSP
Comment l’appeler?
C’est toujours le controleur (Servlet) qui communique avec lesvues
18 Decembre 2017, CDI Lyon 2017 8 / 42
![Page 9: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/9.jpg)
Creer une page JSP
Creation d’une 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 avecd’autres composants (via le conteneur de Servlet)getRequestDispatcher("/WEB-INF/vue.jsp") : permetd’indiquer l’emplacement 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
![Page 10: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/10.jpg)
Les balises JSP
Initiation aux balises JSPObservons notre vue
<!-- la seule balise JSP --><%@ page language="java" contentType="text/html; charset=
UTF-8"pageEncoding="UTF-8"%>
<!-- le reste c’est du HTML --><!DOCTYPE HTML><html><head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Projet JEE</title></head><body>
Hello World (depuis une JSP)</body>
</html>
18 Decembre 2017, CDI Lyon 2017 10 / 42
![Page 11: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/11.jpg)
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
![Page 12: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/12.jpg)
Les balises JSP
Initiation aux balises JSP
Balises speciales
<%-- ... --%> : pour ajouter un commentaire
<%! String var; %> : pour declarer une variable directementdans la classe de la servlet.
<%= var %> : pour afficher le contenu de la variable var ≡ <%out.println(var); %>
18 Decembre 2017, CDI Lyon 2017 12 / 42
![Page 13: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/13.jpg)
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
![Page 14: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/14.jpg)
Les directives
Les directives
Definition
Les directives sont des instructions dans des balises JSPspeciales
Elles ont la structure suivante :<%@ directive {attribut="valeur"} %>
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
![Page 15: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/15.jpg)
Les directives
Les directives
Definition
Les directives sont des instructions dans des balises JSPspeciales
Elles ont la structure suivante :<%@ directive {attribut="valeur"} %>
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
![Page 16: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/16.jpg)
Les directives
Les directives
Definir des donnees relatives a la page
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
...<%@ page import="java.util.Date" %>
Autres attributs
extends
import
session = "true | false"
isELIgnored = "true | false"
...
18 Decembre 2017, CDI Lyon 2017 15 / 42
![Page 17: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/17.jpg)
Les directives
Les directives
Definir des donnees relatives a la page
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
...<%@ page import="java.util.Date" %>
Autres attributs
extends
import
session = "true | false"
isELIgnored = "true | false"
...
18 Decembre 2017, CDI Lyon 2017 15 / 42
![Page 18: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/18.jpg)
Les directives
Les directivesInclure le contenu d’une autre page JSP
<%@ include file="maPage.jsp" %>
ou
<jsp:directive.include file="maPage.jsp" />
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 l’execution
UtilisationPour inclure (menu, entete...) qui sont generalement definis dans unfichier specifique et qui sera inclus dans les autres fichiers del’application (pour eviter le copier/coller et favoriser la reutilisation).
18 Decembre 2017, CDI Lyon 2017 16 / 42
![Page 19: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/19.jpg)
Les directives
Les directivesInclure le contenu d’une autre page JSP
<%@ include file="maPage.jsp" %>
ou
<jsp:directive.include file="maPage.jsp" />
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 l’execution
UtilisationPour inclure (menu, entete...) qui sont generalement definis dans unfichier specifique et qui sera inclus dans les autres fichiers del’application (pour eviter le copier/coller et favoriser la reutilisation).
18 Decembre 2017, CDI Lyon 2017 16 / 42
![Page 20: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/20.jpg)
Les directives
Les directivesInclure le contenu d’une autre page JSP
<%@ include file="maPage.jsp" %>
ou
<jsp:directive.include file="maPage.jsp" />
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 l’execution
UtilisationPour inclure (menu, entete...) qui sont generalement definis dans unfichier specifique et qui sera inclus dans les autres fichiers del’application (pour eviter le copier/coller et favoriser la reutilisation).
18 Decembre 2017, CDI Lyon 2017 16 / 42
![Page 21: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/21.jpg)
Les directives
Les directives
Inclure des bibliotheques de balises (a voir dans un prochainchapitre)
<%@ taglib uri="maLib.tld" prefix="tag" %>
18 Decembre 2017, CDI Lyon 2017 17 / 42
![Page 22: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/22.jpg)
Recuperer les parametres d’une requete
Recuperer les parametres d’une requete
Comme pour les Servlets
request.getParameter("nomParameter");
18 Decembre 2017, CDI Lyon 2017 18 / 42
![Page 23: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/23.jpg)
Recuperer les parametres d’une requete
Recuperer les parametres d’une requete<%@ page language="java" contentType="text/html; charset=
UTF-8" pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Projet JEE</title></head><body>
Hello World (depuis une JSP)<%
String nom = request.getParameter("nom");String prenom = request.getParameter("prenom");out.println("<br/>Hello " + nom + " " + prenom);
%></body>
</html>
18 Decembre 2017, CDI Lyon 2017 19 / 42
![Page 24: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/24.jpg)
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 l’objetayant le nom nomAttribut qui doit correspondre au nom utiliselors de l’envoi
18 Decembre 2017, CDI Lyon 2017 20 / 42
![Page 25: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/25.jpg)
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);// l’envoi de request se fait apres cette
instructionthis.getServletContext().getRequestDispatcher("/
WEB-INF/vue.jsp").forward(request, response);}
18 Decembre 2017, CDI Lyon 2017 21 / 42
![Page 26: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/26.jpg)
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSPRecuperation de donnees par la JSP<%@ page language="java" contentType="text/html; charset=
UTF-8" pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Projet JEE</title></head><body>
<%String notreVille = (String) request.getAttribute("
maVille");out.println("Bienvenue a " + notreVille);
%></body>
</html>
18 Decembre 2017, CDI Lyon 2017 22 / 42
![Page 27: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/27.jpg)
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSP
Envoi d’un 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
![Page 28: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/28.jpg)
Transmission de donnees entre Servlet/JSP
Transmission de donnees entre Servlet/JSP
Recuperation de l’objet
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import = "org.eclipse.model.*" %><!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset
=UTF-8"><title>Projet JEE</title>
</head><body><%
Personne p = (Personne) request.getAttribute("perso");out.print("Hello " + p.getPrenom() + " " + p.getNom());
%></body>
</html>
18 Decembre 2017, CDI Lyon 2017 24 / 42
![Page 29: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/29.jpg)
Portee d’une variable
Portee d’une variable
Quatre portee pour les variables
page : la variable est accessible seulement dans cette page
request : la variable est accessible seulement entre la servlet etla vue appelee
session : la variable est accessible dans toutes les pages del’application pour un utilisateur donne
application : la variable est accessible dans toutes les pagesde l’application et est partagee par tous les utilisateurs
18 Decembre 2017, CDI Lyon 2017 25 / 42
![Page 30: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/30.jpg)
Creation d’un objet
Transmission de donnees entre Servlet/JSP
Et si on a besoin de creer un objet dans la page JSP
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.Personne" >
</jsp:useBean>
Explication
La balise precedente est equivalente en Java a Personneperso = new Personne();
Notre objet est accessible seulement dans cette page JSP(scope="page")
Il faut que notre classe Personne soit un JavaBean :obligatoirement un constructeur sans parametre
18 Decembre 2017, CDI Lyon 2017 26 / 42
![Page 31: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/31.jpg)
Creation d’un objet
Transmission de donnees entre Servlet/JSP
Et si on a besoin de creer un objet dans la page JSP
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.Personne" >
</jsp:useBean>
Explication
La balise precedente est equivalente en Java a Personneperso = new Personne();
Notre objet est accessible seulement dans cette page JSP(scope="page")
Il faut que notre classe Personne soit un JavaBean :obligatoirement un constructeur sans parametre
18 Decembre 2017, CDI Lyon 2017 26 / 42
![Page 32: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/32.jpg)
Creation d’un objet
Transmission de donnees entre Servlet/JSPEt si on a besoin de creer un objet dans la page JSP et affecter des valeurs auxattributs
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.Personne" ><jsp:setProperty name="perso" property="nom" value="wick"/><jsp:setProperty name="perso" property="prenom" value="john"/
></jsp:useBean>
Ou aussi
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.Personne" >
</jsp:useBean>
<%perso.setNom("wick");perso.setPrenom("wick");
%>
18 Decembre 2017, CDI Lyon 2017 27 / 42
![Page 33: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/33.jpg)
Creation d’un objet
Transmission de donnees entre Servlet/JSPEt si on a besoin de creer un objet dans la page JSP et affecter des valeurs auxattributs
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.Personne" ><jsp:setProperty name="perso" property="nom" value="wick"/><jsp:setProperty name="perso" property="prenom" value="john"/
></jsp:useBean>
Ou aussi
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.Personne" >
</jsp:useBean>
<%perso.setNom("wick");perso.setPrenom("wick");
%>
18 Decembre 2017, CDI Lyon 2017 27 / 42
![Page 34: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/34.jpg)
EL : Expression Language
EL : Expression Language
Definition
a ete proposee par JSTL (Java server page Standard Tag Library)
est disponible depuis la version 2.4 de l’API Servlet
permet d’optimiser les pages JSP (simplifier le code)
a une forme generale ${expression}
Role
Realiser des tests, des operations arithmetiques
Manipuler des objets, des collections,
...
18 Decembre 2017, CDI Lyon 2017 28 / 42
![Page 35: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/35.jpg)
EL : Expression Language
EL : Expression Language
Definition
a ete proposee par JSTL (Java server page Standard Tag Library)
est disponible depuis la version 2.4 de l’API Servlet
permet d’optimiser les pages JSP (simplifier le code)
a une forme generale ${expression}
Role
Realiser des tests, des operations arithmetiques
Manipuler des objets, des collections,
...
18 Decembre 2017, CDI Lyon 2017 28 / 42
![Page 36: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/36.jpg)
EL : Expression Language
EL : Expression LanguageRealiser des tests
${ true && true || false } <!-- affiche true -->${ ’e’ < ’f’ } <!-- affiche true -->${ 5 + 5 == 25 } <!-- affiche false -->${ empty ’chaine’ } <!-- affiche false -->${ !empty ’chaine’ } <!-- affiche true -->${ !empty ’chaine’ ? true : false } <!-- test
ternaire affichant true -->
Faire des operations arithmetiques
${ 4 * 3 + 5 } <!-- affiche 17 -->${ 8 % 2 } <!-- affiche 0 -->
Les resultats sont affiches la ou l’EL est appelee
<div> 7 < 5 : ${ 7 < 5 } </div><div> 7 < 5 : false </div>
18 Decembre 2017, CDI Lyon 2017 29 / 42
![Page 37: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/37.jpg)
EL : Expression Language
EL : Expression Language
Manipuler des objets
${ perso.nom } <!-- affiche Wick -->${ perso.getPrenom() } <!-- affiche John -->
Explication
perso est le nom d’objet qui a ete ajoute a la requete commeattribut (avec request.setAttribute()
${ perso.nom } est equivalent a ${ perso.getNom() }
18 Decembre 2017, CDI Lyon 2017 30 / 42
![Page 38: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/38.jpg)
EL : Expression Language
Transmission de donnees entre Servlet/JSP
Revenons au code precedent
<%@ page import = "org.eclipse.model.*" %><%Personne p = (Personne) request.getAttribute("
perso");out.print("Hello " + p.getPrenom() + " " + p.
getNom());%>
On peut le remplacer par
Hello ${perso.prenom} ${perso.nom}
Meme si l’objet ou un de ses attributs n’existe pas, null ne serajamais affiche
18 Decembre 2017, CDI Lyon 2017 31 / 42
![Page 39: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/39.jpg)
EL : Expression Language
Transmission de donnees entre Servlet/JSP
Revenons au code precedent
<%@ page import = "org.eclipse.model.*" %><%Personne p = (Personne) request.getAttribute("
perso");out.print("Hello " + p.getPrenom() + " " + p.
getNom());%>
On peut le remplacer par
Hello ${perso.prenom} ${perso.nom}
Meme si l’objet ou un de ses attributs n’existe pas, null ne serajamais affiche
18 Decembre 2017, CDI Lyon 2017 31 / 42
![Page 40: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/40.jpg)
EL : Expression Language
EL : Expression LanguageConsiderons la liste suivante definie dans la ServletArrayList<String> sport = new ArrayList<String>();sport.add( "football" );sport.add( "tennis" );sport.add( "rugby");sport.add( "basketball" );request.setAttribute( "sport" , sport );
Pour recuperer l’element d’indice i dans la vuesport.get(i);sport[i];sport[’i’];sport["i"];
ExempleJ’aime le ${ sport.get(0) } et le ${ sport[3] }.Je deteste le ${ sport[’1’] } et le ${ sport["3"] }.
18 Decembre 2017, CDI Lyon 2017 32 / 42
![Page 41: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/41.jpg)
EL : Expression Language
EL : Expression LanguageConsiderons la liste suivante definie dans la ServletArrayList<String> sport = new ArrayList<String>();sport.add( "football" );sport.add( "tennis" );sport.add( "rugby");sport.add( "basketball" );request.setAttribute( "sport" , sport );
Pour recuperer l’element d’indice i dans la vuesport.get(i);sport[i];sport[’i’];sport["i"];
ExempleJ’aime le ${ sport.get(0) } et le ${ sport[3] }.Je deteste le ${ sport[’1’] } et le ${ sport["3"] }.
18 Decembre 2017, CDI Lyon 2017 32 / 42
![Page 42: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/42.jpg)
EL : Expression Language
EL : Expression LanguageConsiderons la liste suivante definie dans la ServletArrayList<String> sport = new ArrayList<String>();sport.add( "football" );sport.add( "tennis" );sport.add( "rugby");sport.add( "basketball" );request.setAttribute( "sport" , sport );
Pour recuperer l’element d’indice i dans la vuesport.get(i);sport[i];sport[’i’];sport["i"];
ExempleJ’aime le ${ sport.get(0) } et le ${ sport[3] }.Je deteste le ${ sport[’1’] } et le ${ sport["3"] }.
18 Decembre 2017, CDI Lyon 2017 32 / 42
![Page 43: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/43.jpg)
Objets implicites
Objets implicites
Dans les exemples precedents
on a utilise des objets (implicites) sans les instancier.
out : pour afficher un message
request : pour recuperer des attributs et/ou des parametres
ces objets (et certains autres) ont deja ete instancies dans laServlet qui correspond a notre page JSP
18 Decembre 2017, CDI Lyon 2017 33 / 42
![Page 44: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/44.jpg)
Objets implicites
Les objets implicites
Autres objets implicites pour la JSP
session : permet de recuperer/ecrire des donnees relatives al’utilisateur courant
application : permet d’obtenir/modifier des informationsrelatives a l’application dans laquelle elle est executee.
response : permet de modifier des donnees relatives a lareponse (encodage...)
exception : pour recuperer des informations sur l’exceptioncapturee
...
18 Decembre 2017, CDI Lyon 2017 34 / 42
![Page 45: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/45.jpg)
Objets implicites
Les objets implicites
Les objets implicites de EL sont des MAP
sessionScope : une MAP qui permet de recuperer/ecrire desdonnees relatives a l’utilisateur courant
param : une MAP qui permet de recuperer/ecrire les noms etvaleurs des parametres de la requete.
cookie : une MAP qui permet d’associer les noms et instancesdes cookies.
...
18 Decembre 2017, CDI Lyon 2017 35 / 42
![Page 46: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/46.jpg)
Objets implicites
Les objets implicites
Le code JSP permettant de recuperer les parametres d’unerequete
<%String nom = request.getParameter("nom");String prenom = request.getParameter("prenom");out.println("<br/>Hello " + nom + " " + prenom);
%>
On peut le remplacer par
Hello ${param.prenom} ${param.nom}
18 Decembre 2017, CDI Lyon 2017 36 / 42
![Page 47: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/47.jpg)
Gerer les exceptions
Gerer les exceptions
Considerant le code suivant (contenant une division par zero)
<%int x = 3 / 0;
%>
A l’execution, une exception est affichee
org.apache.jasper.JasperException: An exceptionoccurred processing JSP page [/WEB-INF/vue.jsp]at line [11]
10: <%11: int x = 3 / 0;12: %>
18 Decembre 2017, CDI Lyon 2017 37 / 42
![Page 48: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/48.jpg)
Gerer les exceptions
Gerer les exceptions
Il faut capturer l’exception
<%try {int x = 3 / 0;
}catch(Exception e){out.print("Erreur " + e.getMessage());
}%>
Et le resultat est :
Erreur / by zero
18 Decembre 2017, CDI Lyon 2017 38 / 42
![Page 49: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/49.jpg)
Gerer les exceptions
Gerer les exceptions
Une deuxieme solution consiste a
creer une vue d’erreur
rediriger vers cette page chaque fois qu’une exception est levee
18 Decembre 2017, CDI Lyon 2017 39 / 42
![Page 50: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/50.jpg)
Gerer les exceptions
Gerer les exceptions
La page erreur.jsp
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/
html; charset=UTF-8"><title> Page d’erreur </title>
</head><body>
Erreur</body>
</html>
18 Decembre 2017, CDI Lyon 2017 40 / 42
![Page 51: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/51.jpg)
Gerer les exceptions
Gerer les exceptionsFaisons reference a erreur.jsp dans vue.jsp (en ajoutant la ligneerrorPage="erreur.jsp") et supprimons le bloc try ... catch
<%@page import="org.apache.jasper.tagplugins.jstl.core.Out"%><%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="erreur.jsp" %><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset
=UTF-8"><title>First Page</title>
</head><body><%int x = 3 / 0;
%></body>
</html>
En executant, la redirection a eu lieu mais le message d’erreur a disparu
18 Decembre 2017, CDI Lyon 2017 41 / 42
![Page 52: Les page JSP - lsis.org · Plan 1 Introduction 2 Creer une page JSP´ 3 Les balises JSP 4 Les directives 5 Recup´ erer les param´ etres d’une requ` eteˆ 6 Transmission de donnees](https://reader030.vdocuments.pub/reader030/viewer/2022021809/5c2865fa09d3f2246b8c268e/html5/thumbnails/52.jpg)
Gerer les exceptions
Gerer les exceptions
Pour afficher le message d’erreur, il faut modifier erreur.jsp et declarer lapage comme page d’erreur isErrorPage="true"
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset
=UTF-8"><title>Page d’erreur</title></head><body>
Erreur<%=exception.getMessage() %>
</body></html>
Ne pas utiliser le navigateur d’Eclipse pour tester.
18 Decembre 2017, CDI Lyon 2017 42 / 42