Vous êtes sur la page 1sur 64

JEE : Java Server Pages (JSP)

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 45


Plan
1 Introduction
2 Créer une page JSP
3 Les balises JSP
4 Les directives
5 Récupérer les paramètres d’une requête
6 Transmission de données entre Servlet/JSP
7 Portée d’une variable
8 Création d’un objet
9 EL : Expression Language
10 Objets implicites
11 Gérer les exceptions

H & H: Research and Training 2 / 45


Introduction

Introduction

JSP
Java Server Pages
I c

ELH
Une technologie de la plateforme JEE permettant de créer
U
dynamiquement des pages HTML (d’extension .jsp)
L MO
E
Une page JSP sera transformée par le compilateur en Servlet
f
chre
c A
Ensuite cette Servlet sera compilée par la JVM (machine virtuelle)

Les JSP sont extensibles : on peut créer nos propres balises JSP
(avec JSTL)

H & H: Research and Training 3 / 45


Introduction

Une page JSP : appelée par le contrôleur

Vue Modèle
(page JSP) (Java Bean)

I c

ELH
U
L MO
re f E
chRequête
c A

HTTP
Contrôleur
(Servlet)

Réponse
HTTP
Client Serveur

H & H: Research and Training 4 / 45


Créer une page JSP

Création d’une page JSP

Déroulement
I c

EL
Faire un clic droit sur WEB-INF de notre projet H
U
MO
Aller dans New et choisir JSP File
L
r e E par vue.jsp (par exemple)
f name:
h
Remplir le champ File
c
Valider c A

H & H: Research and Training 5 / 45


Créer une page JSP

Création d’une page JSP


Notre vue générée
<%@ page language="java" contentType="text/html; charset=
UTF-8"
pageEncoding="UTF-8"%>
I c

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional
//EN" "http://www.w3.org/TR/html4/loose.dtd">
ELH
U
<html>
<head>
L MO
f E
hre
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"> c
c A

<title>Insert title here</title>
</head>
<body>

</body>
</html>

H & H: Research and Training 6 / 45


Créer une page JSP

Création d’une page JSP


Préparons notre Hello World
<%@ page language="java" contentType="text/html;
charset=UTF-8"
pageEncoding="UTF-8"%>
I c

<!DOCTYPE HTML>
ELH
<html>
U
<head>
L MO
f E
<meta http-equiv="Content-Type" content="text/
html; charset=UTF-8">
chre
c A

<title>Projet JEE</title>
</head>
<body>
Hello World (depuis une JSP)
</body>
</html>

H & H: Research and Training 7 / 45


Créer une page JSP

Création d’une page JSP

I c
Comment l’appeler ?
EL H
U
Oqui communique avec les
M
C’est toujours le contrôleur (Servlet)
L
vues
h r e fE
A c
c

H & H: Research and Training 8 / 45


Créer une page JSP

Création d’une page JSP


