7.1 c:if, c:forEach

Tout le monde a aimé le code utilisant des balises au lieu du code Java, ils ont donc décidé d'élargir la portée. Mais la programmation ne se limite pas à créer des objets et à lire leurs propriétés. Vous devez appeler des méthodes d'objets, travailler avec la base de données et d'autres services. Ce qu'il faut faire?

Il vous suffit de représenter chaque instruction Java sous forme de balise. Était if, sera <if>, était for, sera, <for>et ainsi de suite. Ok, ok, je plaisante, ce n'était pas comme ça. Eh bien, ce n'est pas possible que les gens décident de faire ça. Mais non, peut-être !

Les programmeurs sont autorisés à ajouter des balises au code. En principe, il n'y a rien à craindre - JSP est une norme extensible. Mais ils sont allés plus loin et ont publié la bibliothèque de balises standard JSP - JSTL. La page qui l'accompagne ressemble à ceci :

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
       <title> JSTL Example</title>
   </head>

   <body>
        <c:set var = "salary" scope = "session" value = "${2000*5}"/>
        <c:if test = "${ salary > 2000}">
            <p>My salary is: <c:out value = "${salary}"/><p>
        </c:if>
   </body>
</html>

Il est fort possible que vous rencontriez un tel code dans vos futurs projets, là je donnerai quelques explications.

7.2 Fonctions JSTL

Les fonctions JSTL se répartissent en 5 catégories :

  • Balises principales ;
  • Balises de formatage ;
  • balises SQL ;
  • balises XML ;
  • Fonctions d'appel.

Je ne vais pas tous les énumérer, mais je vais énumérer les plus populaires. Commençons par les balises principales :

1 <c:out> Affiche l'expression spécifiée - équivalente à <%= %>
2 <c:set> Écrit le résultat d'une expression dans une variable
3 <c:remove> Supprime une variable
4 <c:catch> Attrape les exceptions
5 <c:if> analogue de si
6 <c:choose> commutateur analogique
7 <c:when> Utilisé avec choisir
8 <c:otherwise> Utilisé avec choisir
9 <c:import> Permet d'inclure du contenu dans le code (équivalent à la directive import)
dix <c:forEach> pour chaque boucle
onze <c:param> Vous permet de définir les options d'importation
12 <c:redirect> Réorienter
13 <c:url> Crée une URL avec des paramètres

Je vais donner un seul exemple et terminer par celui-là. En principe, il est tout à fait possible de lire un tel code après quelques compétences. Mais je ne recommande pas d'écrire.

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
      <title> Each Tag Example&</title>
   </head>

   <body>
       <c:forEach var = "i" begin = "1" end = "5">
            Item <c:out value = "${i}"/><p>
       </c:forEach>
   </body>
</html>

Pensez-y, nous écrivons du code Java sous forme de balises, de sorte que l'analyseur JSP va ensuite convertir ces balises en code Java. Quelque chose dans ce monde a mal tourné.

Au fait, vous pouvez écrire vos propres bibliothèques de balises. J'ai même travaillé une fois dans un projet où ils étaient. Expérience géniale. Dès que des modifications sont apportées à la bibliothèque, l'ensemble du jsp s'arrête immédiatement.

Que veux-tu? Le compilateur ne suit pas ces modifications. Ils ne peuvent être trouvés que visuellement lors de la visualisation des pages HTML générées. Et s'il s'agit de quelques scénarios rares qui surviennent dans des situations non triviales... Que Dieu bénisse le développement backend et le typage statique !