Académique Documents
Professionnel Documents
Culture Documents
2
JSP
◼ Les JSP sont une extension des servlets pour générer
du contenu dynamique
◼ Une page JSP est un document HTML contenant des
fragments de code Java
◼ partie statique : HTML ou XML
◼ partie dynamique: éléments JSP
◼ Les JSP utilisent généralement des Java Beans et/ou
des Enterprise Java Beans (EJB)
◼ Elles utilisent également des bibliothèques de balises
standards (taglibs)
3
JSP
◼ Une page JSP est exécutée dans un conteneur de
servlets
◼ Elle est convertie en servlet par le moteur de servlets
lors de son premier appel et compilée
◼ code HTML converti en instructions Java
◼ scripts JSP traduits en code Java
◼ appel directement de la servlet ensuite
◼ Le conteneur gère le cycle de vie d’une JSP
◼ Les servlets et les JSP peuvent utiliser les ressources
du serveur: BD, EJB, services Web
4
JSP
5
JSP (API)
◼ Packages
◼ javax.servlet.jsp
6
JSP
◼ Une page JSP est concrètement constitué de
◼ Code (X)HTML classique et
◼ Scripts
◼ Bibliothèque de tags spécifiques
◼ Balises personnalisées
◼ Différentes syntaxes pour intégrer les scripts
◼ Syntaxe JSP
◼ Syntaxe XML avec plusieurs espaces de nommage
◼ jsp
◼ balises (JSTL)
◼ Expression language
7
JSP (exemple 1)
<html>
<head>
<title>Bonjour tout le monde</title>
</head>
<body>
<h1>Bonjour tout le monde</h1>
Nous sommes le <%= new java.util.Date().toString() %>.
Nous allons apprendre à écrire des pages JSP.
</body>
</html>
8
Eléments JSP
◼ Dans la spécification JSP, les éléments
suivants sont définis
◼ Directives
◼ Scripts
◼ Actions
◼ Différentes syntaxes pour ces éléments
◼ Syntaxe JSP
◼ Syntaxe XML
◼ Expression Language
9
Eléments JSP
◼ Directives
◼ Elles fournissent des informations relatives à la
page
◼ Trois types de directives
◼ page pour spécifier les informations de la page
◼ include pour inclure une autre page ou un fragment de
page dans la page jsp
◼ taglib pour utiliser des bibliothèques de balises standards
10
Eléments JSP
◼ Directive page
◼ Définir et manipuler des attributs de la page
◼ Syntaxe JSP
<%@ page attributs %>
◼ Syntaxe XML
<jsp:directive.page attributs />
◼ Exemples
<%@ page import="java.util.*" %>
<jsp:directive.page pageEncoding="UTF8" />
11
Eléments JSP
◼ Directive page : attributs
◼ import: importer des paquetages
◼ contentType: définir le type de contenu de la page
◼ pageEncoding: spécifier l’encodage de la page
◼ info: décrire le contenu de la page
◼ isErrorPage: indiquer si la page est une page de
gestion d’erreur
◼ errorPage: indiquer l’URL de la page à renvoyer en
cas d’erreur
12
Eléments JSP
◼ Directive include
◼ Insérer le contenu d’une ressource dans la page
◼ Syntaxe JSP
<%@ include attributs %>
◼ Syntaxe XML
<jsp:directive.include attributs />
◼ Exemples
<%@ include file="test.jsp" %>
<jsp:directive.include file="test.jsp" />
13
Eléments JSP
◼ Scripts
◼ Insertion de code java dans la page JSP
◼ Quatre types de scripts
◼ Déclarations
◼ Scriptlets
◼ Expressions
◼ Commentaires
14
Eléments JSP
◼ Déclarations
◼ Déclarer et définir des variables et méthodes à
utiliser dans la page
◼ Syntaxe JSP
<%! code %>
◼ Syntaxe XML
<jsp:declaration> code </jsp:declaration>
◼ Exemples
<%! public int num =10; %>
<jsp:declaration> public int num =10; </jsp:declaration>
15
Eléments JSP
◼ Scriptlets
◼ Blocs d’instructions Java dans la page JSP
◼ Syntaxe JSP
<% code %>
◼ Syntaxe XML
<jsp:scriptlet> code </jsp:scriptlet>
◼ Exemples
<% for (int i=0; i<10; i++) %>
<jsp:scriptlet> for (int i=0; i<10; i++) </jsp:scriptlet>
16
Eléments JSP
◼ Expressions
◼ Valeurs d’une variable ou d’une expression Java à
insérer dans la page
◼ Syntaxe JSP
<%= code %>
◼ Syntaxe XML
<jsp:expression> code </jsp:expression>
◼ Exemples
<%= new java.util.Date() %>
<jsp:expression> new java.util.Date() </jsp:expression>
17
Eléments JSP
◼ Commentaires
◼ Commentaire spécifique à la page
<%-- commentaire --%>
◼ Commentaire transmis au client, commentaire
HTML
<!-- commentaire -->
◼ Exemples
<%-- ceci ne sera pas visible par le client--%>
<!-- Cette page est générée le 5 Nov 2020-->
18
Eléments JSP (exemple 2)
<html>
<head>
<title>Liste des universités publiques</title>
</head>
<body>
<%! String univ[] = {"ucad","ugb","uasz","uadb","ut"}; %>
<% for (int i = 0; i < univ.length; i++) { %>
<%= i+1 %> <%= univ[i] %> <br>
<% } %>
</body>
</html>
19
Eléments JSP
◼ Actions
◼ Elles permettent de modifier le comportement de la
page JSP lors de son exécution
◼ Elles sont intégrées à la page en utilisant la syntaxe
XML (balises personnalisées)
◼ Elles permettent de
◼ inclure dynamiquement un fichier (avec servlet)
◼ rediriger vers une autre page (avec servlet)
◼ utiliser les propriétés d’objets Java (Java Beans)
20
Eléments JSP
◼ Actions : inclusion
◼ Elle permet d’intégrer une autre page ou servlet lors du
traitement de la requête
◼ Elle est différente de la directive include (statique)
◼ Syntaxe
<jsp:include page="test.jsp"/>
◼ param peut être utilisé avec l’inclusion pour transmettre
de nouveaux paramètres
<jsp:include page="test.jsp">
<jsp:param name="parametre" value="valeur"/>
</jsp:include>
21
Eléments JSP
◼ Actions : redirection
◼ Elle permet de rediriger la requête vers une page
HTML, une autre page JSP ou une servlet
◼ Syntaxe
<jsp:forward page="test.jsp"/>
◼ Ne pas écrire du code après une redirection : le code
sera ignoré
◼ param peut être utilisé avec la redirection
<jsp:forward page="test.jsp">
<jsp:param name="parametre" value="valeur"/>
</jsp:forward>
22
Eléments JSP
23
Java Beans: c’est quoi?
◼ Les Java Beans sont des classes Java (POJO - Plain Old
Java Objects) suivant un ensemble de conventions
◼ constructeur public sans argument
◼ pas d’attributs publics
◼ méthodes accesseurs (getXxx) et modifieurs (setXxx)
publics pour manipuler les attributs
◼ isXxx pour les propriétés booléennes plutôt que getXxx
◼ Ils permettent de
◼ minimiser le code Java dans les pages JSP
◼ simplifier les traitements dans les JSP
◼ réutiliser les beans dans d’autres pages JSP
24
Java Beans (exemple 3)
package sn.uasz.m1.beans;
public class Personne {
private String prenom;
private String nom;
private int age = 0;
private boolean marie;
public Personne() {}
public String getPrenom() { return prenom;}
public void setPrenom(String prenom) { this.prenom = prenom;}
public String getNom() { return nom;}
public void setNom(String nom) { this.nom = nom;}
public int getAge () { return age;}
public void setAge(int age) { this.age = age;}
public boolean isMarie() { return marie;}
public void setMarie(boolean marie) { this.marie = marie;}
}
25
JSP & Java Beans
26
JSP & Java Beans
27
JSP & Java Beans
28
JSP & Java Beans (exemple 4)
<jsp:useBean id="individu" scope="session" class="sn.uasz.m1.beans.Personne"/>
29
JSP & Java Beans
30
JSP & Java Beans
◼ On peut aussi modifier les propriétés du bean à l’aide
des paramètres de la requête (courante)
◼ Syntaxe
◼ La propriété et le paramètre ont le même nom
<jsp:setProperty name="nomBean"
property="nomPropriete"/>
◼ La propriété et le paramètre ont des noms différents
<jsp:setProperty name="nomBean"
property="nomPropriete" param="parametre"/>
31
Objets implicites
◼ Un certain nombre d’objets sont définis implicitement
◼ On peut accéder à ces objets sans les déclarer ni les
initialiser au préalable
◼ request
◼ response
◼ out <%! int a ; int b; %>
◼ session <% a=Integer.parseInt(request.getParameter("a")); %>
<% b=Integer.parseInt(request.getParameter("b")); %>
◼ config <%= a+b %>
◼ exception http://localhost:8080/auth/calcul.jsp?a=5&b=15
◼ application
32
Exercice
◼ Créer une page jsp permettant de récupérer les
paramètres nom et prénom à partir de la requête et
de les afficher. Par exemple en tapant
http://localhost:8080/tp/test.jsp?pnom=Modou&nom
=Faye, la page affiche Bonjour Modou Faye.
33
Langages d’expressions (EL)
◼ Langages pour évaluer et intégrer les valeurs des
expressions dans des JSP
◼ Leur but est de manipuler plus simplement les données
dans des JSP
◼ limiter le code Java dans les JSP
◼ donner une meilleure lisibilité (beans et propriétés)
◼ Ils sont couramment utilisés avec des bibliothèques de
balises standards (taglibs)
34
Langages d’expressions (EL)
◼ Syntaxe
${expr} ou #{expr} avec expr une expression valide
◼ Exemple: ${personne.prenom}
36
Langages d’expressions (EL)
◼ Deux manières d’accéder à une propriété d’un objet
bean
◼ ${personne.nom}
◼ ${personne[nom]}
◼ Avantages
◼ simplification de la conception de pages JSP
◼ vérification des données à afficher
◼ gestion facile des exceptions
Sans EL Avec EL
<%= session.getAttribute("nom") %> ${sessionScope["nom"]}
37
JSTL (JSP Standard Tag Library)
38
JSTL (JSP Standard Tag Library)
39
JSTL (JSP Standard Tag Library)
40
JSTL (JSP Standard Tag Library)
◼ Bibliothèque de base: core
◼ Manipulation de variables
◼ Structures de contrôle avec les conditions
◼ Boucles
◼ Traitement des exceptions
41
JSTL (JSP Standard Tag Library)
43
JSTL (JSP Standard Tag Library)
◼ Attributs des balises
◼ <c:if>
◼ boolean test : condition à vérifier (obligatoire)
◼ String var : nom d’une variable booléenne contenant le résultat du test
◼ String scope : valeur du scope pour l’attribut var
◼ <c:choose>
◼ Cette balise n’a pas d’attribut
◼ une ou plusieurs balises de type <c:when>
◼ <c:when> a un attribut test
44
JSTL (JSP Standard Tag Library)
◼ Attributs des balises
◼ <c:forEach>
◼ String var : variable contenant l’élément courant de l’itération
◼ Object items : collection d’éléments
◼ String varStatus : variable contenant des informations sur l’itération
◼ int begin : spécifie l’index de départ de l’itération
◼ int end : spécifie l’index de fin de l’itération
◼ int step : saut de l’itération
45
JSTL (JSP Standard Tag Library)
46
JSTL (JSP Standard Tag Library)
◼ Bibliothèque d’internationalisation et de formatage
47
JSTL (JSP Standard Tag Library)
Balise Description
<sql:setDataSource> spécifie la source de données
<sql:query> exécute une requête de sélection sur une base de données
<sql:update> exécute une requête de mise à jour sur une BD
<sql:param> fixe les valeurs des marqueurs d’emplacements (?) d’une
instruction SQL
<sql:dataParam> fixe les valeurs des marqueurs d’emplacements (?) d’une
instruction SQL pour les valeurs de type java.util.Date
48
JSTL (JSP Standard Tag Library)