Académique Documents
Professionnel Documents
Culture Documents
Programmation Web
Si vous respectez le modèle MVC, JSTL core est la seule librairie dont
vous aurez besoin pour developer vos pages JSP.
Cependant, si besoin est, vous pouvez utiliser les quatre autres librairies
pour travailler avec l'internationalization, les bases de données, les
documents XML, et les strings.
JSTL 3
❑Comment rendre les fichiers jar JSTL disponibles pour votre
application
• Avant que vous puissiez utiliser les tags JSTL dans votre application,
vous devez rendre les fichiers jstl-impl.jar et jstl-api.jar disponibles
pour votre application.
• Pour ce faire sous NetBeans, vous pouvez ajouter les fichiers jstl.jar et
standard.jar au dossier librairie de votre projet.
❑Comment coder la directive taglib
• Avant que vous ne puissiez utiliser les tags JSTL dans votre JSP, vous
devez coder une directive taglib pour spécifier l'URI et le préfixe de la
librairie JSTL.
• la directive ci-dessous spécifie l'URI de la JSTL core avec le préfixe c,
qui est le préfixe typique utilisé avec cette librairie JSTL.
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>
JSTL 4
❑Comment coder une tag JSTL
• Une fois vous avez ajouté les fichier JARs appropriés à votre
application et utilisé la directive taglib pour identifier la
librairie, vous pouvez coder les tags jstl dans votre page JSP.
• La tag ci-dessous produit une sortie vers le browser
<td><c:out value="${item.product.description}" /></td>
Les tags JSTL utilisent une syntaxe similaire à HTML. Elles sont
donc faciles à coder et à lire, spécialement par les concepteurs
webs et autres non programmeurs qui sont habitués avec la
syntaxe HTML.
JSTL 5
Tags d'itération
❑Itération avec des valeurs numériques explicites
<c:forEach var="name" begin="x" end="y" step="z">
Blabla, blabla ${name}
</c:forEach>
❑Itération avec les tableaux et collections
• Peut itérer avec des tableaux, strings, collections et maps
<c:forEach var="name" items="array-or-collection">
Blabla, blabla ${name}
</c:forEach>
❑Itérer avec des strings séparés par délimiteurs
<c:forTokens var="…" items="…." delims"…" >
…..
</c:forTokens>
JSTL 6
Itération avec des valeurs numériques simples : jstl01.jsp
<ul>
<c:forEach
var="seconds"
begin="0"
end="${pageContext.session.maxInactiveInterval}"
step="100">
<li>${seconds} seconds.</li>
</c:forEach>
<li>Timeout exceeded.</li>
</ul>
</body>
</html>
JSTL 9
JSTL 10
Itération avec des tableaux (Servlet) : ArrayServlet.java
package mypkg;
import java.io.IOException;
………..
package mypkg;
import java.io.IOException;
……………………….
@WebServlet(name = "ArrayServlet2", urlPatterns = {"/test-array2"})
public class ArrayServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Name[] names = { new Name("Bill", "Gates"),
new Name("Larry", "Ellison"),
new Name("Sam", "Palmisano"),
new Name("Scott", "McNealy"),
new Name("Eric", "Schmidt"),
new Name("Jeff", "Bezos") };
request.setAttribute("names", names);
String[][] sales ={ {"2005", "12,459", "15,622"}, {"2006", "18,123", "17,789"}, {"2007", "21,444", "23,555"} };
request.setAttribute("sales", sales);
String address = "/WEB-INF/results/Exemple04.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(address);
dispatcher.forward(request, response);}}
JSTL 15
Itération avec tableaux : accès aux sous éléments (Bean)Name,java
public class Name {
private String firstName;
private String lastName;
public Name(String firstName, String lastName) {
setFirstName(firstName);
setLastName(lastName);
}
public String getFirstName() { return(firstName); }
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() { return(lastName); }
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
JSTL 16
Itération avec tableaux : accès aux sous éléments (JSP) Exemple04.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title>
</head> <body> <h2>Liste des noms et prénoms</h2>
<ul>
<c:forEach var="name" items="${names}">
<li>${name.firstName} ${name.lastName}</li>
</c:forEach>
</ul>
<h2>Comparing Apples and Oranges</h2>
<table border="1">
<tr><th>Year</th> <th>Apples Sold</th> <th>Oranges Sold</th></tr>
<c:forEach var="row" items="${sales}">
<tr><c:forEach var="col" items="${row}">
<td>${col}</td>
</c:forEach></tr>
</c:forEach>
</table> </body></html>
JSTL 17
JSTL 18
Informations sur l'état de la boucle
Attribut varStatus
❑ Vous pouvez affecter l'attribut varStatus
<c:forEach var="name" items="${names}" varStatus="status">
❑ Vous pouvez tester les propriétés de "status" (status.propriété)
En utilisant le tag de test <c:if ………..> …….</c:if> (présenté ultérieurement)
• Propriétés de Status
– index (int: l'indice courant)
– first (boolean: s'agit-il du premier élément?)
– last (boolean: s'agit-il du dernier élément?)
– begin (Integer: valeur de l'attribute "begin")
– end (Integer: valeur de l'attribute "end"))
– step (Integer: valeur de l'attribute "step"))
JSTL 19
Informations sur l'état de la boucle : Exemple05.jsp
❑ Un seul choix : if
<c:if test="${someTest}">
Content
</c:if>
JSTL 23
Tag if : Exemple08.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<ul>
<c:forEach var="i" begin="1" end="10">
<li>${i}
<c:if test="${i mod 2 eq 0}">
(pair)
</c:if>
</c:forEach>
</ul>
</body>
</html>
JSTL 24
Tag choose : Exemple09.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<ul>
<c:forEach var="i" begin="1" end="10">
<li>${i}
<c:choose>
<c:when test="${i < 4}"> (small) </c:when>
<c:when test="${i < 8}"> (medium) </c:when>
<c:otherwise> (large) </c:otherwise>
</c:choose>
</c:forEach>
</ul>
</body>
</html>
JSTL 25
Exemple d'applications d'Ecommerce : ventes de livres
JSTL 26
JSTL 27