Dans cet article, nous allons plonger dans le monde fascinant de JavaServer Pages Standard Tag Library. De son impact sur la société actuelle à sa pertinence dans l'histoire, JavaServer Pages Standard Tag Library a joué un rôle crucial dans différents domaines. Tout au long de ces pages, nous analyserons l'impact de JavaServer Pages Standard Tag Library sur la vie des gens, en examinant son influence sur la culture, l'art, la politique et la technologie. De plus, nous explorerons comment JavaServer Pages Standard Tag Library a évolué au fil du temps, en s'adaptant aux circonstances changeantes et aux défis du monde moderne. Préparez-vous à vous plonger dans un voyage qui vous mènera à découvrir la véritable importance de JavaServer Pages Standard Tag Library dans nos vies. Ne le manquez pas!
| Créateur | Sun Microsystems |
|---|---|
| Développé par | Sun Microsystems (implémentation de référence) |
| Première version | |
| Dernière version | 1.2 () |
| Dépôt | github.com/eclipse-ee4j/jstl-api |
| Écrit en | Java |
| Environnement | Multiplate-forme |
| Type | norme de bibliothèque logicielle |
| Licence | limitée, spécifique |
| Site web | (en) Site officiel |
La JavaServer Pages Standard Tag Library (JSTL) est un composant de la plate-forme JEE de développement. Elle étend la spécification JSP en ajoutant une bibliothèque de balises pour les tâches courantes, comme le travail sur des fichiers XML, l'exécution conditionnelle, les boucles et l'internationalisation. JSTL a été développée par la Java Community Process (JCP). Le , la JSTL 1.2 est sortie.
En supplément à JSTL, la JCP propose des Java Specification Requests (JSR) pour développer les bibliothèques de balises standards :
La JSTL, en tant que bibliothèque de balises JSP, propose de développer une page JSP sans y utiliser de code Java directement.
Elle utilise ainsi une syntaxe proche des langages utilisés par les web designers (HTML ou XHTML) ce qui leur permet de concevoir des pages dynamiques complexes sans connaissances préalable du langage Java.
De très nombreuses applications JEE pour le Web (à base de servlets et JSP) et frameworks Java incluent la JSTL, ou invitent à l'utiliser, par exemple Liferay[1], Jahia[2], Spring[3].
Actuellement, trois versions de JSTL sont disponibles, avec les restrictions suivantes :
La JSTL se base sur l'utilisation des Expressions Languages en remplacement des scriptlets Java. Toutefois, ce mécanisme n'est disponible qu'avec un conteneur JSP 2.0.
La JSTL, dans ses versions 1.1 et 1.2, se base sur les JSP 2.0 qui intègre un moteur d'Expression Language, elle ne définit donc qu'une seule implémentation avec les URIs suivantes :
| Bibliothèque | URI | Prefixe |
|---|---|---|
| core | http://java.sun.com/jsp/jstl/core | c |
| Format | http://java.sun.com/jsp/jstl/fmt | fmt |
| XML | http://java.sun.com/jsp/jstl/xml | x |
| SQL | http://java.sun.com/jsp/jstl/sql | sql |
| Function | http://java.sun.com/jsp/jstl/functions | fn |
Pour développer une page JSP a base de JSTL il suffit de déclarer la bibliothèque et de configurer le fichier web.xml qui contient le paramétrage des servlets d'une application JEE.
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<context-param>
<param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name>
<param-value>jdbc/data</param-value>
</context-param>
</web-app>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
La bibliothèque Core propose les quelques balises essentielles pour utiliser le langage des JSP comme langage de templates en évitant d'y écrire des instructions et expressions directement en Java :
<c:out value="${expression}" escapeXml="" default="valeur par defaut" />
| Attribut | Requis | Description |
|---|---|---|
| value | Oui | Expression qui sera évaluée et affichée |
| escapeXml | Non | Détermine si les caractères xml doivent être remplacés par leur code HTML respectif |
| default | Non | Valeur affiché par défaut si l'expression value est null |
<c:set var="variable" value="${expression}" scope="" target="" property="" />
| Attribut | Requis | Description |
|---|---|---|
| var | Oui | Nom de la variable à créer dans le scope |
| value | Oui | Valeur de la variable dans le scope |
| scope | Non | Portée de la variable (page, request, session ou application) |
| target | Non | Objet de type Java.util.Map ou issue d'un bean |
| property | Non | Propriété de l'objet target affectée |
<c:remove var="variable" scope="" />
| Attribut | Requis | Description |
|---|---|---|
| var | Oui | Nom de la variable à supprimer dans le scope |
| scope | Non | portée de la variable |
<c:if test="${empty variable}">
</c:if>
<c:choose>
<c:when test="${expression1 == true}">
Expression 1
</c:when>
<c:when test="${expression2 == true}">
Expression 2
</c:when>
<c:otherwise>
Autre chose
</c:otherwise>
</c:choose>
<c:forEach items="${param}" var="thisParam" varStatus="variableStatus">
Paramètre ${thisParam.key} = ${thisParam.value}
</c:forEach>
<c:forTokens var="thisVar" items="var1;var2;var3" delims=";">
${thisVar}
</c:forTokens>
<c:url value="/page2">
<c:param name="param1" value="18"/>
</c:url>