Servlets et des JSP : la JSTL
Quelques liens utiles
Le but de ce TP est de se familiariser avec l'utilisation de librairie de balises et notamment de la JSTL (Java Standard Tag Library).
Utiliser le langage d'expression (EL)
Documentions :
- Présentation du langage d'expressions
- http://adiguba.developpez.com/tutoriels/j2ee/jsp/el/ (en locale)
Depuis la version 2.0 des JSP, il est possible de placer à n'importe quel endroit d'une page JSP des expressions qui sont évaluées et remplacées par le résultat de leur évaluation. La syntaxe est la suivante :
${ expression }
- Commencez par vous amuser avec les exemples d'expressions livrés avec tomcat.
- Prenez un peu de temps pour lire la présentation du langage d'expressions (voir lien ci-dessus).
- Vous pouvez maintenant modifier votre TP précédent en utilisant les expressions à la place des scriptlets pour initialiser les champs de votre formulaire et/ou visualiser les propriétés du bean personne.
Java Standard Tag Library
Récupérer et installer la JSTL 1.1
Documentations :
- La page sur la JSTL chez Java Soft
- http://java.sun.com/products/jsp/jstl/
- Les transparents sur les librairies de balises
- sont disponibles
- La documentation de la JSTL 1.1
- http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/
- Un cours sur la JSTL
- http://adiguba.developpez.com/tutoriels/j2ee/jsp/jstl/ (en locale)
- Les articles sur la JSTL de onjava.com
- 1ère partie, 2ème partie et 3ème partie.
Travail :
- Sur le site http://jakarta.apache.org (ou en version locale), récupérez la JSTL 1.1.x (attention, la version est importante). Vous pouvez déployer les WAR d'exemples livrés avec cette implantation de la JSTL en les recopiant dans le répertoire webapps de Tomcat.
- Vous pouvez notamment tester les exemples SQL. Pour ce faire, le driver JDBC doit être accessible. Le plus simple est de copier le fichier JAR dans le répertoire $TOMCAT_HOME/common/lib/ pour qu'il soit utilisable par toutes les applications du moteur de Servlets.
Remarque : Je vous encourage fortement à lire le cours sur la JSTL (lien ci-dessus). Il explique bien le fonctionnement de ses balises et donne de nombreux exemples.
Utiliser la JSTL
Pour utiliser la JSTL 1.1.x dans une application basée sur un moteur de servlets respectant le standard JSP 2.0, il suffit de copier dans le répertoire WEB-INF/lib de votre application WEB les fichiers jstl.jar et standard.jar qui se trouvent dans le répertoire lib de la distribution JSTL.
Il est notamment inutile de copier les fichiers .tld. Ceux-ci se trouvent dans les .jar et sont pris en compte automatiquement. Une fois le contexte de votre application relancé, vous pouvez essayer la page suivante :
<html>
<body>
<!-- controle, iterations, tests, variables -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- traitement XML -->
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<!-- formattage des donnees -->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!-- SQL/JDBC -->
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<p>Les parametres:</p>
<ul>
<c:forEach var="aParam" items="${param}">
<li>un parametre :
<c:out value="${aParam.key}"/> = <c:out value="${aParam.value}"/>
</li>
</c:forEach>
</ul>
<c:choose>
<c:when test="${param['question'] == 'oui'}">
<p>OUI</p>
</c:when>
<c:otherwise>
<p>NON</p>
</c:otherwise>
</c:choose>
</body>
</html>
Travail :
- Ajoutez à la définition de la personne (TP précédent) une propriété « statut » qui peut être « Etudiant », « Enseignant » ou « Extérieur ».
- Nous allons modifier votre formulaire pour traiter cette propriété. Commencez (dans la page JSP) par définir un bean « statuts » de portée page qui est une HashMap. Lors de sa création (dans le corps du useBean), placez-y les trois statuts. Faites ensuite dans le formulaire une boucle (c:forEach) qui parcourt cette table et construit le code du select en HTML.
- Prenez soin que lors du retour au formulaire (par exemple si nous avons oublié de renseigner une propriété), le champs « statut » soit correctement initialisé (il faut mettre en place l'attribut selected de la balise HTML option qui se trouve dans le select).