Pour construire correctement une page HTML
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException{
I c

this.getServletContext().getRequestDispatcher("/
ELH
WEB-INF/vue.jsp").forward(request, response);
U
}
L MO
f E
Explication
chre
c A
this.getServletContext() : permet de communiquer avec

d’autres composants (via le conteneur de Servlet)
getRequestDispatcher("/WEB-INF/vue.jsp") : permet
d’indiquer l’emplacement de la vue et de la récupérer
forward(request, response) : pour envoyer la requête et la
réponse (on les utilisera plus tard)
H & H: Research and Training 9 / 45
Les balises JSP

Initiation aux balises JSP

Les balises JSP


sont définies par <% ... %>
I c

ELH
Entre ces deux balises, on peut utiliser les bases algorithmiques
du langage Java : U
L MO
fE
des structures conditionnelles
des structures itr
c h e
ératives
... c A

Les balises JSP peuvent être utilisées plusieurs fois dans une
page JSP

H & H: Research and Training 10 / 45


Les balises JSP

Initiation aux balises JSP

Balises spéciales
I c
<%-- ... --%> : pour ajouter un commentaire
EL H
<%! String var; %> : pourM
U
O une variable directement
déclarer
fE
dans la classe de la servlet. L
h r e
c: pour afficher le contenu de la variable var ≡ <%
<%= var %>
c A
out.println(var); %>

H & H: Research and Training 11 / 45


Les balises JSP

Initiation aux balises JSP

I c
EL H
Attention U
O avec du code JAVA
L MHTML
Il est déconseillé de mélanger du code

h r e fE
A c
c

H & H: Research and Training 12 / 45


Les directives

Les directives
Définition
Les directives sont des instructions dans des balises JSP
spéciales
I c

Elles ont la structure suivante :
ELH
<%@ directive {attribut="valeur"} %>
U
L MO
f E
chre
c A

H & H: Research and Training 13 / 45


Les directives

Les directives
Définition
Les directives sont des instructions dans des balises JSP
spéciales
I c

Elles ont la structure suivante :
ELH
<%@ directive {attribut="valeur"} %>
U
L MO
f E
chre
Rôle c A

définir des données relatives à la page (directive page)
inclure une autre page JSP (directive include)
inclure des bibliothèques de balise (directive taglib)

H & H: Research and Training 13 / 45


Les directives

Les directives
Utiliser la directive page pour définir des données relatives à la page (code auto-généré à
la création d’une JSP)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 14 / 45


Les directives

Les directives
Utiliser la directive page pour définir des données relatives à la page (code auto-généré à
la création d’une JSP)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

I c

H
Utiliser l’attribut import pour importer une classe à utiliser dans la page

EL
<%@ page import="java.util.Date" %>
U
L MO
f E
chre
c A

H & H: Research and Training 14 / 45


Les directives

Les directives
Utiliser la directive page pour définir des données relatives à la page (code auto-généré à
la création d’une JSP)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

I c

H
Utiliser l’attribut import pour importer une classe à utiliser dans la page

EL
<%@ page import="java.util.Date" %>
U
L MO
f E
Autres attributs
chre
extends
c A

import

session = "true | false"

isELIgnored = "true | false"

...

H & H: Research and Training 14 / 45


Les directives

Les directives
Inclure le contenu d’une autre page JSP
<%@ include file="maPage.jsp" %>
ou
<jsp:directive.include file="maPage.jsp" />
I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 15 / 45


Les directives

Les directives
Inclure le contenu d’une autre page JSP
<%@ include file="maPage.jsp" %>
ou
<jsp:directive.include file="maPage.jsp" />
I c
EL H
Différence entre les deux solutions
U
Avec la première solution, leL MO
fichier sera chargé au moment de la
compilation (donc le e E
f de maPage sera recompilé avec le
r contenu
c h
cdeuxiAème au moment de l’exécution
code de la page appelante)
Avec la

H & H: Research and Training 15 / 45


Les directives

Les directives
Inclure le contenu d’une autre page JSP
<%@ include file="maPage.jsp" %>
ou
<jsp:directive.include file="maPage.jsp" />
I c
EL H
Différence entre les deux solutions
U
Avec la première solution, leL MO
fichier sera chargé au moment de la
compilation (donc le e E
f de maPage sera recompilé avec le
r contenu
c h
cdeuxiAème au moment de l’exécution
code de la page appelante)
Avec la

Utilisation
Pour inclure (menu, entête...) qui sont généralement définis dans un
fichier spécifique et qui sera inclus dans les autres fichiers de
l’application (pour éviter le copier/coller et favoriser la réutilisation).
H & H: Research and Training 15 / 45
Les directives

Les directives

I c

ELH
Inclure des bibliothèques de balises (à voir dans un prochain
U
MO
chapitre)

E
<%@ taglib uri="maLib" prefix="tag" %>
f L
chre
c A

H & H: Research and Training 16 / 45


Récupérer les paramètres d’une requête

Récupérer les paramètres d’une requête

I c

EL H
Comme pour les Servlets
U
L MO
request.getParameter("nomParameter");

h r e fE
A c
c

H & H: Research and Training 17 / 45


Récupérer les paramètres d’une requête

Récupérer les paramètres d’une requête


<%@ page language="java" contentType="text/html; charset=
UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
I c

<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
ELH
U
<title>Projet JEE</title>
</head> L MO
f E
hre
<body>
Hello World (depuis une JSP)c
<% c A

String nom = request.getParameter("nom");
String prenom = request.getParameter("prenom");
out.println("<br/>Hello " + nom + " " + prenom);
%>
</body>
</html>
H & H: Research and Training 18 / 45
Transmission de données entre Servlet/JSP

Transmission de données entre Servlet/JSP

Et si la Servlet veut transmettre des données (variables, objets...)


à la vue ? I c

H
ELpour transmettre et
U
On peut utiliser request.setAttribute()
request.getAttribute() pour
L MO récupérer

r e fE
request.setAttribute("nomAttribut","valeur")
h
A c : récupère l’objet
c
request.getAttribute("nomAttribut")
le nom nomAttribut qui doit correspondre au nom utilisé
ayant
lors de l’envoi

H & H: Research and Training 19 / 45


Transmission de données entre Servlet/JSP

Transmission de données entre Servlet/JSP

Envoi de données par la Servlet


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
I c
ServletException, IOException {
EL H
U
L MO
String ville = "Marseille";

h
// l’envoicde ef E se fait après cette
request.setAttribute("maVille",ville);
rrequest
c A
instruction
this.getServletContext().getRequestDispatcher("/
WEB-INF/vue.jsp").forward(request, response);
}

H & H: Research and Training 20 / 45


Transmission de données entre Servlet/JSP

Transmission de données entre Servlet/JSP


Récupération de données par la JSP
<%@ page language="java" contentType="text/html; charset=
UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
I c

<head>
ELH
<meta http-equiv="Content-Type" content="text/html;
U
charset=UTF-8">
L MO
<title>Projet JEE</title>
f E
</head>
c hre
c A
<body>
<%

String notreVille = (String) request.getAttribute("
maVille");
out.println("Bienvenue à " + notreVille);
%>
</body>
</html>
H & H: Research and Training 21 / 45
Transmission de données entre Servlet/JSP

Transmission de données entre Servlet/JSP

Envoi d’un objet


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
I c

ServletException, IOException {
ELH
Personne perso = new Personne(); U
perso.setNom("Wick");
L MO
f E
hre
perso.setPrenom("John");
perso.setNum(100); c
c A

request.setAttribute("perso",perso);
this.getServletContext().getRequestDispatcher("/
WEB-INF/vue.jsp").forward(request, response);
}

H & H: Research and Training 22 / 45


Transmission de données entre Servlet/JSP

Transmission de données entre Servlet/JSP


Récupération de l’objet
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "org.eclipse.model.*" %>
<!DOCTYPE HTML>
I c

<html>
ELH
<head>
U
MO
<meta http-equiv="Content-Type" content="text/html; charset
L
=UTF-8">
f E
hre
<title>Projet JEE</title>
</head>
c
<body>
<% c A

Personne p = (Personne) request.getAttribute("perso");
out.print("Hello " + p.getPrenom() + " " + p.getNom());
%>
</body>
</html>

H & H: Research and Training 23 / 45


Portée d’une variable

Portée d’une variable

Quatre portée pour les variables

c
page : la variable est accessible seulement dans cette page
I
H
EL entre la servlet et
U
request : la variable est accessible seulement
la vue appelée
L MO
r
session : la variable
h e f Eaccessible dans toutes les pages de
est
l’applicationA c un utilisateur donné
pour
c
application : la variable est accessible dans toutes les pages
de l’application et est partagée par tous les utilisateurs

H & H: Research and Training 24 / 45


Création d’un objet

Transmission de données entre Servlet/JSP


Et si on a besoin de créer un objet dans la page JSP
<jsp:useBean id="perso" scope="page" class="org.
eclipse.model.Personne" >
</jsp:useBean>
I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 25 / 45


Création d’un objet

Transmission de données entre Servlet/JSP


Et si on a besoin de créer un objet dans la page JSP
<jsp:useBean id="perso" scope="page" class="org.
eclipse.model.Personne" >
</jsp:useBean>
I c

ELH
U
Explication
L MO
f E
reest équivalente en Java à Personne
c h
La balise précédente
c A Personne();
perso = new
Notre objet est accessible seulement dans cette page JSP
(scope="page")
Il faut que notre classe Personne soit un JavaBean :
obligatoirement un constructeur sans paramètre
H & H: Research and Training 25 / 45
Création d’un objet

Transmission de données entre Servlet/JSP


Et si on a besoin de créer un objet dans la page JSP et affecter des valeurs aux
attributs
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.
Personne" >
<jsp:setProperty name="perso" property="nom" value="wick"/>
I c

<jsp:setProperty name="perso" property="prenom" value="john"/
>
ELH
U
MO
</jsp:useBean>

f E L
chre
c A

H & H: Research and Training 26 / 45


Création d’un objet

Transmission de données entre Servlet/JSP


Et si on a besoin de créer un objet dans la page JSP et affecter des valeurs aux
attributs
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.
Personne" >
<jsp:setProperty name="perso" property="nom" value="wick"/>
I c

<jsp:setProperty name="perso" property="prenom" value="john"/
>
ELH
U
MO
</jsp:useBean>

f E L
Ou aussi
chre
Personne" > c A
<jsp:useBean id="perso" scope="page" class="org.eclipse.model.

</jsp:useBean>

<%
perso.setNom("wick");
perso.setPrenom("wick");
%>

H & H: Research and Training 26 / 45


EL : Expression Language

EL : Expression Language
Définition
a été proposée par JSTL (Java Standard Tag Library)
est disponible depuis la version 2.4 de l’API Servlet
I c

ELH
permet d’optimiser les pages JSP (simplifier le code)
U
MO }
a une forme générale ${ expression
L
h r e fE
A c
c

H & H: Research and Training 27 / 45


EL : Expression Language

EL : Expression Language
Définition
a été proposée par JSTL (Java Standard Tag Library)
est disponible depuis la version 2.4 de l’API Servlet
I c

ELH
permet d’optimiser les pages JSP (simplifier le code)
U
MO }
a une forme générale ${ expression
L
h r e fE
A c
Rôle c
Réaliser des tests, des opérations arithmétiques
Manipuler des objets, des collections,
...
H & H: Research and Training 27 / 45
EL : Expression Language

EL : Expression Language
Les EL supportent plusieurs types du langage Java

Long

Double

I c

String : entouré par "..." ou ’...’
ELH
U
MO
Boolean

...
f E L
c hre
c A

H & H: Research and Training 28 / 45


EL : Expression Language

EL : Expression Language
Les EL supportent plusieurs types du langage Java

Long

Double

I c

String : entouré par "..." ou ’...’
ELH
U
MO
Boolean

...
f E L
A c hre
c
Les EL permettent d’évaluer une expression arithmétique
${ 5 } <!-- affiche 5 -->
${ 5.2 } <!-- affiche 5.2 -->
${ "bonjour" } <!-- affiche bonjour -->
${ ’bonjour’ } <!-- affiche bonjour -->
${ true } <!-- affiche true -->
H & H: Research and Training 28 / 45
EL : Expression Language

EL : Expression Language
Les EL permettent d’évaluer une expression arithmétique
${ 4 * 3 + 5 } <!-- affiche 17 -->
${ 8 % 2 } <!-- affiche 0 -->

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 29 / 45


EL : Expression Language

EL : Expression Language
Les EL permettent d’évaluer une expression arithmétique
${ 4 * 3 + 5 } <!-- affiche 17 -->
${ 8 % 2 } <!-- affiche 0 -->

I c

ELH
U
Les opérateurs arithmétiques
L MO
f E
+ : addition
c hre
c A

- : soustraction

* : multiplication
/ ou div : division
% ou mod : reste de la division

H & H: Research and Training 29 / 45


EL : Expression Language

EL : Expression Language
On peut réaliser des tests en utilisant les opérateurs de comparaison
${ ’e’ < ’f’ } <!-- affiche true -->
${ 5 + 5 == 25 } <!-- affiche false -->

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 30 / 45


EL : Expression Language

EL : Expression Language
On peut réaliser des tests en utilisant les opérateurs de comparaison
${ ’e’ < ’f’ } <!-- affiche true -->
${ 5 + 5 == 25 } <!-- affiche false -->

I c

Opérateurs de comparaison
ELH
U
== ou eq : pour tester l’égalité
L MO
f E
hre
!= ou ne : pour tester l’inégalité
c
c A

> ou gt : supérieur à

< ou lt : inférieur à

>= ou ge : supérieur ou égal à

<= ou le : inférieur ou égal à

H & H: Research and Training 30 / 45


EL : Expression Language

EL : Expression Language

On peut aussi enchaı̂ner les tests en utilisant les opérateurs


logiques
${ 2 == 5 || 3 == 4 } <!-- affiche false -->
${ 2 < 5 && 5 >= 3 } <!-- affiche true --> I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 31 / 45


EL : Expression Language

EL : Expression Language

On peut aussi enchaı̂ner les tests en utilisant les opérateurs


logiques
${ 2 == 5 || 3 == 4 } <!-- affiche false -->
${ 2 < 5 && 5 >= 3 } <!-- affiche true --> I c

ELH
U
L MO
Opérateurs logiques re f E
A ch
&& ou c : et
and
|| ou or : ou
! ou not : non

H & H: Research and Training 31 / 45


EL : Expression Language

EL : Expression Language

Pour les chaı̂nes de caractères, on peut utiliser l’opérateur empty


${ empty ’chaine’ } <!-- affiche false -->
${ !empty ’chaine’ } <!-- affiche true -->
I c

${ !empty ’chaine’ ? true : false } <!-- test
ELH
U
MO
ternaire affichant true -->

f E L
c hre
c A

H & H: Research and Training 32 / 45


EL : Expression Language

EL : Expression Language

Pour les chaı̂nes de caractères, on peut utiliser l’opérateur empty


${ empty ’chaine’ } <!-- affiche false -->
${ !empty ’chaine’ } <!-- affiche true -->
I c

${ !empty ’chaine’ ? true : false } <!-- test
ELH
U
MO
ternaire affichant true -->

f E L
c hre
c A

H & H: Research and Training 32 / 45


EL : Expression Language

EL : Expression Language

Pour les chaı̂nes de caractères, on peut utiliser l’opérateur empty


${ empty ’chaine’ } <!-- affiche false -->
${ !empty ’chaine’ } <!-- affiche true -->
I c

${ !empty ’chaine’ ? true : false } <!-- test
ELH
U
MO
ternaire affichant true -->

f E L
A c hre
c
Les résultats sont affichés là où l’EL est appelée

<div> 7 < 5 : ${ 7 < 5 } </div>
<div> 7 < 5 : false </div>

H & H: Research and Training 32 / 45


EL : Expression Language

EL : Expression Language
Les EL simplifient la récupération des attributs ajoutés depuis la Servlet dans
l’objet request
${ nom } <!-- affiche la valeur de la variable nom définie dans
la Servlet appelante -->

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 33 / 45


EL : Expression Language

EL : Expression Language
Les EL simplifient la récupération des attributs ajoutés depuis la Servlet dans
l’objet request
${ nom } <!-- affiche la valeur de la variable nom définie dans
la Servlet appelante -->

I c

Avec les scriptlet, pour récupérer un objet on faitUE
LH
M O*" %>
<%@ page import = "org.eclipse.model.
E L
f request.getAttribute("perso");
<%
h r e
c" + p.getPrenom() + " " + p.getNom());
Personne p = (Personne)

%> c
out.print("Hello
A

H & H: Research and Training 33 / 45


EL : Expression Language

EL : Expression Language
Les EL simplifient la récupération des attributs ajoutés depuis la Servlet dans
l’objet request
${ nom } <!-- affiche la valeur de la variable nom définie dans
la Servlet appelante -->

I c

Avec les scriptlet, pour récupérer un objet on faitUE
LH
M O*" %>
<%@ page import = "org.eclipse.model.
E L
f request.getAttribute("perso");
<%
h r e
c" + p.getPrenom() + " " + p.getNom());
Personne p = (Personne)

%> c
out.print("Hello
A

Avec EL, l’écriture est plus simple


${ perso.nom } <!-- affiche Wick -->
${ perso.getPrenom() } <!-- affiche John -->
H & H: Research and Training 33 / 45
EL : Expression Language

Transmission de données entre Servlet/JSP

Explication

c

perso est le nom d’objet qui a été ajouté à la requête comme
I
attribut (avec request.setAttribute()
ELH
${ perso.nom } est équivalent à O
U
L M ${ perso.getNom() }

h r e fE
A c
c

H & H: Research and Training 34 / 45


EL : Expression Language

Transmission de données entre Servlet/JSP

Explication

c
perso est le nom d’objet qui a été ajouté à la requête comme
I
attribut (avec request.setAttribute()
EL H
${ perso.nom } est équivalent à O
U
L M ${ perso.getNom() }
h r e fE
A c
c
Même si l’objet ou un de ses attributs n’existe pas, null ne sera
jamais affiché

H & H: Research and Training 34 / 45


EL : Expression Language

EL : Expression Language
Considérons la liste suivante définie dans la Servlet
ArrayList<String> sport = new ArrayList<String>();
sport.add( "football" );
sport.add( "tennis" );
sport.add( "rugby");
I c

sport.add( "basketball" );
ELH
U
MO
request.setAttribute( "sport" , sport );

f E L
c hre
c A

H & H: Research and Training 35 / 45


EL : Expression Language

EL : Expression Language
Considérons la liste suivante définie dans la Servlet
ArrayList<String> sport = new ArrayList<String>();
sport.add( "football" );
sport.add( "tennis" );
sport.add( "rugby");
I c

sport.add( "basketball" );
ELH
U
MO
request.setAttribute( "sport" , sport );

E L
Pour récupérer l’élément d’indice i dans la vue
f
sport.get(i);
c hre
sport[i];
sport[’i’];
c A

sport["i"];

H & H: Research and Training 35 / 45


EL : Expression Language

EL : Expression Language
Considérons la liste suivante définie dans la Servlet
ArrayList<String> sport = new ArrayList<String>();
sport.add( "football" );
sport.add( "tennis" );
sport.add( "rugby");
I c

sport.add( "basketball" );
ELH
U
MO
request.setAttribute( "sport" , sport );

E L
Pour récupérer l’élément d’indice i dans la vue
f
sport.get(i);
c hre
sport[i];
sport[’i’];
c A

sport["i"];
Exemple
J’aime le ${ sport.get(0) } et le ${ sport[3] }.
Je deteste le ${ sport[’1’] } et le ${ sport["3"] }.
H & H: Research and Training 35 / 45
Objets implicites

Objets implicites

Dans les exemples précédents


I c
L H
on a utilisé des objets (implicites) sans les instancier.
E
out : pour afficher un message O U
L M
ef E
request : pour récupérer
r
des attributs et/ou des paramètres

c h
Acertains autres)
ces objets (et ont déjà été instanciés dans la
cqui correspond
Servlet à notre page JSP

H & H: Research and Training 36 / 45


Objets implicites

Les objets implicites

Autres objets implicites pour la JSP

session : permet de récupérer/écrire des données relatives à


l’utilisateur courant
I c
application : permet d’obtenir/modifierE
H
L informations
U des
MOelle est exécutée.
relatives à l’application dans laquelle
L
response : permetre
E
defmodifier des données relatives à la
A c h
réponse (encodage...)
c
exception : pour récupérer des informations sur l’exception
capturée
...

H & H: Research and Training 37 / 45


Objets implicites

Les objets implicites

Les objets implicites de EL sont des MAP

I c
sessionScope : une MAP qui permet de récupérer/écrire des

EL
données relatives à l’utilisateur courant H
param : une MAP qui permet deM récup
U
Oérer/écrire les noms et
f
valeurs des paramètres de L
Ela requête.
r e
ch qui permet d’associer les noms et instances
c A
cookie : une
des cookies.
MAP

...

H & H: Research and Training 38 / 45


Objets implicites

Les objets implicites

Le code JSP permettant de récupérer les paramètres d’une


requête
<%
I c

String nom = request.getParameter("nom");
ELH
String prenom = request.getParameter("prenom"); U
L
out.println("<br/>Hello " + nom + " " + prenom); MO
f E
hre
%>
c
c A

On peut le remplacer par
Hello ${param.prenom} ${param.nom}

H & H: Research and Training 39 / 45


Gérer les exceptions

Gérer les exceptions


Considérant le code suivant (contenant une division par zéro)
<%
int x = 3 / 0;
%>
I c

EL H
U
L
À l’exécution, une exception est MOée
affich

h r e fE
A c
org.apache.jasper.JasperException: An exception

c [11]
occurred processing
at line
JSP page [/WEB-INF/vue.jsp]

10: <%
11: int x = 3 / 0;
12: %>

H & H: Research and Training 40 / 45


Gérer les exceptions

Gérer les exceptions

Il faut capturer l’exception


<%
try {
int x = 3 / 0;
I c

}
ELH
U
MO
catch(Exception e){

f E L
out.print("Erreur " + e.getMessage());

hre
}
c
c A
%>

Et le résultat est :
Erreur / by zero

H & H: Research and Training 41 / 45


Gérer les exceptions

Gérer les exceptions

I c

Une deuxième solution consiste à
ELH
U
créer une vue d’erreur
L MO
f E
hre
rediriger vers cette page chaque fois qu’une exception est levée
c
c A

H & H: Research and Training 42 / 45


Gérer les exceptions

Gérer les exceptions

La page erreur.jsp
<%@ page language="java" contentType="text/html;
charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
I c

<html>
ELH
U
MO
<head>

f E L
<meta http-equiv="Content-Type" content="text/

hre
html; charset=UTF-8">
c
c A
<title> Page d’erreur </title>
</head>
<body>

Erreur
</body>
</html>

H & H: Research and Training 43 / 45


Gérer les exceptions

Gérer les exceptions


Faisons référence à erreur.jsp dans vue.jsp (en ajoutant la ligne
errorPage="erreur.jsp") et supprimons le bloc try ... catch

<%@ page language="java" contentType="text/html; charset=UTF-8"


pageEncoding="UTF-8" errorPage="erreur.jsp" %>
<!DOCTYPE html>
I c

<html>
ELH
<head>
U
=UTF-8">
L MO
<meta http-equiv="Content-Type" content="text/html; charset

f E
hre
<title>First Page</title>
</head>
c
<body>
<% c A

int x = 3 / 0;
%>
</body>
</html>
En exécutant, la redirection a eu lieu mais le message d’erreur a disparu

H & H: Research and Training 44 / 45


Gérer les exceptions

Gérer les exceptions


Pour afficher le message d’erreur, il faut modifier erreur.jsp et déclarer la
page comme page d’erreur isErrorPage="true"

<%@ page language="java" contentType="text/html; charset=UTF-8"


pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html>
I c

<html>
ELH
U
MO
<head>
<meta http-equiv="Content-Type" content="text/html; charset
=UTF-8">
f E L
<title>Page d’erreur</title>
chre
c A
</head>
<body>
Erreur

<%=exception.getMessage() %>
</body>
</html>

Ne pas utiliser le navigateur d’Eclipse pour tester.

H & H: Research and Training 45 / 45

Vous aimerez peut-être aussi