7.1 c:if, c:forEach
Allen gefiel der Code, der Tags anstelle von Java-Code verwendete, und so beschlossen sie, den Umfang zu erweitern. Die Programmierung beschränkt sich jedoch nicht nur auf das Erstellen von Objekten und das Auslesen ihrer Eigenschaften. Sie müssen Methoden von Objekten aufrufen, mit der Datenbank und anderen Diensten arbeiten. Was zu tun ist?
Sie müssen lediglich jede Java-Anweisung als Tag darstellen. War if
, wird sein <if>
, war for
, wird sein <for>
und so weiter. Okay, okay, nur ein Scherz, so war es nicht. Nun, es kann nicht sein, dass sich die Leute tatsächlich dazu entschließen. Aber nein, vielleicht!
Programmierer dürfen dem Code beliebige Tags hinzufügen. Im Prinzip gibt es keinen Grund zur Sorge – JSP ist ein erweiterbarer Standard. Aber sie gingen noch einen Schritt weiter und veröffentlichten die JSP Standard Tag Library – JSTL. Die Seite damit sieht so aus:
<%@ 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>
Es ist durchaus möglich, dass Sie in Ihren zukünftigen Projekten auf solchen Code stoßen, dazu werde ich einige Erläuterungen geben.
7.2 JSTL-Funktionen
JSTL-Funktionen lassen sich in 5 Kategorien einteilen:
- Haupt-Tags;
- Formatierungs-Tags;
- SQL-Tags;
- XML-Tags;
- Aufrufende Funktionen.
Ich werde sie nicht alle auflisten, aber ich werde die beliebtesten auflisten. Beginnen wir mit den Haupt-Tags:
1 | <c:out> |
Gibt den angegebenen Ausdruck aus – äquivalent zu <%= %> |
2 | <c:set> |
Schreibt das Ergebnis eines Ausdrucks in eine Variable |
3 | <c:remove> |
Löscht eine Variable |
4 | <c:catch> |
Fängt Ausnahmen ab |
5 | <c:if> |
Analog zu if |
6 | <c:choose> |
Analogschalter |
7 | <c:when> |
Wird zusammen mit „Choose“ verwendet |
8 | <c:otherwise> |
Wird zusammen mit „Choose“ verwendet |
9 | <c:import> |
Ermöglicht das Einfügen von Inhalten in den Code (entspricht der Importanweisung). |
10 | <c:forEach> |
für jede Schleife |
elf | <c:param> |
Ermöglicht Ihnen, Optionen für den Import festzulegen |
12 | <c:redirect> |
Umleiten |
13 | <c:url> |
Erstellt eine URL mit Parametern |
Ich gebe nur ein Beispiel und schließe damit ab. Im Prinzip ist es mit etwas Geschick durchaus möglich, solchen Code zu lesen. Aber ich empfehle nicht zu schreiben.
<%@ 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>
Denken Sie darüber nach, wir schreiben Java-Code in Form von Tags, sodass der JSP-Parser diese Tags dann in Java-Code umwandelt. Etwas auf dieser Welt ist schief gelaufen.
Übrigens können Sie Ihre eigenen Tag-Bibliotheken schreiben. Ich habe sogar einmal in einem Projekt gearbeitet, in dem sie waren. Tolle Erfahrung. Sobald Änderungen an der Bibliothek vorgenommen werden, bricht die gesamte JSP sofort ab.
Was willst du? Der Compiler verfolgt solche Änderungen nicht. Sie sind nur optisch beim Betrachten der generierten HTML-Seiten erkennbar. Und wenn dies einige seltene Szenarien sind, die in nicht trivialen Situationen auftreten ... Gott segne die Backend-Entwicklung und die statische Typisierung!