7.1 c:if, c:för varje

Alla gillade koden med taggar istället för Java-kod, så de bestämde sig för att utöka omfattningen. Men programmering är inte begränsad till att skapa objekt och läsa deras egenskaper. Du måste anropa metoder för objekt, arbeta med databasen och andra tjänster. Vad ska man göra?

Du behöver bara representera varje Java-sats som en tagg. Var if, kommer att vara <if>, var for, kommer att vara <for>och så vidare. Okej, okej, skojar bara, det var inte så. Tja, det kan inte vara så att folk faktiskt bestämmer sig för att göra det. Men nej, kanske!

Programmerare får lägga till alla taggar i koden. I princip är det inget att oroa sig för – JSP är en utökningsbar standard. Men de gick längre och släppte JSP Standard Tag Library - JSTL. Sidan med den ser ut så här:



<%@ 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>

Det är fullt möjligt att du kommer att stöta på sådan kod i dina framtida projekt, där kommer jag att ge några förklaringar.

7.2 JSTL-funktioner

JSTL-funktioner delas in i 5 kategorier:

  • Huvudtaggar;
  • Formatera taggar;
  • SQL-taggar;
  • XML-taggar;
  • Anropsfunktioner.

Jag kommer inte att lista dem alla, men jag ska lista de mest populära. Låt oss börja med huvudtaggarna:

1 <c:out> Matar ut det angivna uttrycket - motsvarande <%= %>
2 <c:set> Skriver resultatet av ett uttryck till en variabel
3 <c:remove> Tar bort en variabel
4 <c:catch> Fångar undantag
5 <c:if> analog till if
6 <c:choose> analog strömbrytare
7 <c:when> Används tillsammans med välj
8 <c:otherwise> Används tillsammans med välj
9 <c:import> Låter dig inkludera innehåll i koden (motsvarande importdirektivet)
10 <c:forEach> för varje slinga
elva <c:param> Låter dig ställa in alternativ för import
12 <c:redirect> Dirigera om
13 <c:url> Skapar en URL med parametrar

Jag ska bara ge ett exempel och avsluta med det. I princip är det fullt möjligt att läsa sådan kod efter viss skicklighet. Men jag rekommenderar inte att skriva.



<%@ 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>

Tänk på det, vi skriver Java-kod i form av taggar, så att JSP-parsern sedan konverterar dessa taggar till Java-kod. Något här i världen har gått fel.

Förresten, du kan skriva dina egna taggbibliotek. Jag jobbade till och med en gång i ett projekt där de var. Fantastisk upplevelse. Så snart några ändringar görs i biblioteket bryts hela jsp omedelbart.

Vad vill du? Kompilatorn spårar inte sådana ändringar. De kan bara hittas visuellt när du tittar på de genererade HTML-sidorna. Och om dessa är några sällsynta scenarier som uppstår i icke-triviala situationer ... Gud välsigne backend-utveckling och statisk maskinskrivning!