7.1 c:if, c:forElk
Iedereen hield van de code met behulp van tags in plaats van Java-code, dus besloten ze de reikwijdte uit te breiden. Maar programmeren is niet beperkt tot het maken van objecten en het lezen van hun eigenschappen. U moet methoden van objecten aanroepen, werken met de database en andere services. Wat moeten we doen?
U hoeft alleen maar elke Java-instructie als een tag weer te geven. Was if
, zal zijn <if>
, was for
, zal zijn, <for>
enzovoort. Oké, oké, grapje, zo was het niet. Nou, het kan niet zo zijn dat mensen daar daadwerkelijk toe besluiten. Maar nee, misschien!
Programmeurs mogen tags aan de code toevoegen. In principe hoeft u zich nergens zorgen over te maken - JSP is een uitbreidbare standaard. Maar ze gingen verder en brachten de JSP Standard Tag Library - JSTL uit. De pagina ermee ziet er zo uit:
<%@ 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>
Het is heel goed mogelijk dat je dergelijke code tegenkomt in je toekomstige projecten, daar zal ik wat uitleg geven.
7.2 JSTL-functies
JSTL-functies vallen in 5 categorieën:
- Belangrijkste tags;
- Tags opmaken;
- SQL-tags;
- XML-tags;
- Functies oproepen.
Ik zal ze niet allemaal opsommen, maar ik zal de meest populaire noemen. Laten we beginnen met de belangrijkste tags:
1 | <c:out> |
Voert de gespecificeerde uitdrukking uit - gelijk aan <%= %> |
2 | <c:set> |
Schrijft het resultaat van een uitdrukking naar een variabele |
3 | <c:remove> |
Verwijdert een variabele |
4 | <c:catch> |
Vangt uitzonderingen op |
5 | <c:if> |
analoog van als |
6 | <c:choose> |
analoge schakelaar |
7 | <c:when> |
Gebruikt samen met kiezen |
8 | <c:otherwise> |
Gebruikt samen met kiezen |
9 | <c:import> |
Hiermee kunt u inhoud opnemen in de code (equivalent aan de importrichtlijn) |
10 | <c:forEach> |
voor elke lus |
elf | <c:param> |
Hiermee kunt u opties voor importeren instellen |
12 | <c:redirect> |
Omleiden |
13 | <c:url> |
Creëert een URL met parameters |
Ik zal slechts één voorbeeld geven en daarmee eindigen. In principe is het met enige vaardigheid goed mogelijk om dergelijke code te lezen. Maar ik raad schrijven niet aan.
<%@ 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>
Denk er eens over na, we schrijven Java-code in de vorm van tags, zodat de JSP-parser deze tags vervolgens omzet in Java-code. Er is iets misgegaan in deze wereld.
U kunt trouwens uw eigen tagbibliotheken schrijven. Ik heb zelfs een keer in een project gewerkt waar ze zaten. Geweldige ervaring. Zodra er wijzigingen in de bibliotheek worden aangebracht, gaat de hele jsp meteen kapot.
Wat wil je? De compiler houdt dergelijke wijzigingen niet bij. Ze kunnen alleen visueel worden gevonden bij het bekijken van de gegenereerde HTML-pagina's. En als dit enkele zeldzame scenario's zijn die zich voordoen in niet-triviale situaties ... God zegene backend-ontwikkeling en statisch typen!