JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la...

64
JEE : Java Server Pages (JSP) Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en programmation par contrainte (IA) Ing ´ enieur en g ´ enie logiciel [email protected] H & H: Research and Training 1 / 45

Transcript of JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la...

Page 1: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

JEE : Java Server Pages (JSP)

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en programmation par contrainte (IA)

Ingenieur en genie logiciel

[email protected]

H & H: Research and Training 1 / 45

Page 2: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

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

H & H: Research and Training 2 / 45

Page 3: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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)

H & H: Research and Training 3 / 45

Page 4: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Introduction

Une page JSP : appelee par le controleur

Client

Controleur

(Servlet)

Serveur

Vue

(page JSP)

Modele

(Java Bean)

RequeteHTTP

ReponseHTTP

H & H: Research and Training 4 / 45

Page 5: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 5 / 45

Page 6: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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>

H & H: Research and Training 6 / 45

Page 7: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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><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>

H & H: Research and Training 7 / 45

Page 8: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Creer une page JSP

Creation d’une page JSP

Comment l’appeler?

C’est toujours le controleur (Servlet) qui communique avec lesvues

H & H: Research and Training 8 / 45

Page 9: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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)

H & H: Research and Training 9 / 45

Page 10: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 10 / 45

Page 11: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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); %>

H & H: Research and Training 11 / 45

Page 12: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Les balises JSP

Initiation aux balises JSP

AttentionIl est deconseille de melanger du code HTML avec du code JAVA

H & H: Research and Training 12 / 45

Page 13: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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 balise (directive taglib)

H & H: Research and Training 13 / 45

Page 14: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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 balise (directive taglib)

H & H: Research and Training 13 / 45

Page 15: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Les directives

Les directivesUtiliser la directive page pour definir des donnees relatives a la page (code auto-genere ala creation d’une JSP)

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

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

<%@ page import="java.util.Date" %>

Autres attributs

extends

import

session = "true | false"

isELIgnored = "true | false"

...

H & H: Research and Training 14 / 45

Page 16: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Les directives

Les directivesUtiliser la directive page pour definir des donnees relatives a la page (code auto-genere ala creation d’une JSP)

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

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

<%@ page import="java.util.Date" %>

Autres attributs

extends

import

session = "true | false"

isELIgnored = "true | false"

...

H & H: Research and Training 14 / 45

Page 17: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Les directives

Les directivesUtiliser la directive page pour definir des donnees relatives a la page (code auto-genere ala creation d’une JSP)

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

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

<%@ page import="java.util.Date" %>

Autres attributs

extends

import

session = "true | false"

isELIgnored = "true | false"

...

H & H: Research and Training 14 / 45

Page 18: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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).

H & H: Research and Training 15 / 45

Page 19: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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).

H & H: Research and Training 15 / 45

Page 20: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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).

H & H: Research and Training 15 / 45

Page 21: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Les directives

Les directives

Inclure des bibliotheques de balises (a voir dans un prochainchapitre)

<%@ taglib uri="maLib" prefix="tag" %>

H & H: Research and Training 16 / 45

Page 22: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

Recuperer les parametres d’une requete

Recuperer les parametres d’une requete

Comme pour les Servlets

request.getParameter("nomParameter");

H & H: Research and Training 17 / 45

Page 23: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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>

H & H: Research and Training 18 / 45

Page 24: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 19 / 45

Page 25: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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);}

H & H: Research and Training 20 / 45

Page 26: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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>

H & H: Research and Training 21 / 45

Page 27: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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);}

H & H: Research and Training 22 / 45

Page 28: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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>

H & H: Research and Training 23 / 45

Page 29: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 24 / 45

Page 30: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 25 / 45

Page 31: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 25 / 45

Page 32: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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");

%>

H & H: Research and Training 26 / 45

Page 33: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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");

%>

H & H: Research and Training 26 / 45

Page 34: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Definition

