7.1 c:if, c:forEach
Nagustuhan ng lahat ang code gamit ang mga tag sa halip na Java code, kaya nagpasya silang palawakin ang saklaw. Ngunit ang programming ay hindi limitado sa paglikha ng mga bagay at pagbabasa ng kanilang mga katangian. Kailangan mong tumawag sa mga pamamaraan ng mga bagay, magtrabaho kasama ang database at iba pang mga serbisyo. Anong gagawin?
Kailangan mo lamang na katawanin ang bawat Java statement bilang isang tag. Was if
, will be <if>
, was for
, will be, <for>
at iba pa. Okay, okay, biro lang, hindi naman ganoon. Well, hindi maaaring ang mga tao ang talagang nagpasya na gawin iyon. Pero hindi, siguro!
Pinapayagan ang mga programmer na magdagdag ng anumang mga tag sa code. Sa prinsipyo, walang dapat ipag-alala - ang JSP ay isang napapalawak na pamantayan. Ngunit lumayo pa sila at inilabas ang JSP Standard Tag Library - JSTL. Ang page na may ganito ay ganito:
<%@ 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>
Posible na makakatagpo ka ng ganoong code sa iyong mga proyekto sa hinaharap, doon ay magbibigay ako ng ilang mga paliwanag.
7.2 Mga function ng JSTL
Ang mga function ng JSTL ay nabibilang sa 5 kategorya:
- Pangunahing mga tag;
- Pag-format ng mga tag;
- Mga tag ng SQL;
- XML tag;
- Mga function ng pagtawag.
Hindi ko ilista lahat, ngunit ililista ko ang mga pinakasikat. Magsimula tayo sa mga pangunahing tag:
1 | <c:out> |
Naglalabas ng tinukoy na expression - katumbas ng <%= %> |
2 | <c:set> |
Isinulat ang resulta ng isang expression sa isang variable |
3 | <c:remove> |
Nagtatanggal ng variable |
4 | <c:catch> |
Nakakakuha ng mga exception |
5 | <c:if> |
analogue ng kung |
6 | <c:choose> |
analog switch |
7 | <c:when> |
Ginagamit kasama ng pumili |
8 | <c:otherwise> |
Ginagamit kasama ng pumili |
9 | <c:import> |
Binibigyang-daan kang magsama ng nilalaman sa code (katumbas ng direktiba sa pag-import) |
10 | <c:forEach> |
para sa bawat loop |
labing-isa | <c:param> |
Binibigyang-daan kang magtakda ng mga opsyon para sa pag-import |
12 | <c:redirect> |
I-redirect |
13 | <c:url> |
Gumagawa ng URL na may mga parameter |
Magbibigay lang ako ng isang halimbawa at tatapusin iyon. Sa prinsipyo, posible na basahin ang naturang code pagkatapos ng ilang kasanayan. Ngunit hindi ko inirerekomenda ang pagsusulat.
<%@ 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>
Pag-isipan ito, nagsusulat kami ng Java code sa anyo ng mga tag, upang ang JSP parser ay i-convert ang mga tag na ito sa Java code. May nangyaring mali sa mundong ito.
Sa pamamagitan ng paraan, maaari kang sumulat ng iyong sariling mga library ng tag. Kahit minsan ay nagtrabaho ako sa isang proyekto kung nasaan sila. Kahanga-hangang karanasan. Sa sandaling ang anumang mga pagbabago ay ginawa sa library, ang buong jsp ay agad na masira.
Anong gusto mo? Hindi sinusubaybayan ng compiler ang mga naturang pagbabago. Makikita lamang ang mga ito nang biswal kapag tinitingnan ang nabuong mga pahina ng HTML. At kung ito ay ilang mga bihirang sitwasyon na lumitaw sa mga hindi walang kuwentang sitwasyon ... Pagpalain ng Diyos ang pag-unlad ng backend at static na pag-type!