7.1 c:if, c:forEach
A tutti è piaciuto il codice che utilizza i tag invece del codice Java, quindi hanno deciso di espandere l'ambito. Ma la programmazione non si limita alla creazione di oggetti e alla lettura delle loro proprietà. Devi chiamare metodi di oggetti, lavorare con il database e altri servizi. Cosa fare?
Devi solo rappresentare ogni istruzione Java come tag. Era if
, sarà <if>
, era for
, sarà <for>
e così via. Ok, ok, sto scherzando, non è stato così. Beh, non può essere che le persone decidano davvero di farlo. Ma no, forse!
I programmatori hanno permesso di aggiungere qualsiasi tag al codice. In linea di principio, non c'è nulla di cui preoccuparsi: JSP è uno standard estensibile. Ma sono andati oltre e hanno rilasciato la JSP Standard Tag Library - JSTL. La pagina con esso è simile a questa:
<%@ 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>
È del tutto possibile che ti imbatterai in tale codice nei tuoi progetti futuri, lì darò alcune spiegazioni.
7.2 Funzioni JSTL
Le funzioni JSTL rientrano in 5 categorie:
- Tag principali;
- Tag di formattazione;
- tag SQL;
- tag XML;
- Funzioni di chiamata.
Non li elencherò tutti, ma elencherò i più popolari. Partiamo dai tag principali:
1 | <c:out> |
Restituisce l'espressione specificata, equivalente a <%= %> |
2 | <c:set> |
Scrive il risultato di un'espressione in una variabile |
3 | <c:remove> |
Elimina una variabile |
4 | <c:catch> |
Rileva le eccezioni |
5 | <c:if> |
analogo di if |
6 | <c:choose> |
interruttore analogico |
7 | <c:when> |
Usato insieme a scegliere |
8 | <c:otherwise> |
Usato insieme a scegliere |
9 | <c:import> |
Consente di includere contenuto nel codice (equivalente alla direttiva import) |
10 | <c:forEach> |
per ogni ciclo |
undici | <c:param> |
Consente di impostare le opzioni per l'importazione |
12 | <c:redirect> |
Reindirizzare |
13 | <c:url> |
Crea un URL con parametri |
Faccio solo un esempio e concludo con quello. In linea di principio, è del tutto possibile leggere tale codice dopo una certa abilità. Ma non consiglio di scrivere.
<%@ 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>
Pensaci, scriviamo codice Java sotto forma di tag, in modo che il parser JSP converta questi tag in codice Java. Qualcosa in questo mondo è andato storto.
A proposito, puoi scrivere le tue librerie di tag. Una volta ho anche lavorato in un progetto in cui erano loro. Esperienza fantastica. Non appena vengono apportate modifiche alla libreria, l'intero jsp si interrompe immediatamente.
Cosa vuoi? Il compilatore non tiene traccia di tali modifiche. Possono essere trovati solo visivamente durante la visualizzazione delle pagine HTML generate. E se questi sono alcuni scenari rari che si presentano in situazioni non banali ... Dio benedica lo sviluppo del backend e la tipizzazione statica!