a ete proposee par JSTL (Java 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,

...

H & H: Research and Training 27 / 45

Page 35: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Definition

a ete proposee par JSTL (Java 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,

...

H & H: Research and Training 27 / 45

Page 36: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Les EL supportent plusieurs types du langage Java

Long

Double

String : entoure par "..." ou ’...’

Boolean

...

Les EL permettent d’evaluer une expression arithmetique

${ 5 } <!-- affiche 5 -->${ 5.2 } <!-- affiche 5.2 -->${ "bonjour" } <!-- affiche bonjour -->${ ’bonjour’ } <!-- affiche bonjour -->${ true } <!-- affiche true -->

H & H: Research and Training 28 / 45

Page 37: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Les EL supportent plusieurs types du langage Java

Long

Double

String : entoure par "..." ou ’...’

Boolean

...

Les EL permettent d’evaluer une expression arithmetique

${ 5 } <!-- affiche 5 -->${ 5.2 } <!-- affiche 5.2 -->${ "bonjour" } <!-- affiche bonjour -->${ ’bonjour’ } <!-- affiche bonjour -->${ true } <!-- affiche true -->

H & H: Research and Training 28 / 45

Page 38: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Les EL permettent d’evaluer une expression arithmetique

${ 4 * 3 + 5 } <!-- affiche 17 -->${ 8 % 2 } <!-- affiche 0 -->

Les operateurs arithmetiques

+ : addition

- : soustraction

* : multiplication

/ ou div : division

% ou mod : reste de la division

H & H: Research and Training 29 / 45

Page 39: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Les EL permettent d’evaluer une expression arithmetique

${ 4 * 3 + 5 } <!-- affiche 17 -->${ 8 % 2 } <!-- affiche 0 -->

Les operateurs arithmetiques

+ : addition

- : soustraction

* : multiplication

/ ou div : division

% ou mod : reste de la division

H & H: Research and Training 29 / 45

Page 40: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression LanguageOn peut realiser des tests en utilisant les operateurs de comparaison

${ ’e’ < ’f’ } <!-- affiche true -->${ 5 + 5 == 25 } <!-- affiche false -->

Operateurs de comparaison

== ou eq : pour tester l’egalite

!= ou ne : pour tester l’inegalite

> ou gt : superieur a

< ou lt : inferieur a

>= ou ge : superieur ou egal a

<= ou le : inferieur ou egal a

H & H: Research and Training 30 / 45

Page 41: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression LanguageOn peut realiser des tests en utilisant les operateurs de comparaison

${ ’e’ < ’f’ } <!-- affiche true -->${ 5 + 5 == 25 } <!-- affiche false -->

Operateurs de comparaison

== ou eq : pour tester l’egalite

!= ou ne : pour tester l’inegalite

> ou gt : superieur a

< ou lt : inferieur a

>= ou ge : superieur ou egal a

<= ou le : inferieur ou egal a

H & H: Research and Training 30 / 45

Page 42: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

On peut aussi enchaıner les tests en utilisant les operateurslogiques

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

Operateurs logiques

&& ou and : et

|| ou or : ou

! ou not : non

H & H: Research and Training 31 / 45

Page 43: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

On peut aussi enchaıner les tests en utilisant les operateurslogiques

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

Operateurs logiques

&& ou and : et

|| ou or : ou

! ou not : non

H & H: Research and Training 31 / 45

Page 44: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Pour les chaınes de caracteres, on peut utiliser l’operateur empty

${ empty ’chaine’ } <!-- affiche false -->${ !empty ’chaine’ } <!-- affiche true -->${ !empty ’chaine’ ? true : false } <!-- test

ternaire affichant true -->

Les resultats sont affiches la ou l’EL est appelee

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

H & H: Research and Training 32 / 45

Page 45: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Pour les chaınes de caracteres, on peut utiliser l’operateur empty

${ empty ’chaine’ } <!-- affiche false -->${ !empty ’chaine’ } <!-- affiche true -->${ !empty ’chaine’ ? true : false } <!-- test

ternaire affichant true -->

Les resultats sont affiches la ou l’EL est appelee

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

H & H: Research and Training 32 / 45

Page 46: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression Language

Pour les chaınes de caracteres, on peut utiliser l’operateur empty

${ empty ’chaine’ } <!-- affiche false -->${ !empty ’chaine’ } <!-- affiche true -->${ !empty ’chaine’ ? true : false } <!-- test

ternaire affichant true -->

Les resultats sont affiches la ou l’EL est appelee

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

H & H: Research and Training 32 / 45

Page 47: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression LanguageLes EL simplifient la recuperation des attributs ajoutes depuis la Servlet dansl’objet request

${ nom } <!-- affiche la valeur de la variable nom definie dansla Servlet appelante -->

Avec les scriptlet, pour recuperer un objet on fait

<%@ page import = "org.eclipse.model.*" %><%Personne p = (Personne) request.getAttribute("perso");out.print("Hello " + p.getPrenom() + " " + p.getNom());

%>

Avec EL, l’ecriture est plus simple

${ perso.nom } <!-- affiche Wick -->${ perso.getPrenom() } <!-- affiche John -->

H & H: Research and Training 33 / 45

Page 48: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression LanguageLes EL simplifient la recuperation des attributs ajoutes depuis la Servlet dansl’objet request

${ nom } <!-- affiche la valeur de la variable nom definie dansla Servlet appelante -->

Avec les scriptlet, pour recuperer un objet on fait

<%@ page import = "org.eclipse.model.*" %><%Personne p = (Personne) request.getAttribute("perso");out.print("Hello " + p.getPrenom() + " " + p.getNom());

%>

Avec EL, l’ecriture est plus simple

${ perso.nom } <!-- affiche Wick -->${ perso.getPrenom() } <!-- affiche John -->

H & H: Research and Training 33 / 45

Page 49: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

EL : Expression LanguageLes EL simplifient la recuperation des attributs ajoutes depuis la Servlet dansl’objet request

${ nom } <!-- affiche la valeur de la variable nom definie dansla Servlet appelante -->

Avec les scriptlet, pour recuperer un objet on fait

<%@ page import = "org.eclipse.model.*" %><%Personne p = (Personne) request.getAttribute("perso");out.print("Hello " + p.getPrenom() + " " + p.getNom());

%>

Avec EL, l’ecriture est plus simple

${ perso.nom } <!-- affiche Wick -->${ perso.getPrenom() } <!-- affiche John -->

H & H: Research and Training 33 / 45

Page 50: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

Transmission de donnees entre Servlet/JSP

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() }

Meme si l’objet ou un de ses attributs n’existe pas, null ne serajamais affiche

H & H: Research and Training 34 / 45

Page 51: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

EL : Expression Language

Transmission de donnees entre Servlet/JSP

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() }

Meme si l’objet ou un de ses attributs n’existe pas, null ne serajamais affiche

H & H: Research and Training 34 / 45

Page 52: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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"] }.

H & H: Research and Training 35 / 45

Page 53: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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"] }.

H & H: Research and Training 35 / 45

Page 54: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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"] }.

H & H: Research and Training 35 / 45

Page 55: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 36 / 45

Page 56: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

...

H & H: Research and Training 37 / 45

Page 57: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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.

...

H & H: Research and Training 38 / 45

Page 58: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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}

H & H: Research and Training 39 / 45

Page 59: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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: %>

H & H: Research and Training 40 / 45

Page 60: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 41 / 45

Page 61: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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

H & H: Research and Training 42 / 45

Page 62: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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>

H & H: Research and Training 43 / 45

Page 63: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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 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

H & H: Research and Training 44 / 45

Page 64: JEE : Java Server Pages (JSP)Introduction Introduction JSP Java Server Pages Une technologie de la plateforme JEE permettant de creer´ dynamiquement des pages HTML (d’extension

c© Achref EL MOUELHI c©

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.

H & H: Research and Training 45 / 45