7.1 c:if, c:forEach
Tuturor le-a plăcut codul folosind etichete în loc de codul Java, așa că au decis să extindă domeniul de aplicare. Dar programarea nu se limitează la crearea de obiecte și citirea proprietăților acestora. Trebuie să apelați metode de obiecte, să lucrați cu baza de date și alte servicii. Ce să fac?
Trebuie doar să reprezentați fiecare instrucțiune Java ca o etichetă. A fost if
, va fi <if>
, a fost for
, va fi <for>
și așa mai departe. Bine, bine, glumesc, nu a fost așa. Ei bine, nu se poate ca oamenii să decidă să facă asta. Dar nu, poate!
Programatorii au permis să adauge orice etichete la cod. În principiu, nu este nimic de care să vă faceți griji - JSP este un standard extensibil. Dar au mers mai departe și au lansat JSP Standard Tag Library - JSTL. Pagina cu ea arată astfel:
<%@ 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>
Este foarte posibil să întâlniți astfel de cod în viitoarele proiecte, acolo voi da câteva explicații.
7.2 Funcții JSTL
Funcțiile JSTL se împart în 5 categorii:
- Etichete principale;
- Formatarea etichetelor;
- Taguri SQL;
- etichete XML;
- Funcții de apelare.
Nu le voi enumera pe toate, dar le voi enumera pe cele mai populare. Să începem cu etichetele principale:
1 | <c:out> |
Afișează expresia specificată - echivalentă cu <%= %> |
2 | <c:set> |
Scrie rezultatul unei expresii într-o variabilă |
3 | <c:remove> |
Șterge o variabilă |
4 | <c:catch> |
Prinde excepții |
5 | <c:if> |
analog cu dacă |
6 | <c:choose> |
comutator analogic |
7 | <c:when> |
Folosit împreună cu alege |
8 | <c:otherwise> |
Folosit împreună cu alege |
9 | <c:import> |
Vă permite să includeți conținut în cod (echivalent cu directiva de import) |
10 | <c:forEach> |
pentru fiecare buclă |
unsprezece | <c:param> |
Vă permite să setați opțiuni pentru import |
12 | <c:redirect> |
Redirecţiona |
13 | <c:url> |
Creează o adresă URL cu parametri |
Voi da un singur exemplu și voi termina cu acesta. În principiu, este foarte posibil să citiți un astfel de cod după o anumită abilitate. Dar nu recomand scrisul.
<%@ 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>
Gândiți-vă, scriem cod Java sub formă de etichete, astfel încât analizatorul JSP va converti apoi aceste etichete în cod Java. Ceva pe lumea asta a mers prost.
Apropo, vă puteți scrie propriile biblioteci de etichete. Chiar și o dată am lucrat într-un proiect în care se aflau ei. Experiență minunată. De îndată ce se fac modificări în bibliotecă, întregul jsp se rupe imediat.
Ce vrei? Compilatorul nu urmărește astfel de modificări. Ele pot fi găsite doar vizual atunci când vizualizați paginile HTML generate. Și dacă acestea sunt niște scenarii rare care apar în situații non-triviale... Dumnezeu să binecuvânteze dezvoltarea backend și tastarea statică!