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 8 mai 2006, la JSTL 1.2 est sortie.

JavaServer Pages Standard Tag Library

Informations
Créateur Sun MicrosystemsVoir et modifier les données sur Wikidata
Développé par Sun Microsystems (implémentation de référence)
Première version 11 juin 2002
Dernière version 1.2 (8 mai 2006)
Dépôt github.com/eclipse-ee4j/jstl-apiVoir et modifier les données sur Wikidata
Écrit en Java
Environnement Multiplate-forme
Type norme de bibliothèque logicielle
Licence limitée, spécifique
Site web (en) Site officiel

En supplément à JSTL, la JCP propose des Java Specification Requests (JSR) pour développer les bibliothèques de balises standards :

  • JSR 128 : JESI – JSP Tag Library for Edge Side Includes (inactif)
  • JSR 267 : Bibliothèque JSP Tag pour les services web

Objectif

modifier

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.

Notoriété

modifier

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

Versions

modifier

Actuellement, trois versions de JSTL sont disponibles, avec les restrictions suivantes :

  • La JSTL 1.0 nécessite un conteneur JSP 1.2 (J2EE 1.3).
  • La JSTL 1.1 nécessite un conteneur JSP 2.0 (J2EE 1.4).
  • La JSTL 1.2 nécessite un conteneur JSP 2.1 (J2EE 1.5).

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.

Utilisation

modifier

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.

  • Exemple de configuration, optionnelle, de la bibliothèque dans le fichier web.xml :
   <?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>
  • Déclaration complète de la bibliothèque pour chaque page JSP implémentée :
    <%@ 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" %>

Core : Bibliothèque de base

modifier

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 :

Les variables

modifier
  • Afficher une expression : <c:out />
   <c:out value="${expression}" escapeXml="[true/false]" 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
  • Définir une variable : <c:set />
   <c:set var="variable" value="${expression}" scope="[page/request/session/application]" 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
  • Supprimer une variable : <c:remove />
   <c:remove var="variable" scope="[page/request/session/application]" />
Attribut Requis Description
var Oui Nom de la variable à supprimer dans le scope
scope Non portée de la variable

Les actions conditionnelles

modifier
  • Équivalence du "if" en JAVA : <c:if />
   <c:if test="${empty variable}">
   </c:if>
  • Équivalence du "switch" en JAVA : <c:choose />
   <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>

Les itérations

modifier
  • Itérer sur une collection : <c:forEach />
   <c:forEach items="${param}" var="thisParam" varStatus="variableStatus">
      Paramètre ${thisParam.key} = ${thisParam.value}
   </c:forEach>
  • Itérer sur une chaîne de caractère : <c:forTokens />
   <c:forTokens var="thisVar" items="var1;var2;var3" delims=";">
      ${thisVar}
   </c:forTokens>

Les urls

modifier
  • Afficher une URL contenant des paramètres : <c:url /> et <c:param />
   <c:url value="/page2">
      <c:param name="param1" value="18"/>
   </c:url>

Liens externes

modifier

Notes et références

modifier

📚 Artikel Terkait di Wikipedia

Société coopérative et participative

les articles homonymes, voir SCOP. Une société coopérative et participative ou société coopérative de production (SCOP), anciennement société coopérative

Synergy (Scop)

transforme en société coopérative et participative. Jeanne Bigot, « Chez Synergy Scop, plus de 55 % de salariés sont en situation de handicap », Les Echos,‎ 21

Algorithme AC-3

simples. AC-3 fonctionne sur les contraintes, les variables et les domaines des variables (scopes). Une variable peut prendre n'importe laquelle de plusieurs

Canadair CL-415

s'effectue sur une longueur d'environ 450 mètres à une vitesse sur l'eau variable entre 140 et 160 km/h (entre 75 et 85 nœuds approximativement). Cette opération

Michel Laperrière

1993 : Les grands procès : Me Brais 1993 : Scoop : Boudrias 1993 : Blanche : Dr Lambert 1993 : Sous un ciel variable : Bobby Fortier 1994 : Le Sorcier : curé

Camel case

elle a été utilisée par des marques ou entreprises, par exemple CinemaScope en 1953, ou plus tard PlayStation, YouTube, iPhone, etc. La plupart de ces

Moteur Fiat Twin Air

famille de petits moteurs à essence utilisant la technologie de levée variables des soupapes à commande hydraulique MultiAir de Fiat. Disponibles dans

Robert Toupin

Sous un ciel variable (série télévisée) : Allan Thompson 1995 : Les Grands Procès - épisode L'affaire Durand : Maître Wilson 1995 : Scoop IV (série télévisée) :