JSTL (JSP Standard Tag Library)
โก Nutikas kokkuvรตte
JSP standardne sildikogu (JSTL) on kohandatud JSP sildikogude kogu, mis pakub tavalisi veebiarendusfunktsioone, nagu iteratsioon, tingimuslik loogika, erandite kรคsitlemine, importimine ja รผmbersuunamine, muutes JSP koodi puhtamaks, kaasaskantavamaks ja hรตlpsamini loetavaks kui skriptletid.

Milles on JSTL Java?
JSTL tรคhistab Java serverilehtede standardne sildikogu ja see on kohandatud JSP-silditeekide kogum, mis pakuvad รผhiseid veebiarendusfunktsioone. JSTL on JSP standardne sildikogu.
JSTLi eelised
Allpool on toodud JSTLi eelised:
- Standardne silt: see pakub JSP-lehtede rikkalikku kaasaskantavat funktsiooni. Arendajal on koodist lihtne aru saada.
- Code Korralik ja puhas: Kuna skriptid ajavad arendaja segadusse, muudab JSTLi kasutamine koodi puhtaks ja puhtaks.
- Automaatne JavabeansInterospection Support: Sellel on JSTL-i eelis JSP-skriptide ees. JSTL-i ekspressioonikeele kรคepidemed JavaBean kood vรคga lihtsalt. Me ei pea alla vรตtma objekte, mis on hangitud ulatusega atribuutidena. JSP-skriptikoodi kasutamine on keeruline ja JSTL on seda eesmรคrki lihtsustanud.
- Inimestel on seda lihtsam lugeda: JSTL pรตhineb XML, mis on vรคga sarnane HTML-iga. Seetรตttu on arendajatel seda lihtne mรตista.
- Arvutitel on seda lihtsam mรตista: Tรถรถriistad nagu Dreamweaver ja esileht genereerivad รผha rohkem HTML-koodi. HTML-i tรถรถriistad saavad HTML-koodi vormindamisel suurepรคraselt hakkama. HTML-kood on segatud skripti koodiga. Kuna JSTL-i vรคljendatakse XML-iga รผhilduvate siltidena, on HTML-i genereerimisel lihtne dokumendis JSTL-koodi sรตeluda.
JSTL sildid
Pรตhimรคrgendid on JSP-s kรตige sagedamini kasutatavad sildid. Nad pakuvad tuge
- Kordus
- Tingimuslik loogika
- Saagi erand
- url edasi
- รmbersuunamine jne.
Pรตhimรคrgendite kasutamiseks peame esmalt mรครคratlema silditeegi ja allpool on silditeegi kaasamise sรผntaks.
Sรผntaks:
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>
Siin
- prefiksit saab kasutada kรตigi pรตhimรคrgendite mรครคratlemiseks ja
- uri on taglibi teek, millest see imporditakse
Vaadake รผksikasjalikult mรตnda pรตhimรคrgendit,
1. Vรคljas
- Vรคljenduse tulemus kuvatakse vรคlja sildil
- See vรตib XML-siltide eest otse pรตgeneda. Seetรตttu ei hinnata neid tegelike siltidena
sรผntaksit:
<c:out value="" default="" escapeXML="">
- Siin tรคhistab vรครคrtus vรคljundi teavet ja see on kohustuslik
- Vaikimisi ei รตnnestu teavet vรคljastada ja see ei ole kohustuslik
- escapeXML โ see on tรตsi, kui see vรคldib XML-i mรคrke.
Nรคide:
Coretag_jsp1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP1</title>
</head>
<body>
</body>
</html>
Koodi selgitus:
Code Rida 3: See taglibi eesliide on vajalik kรตigi siltide jaoks ja lisatud eesliide on "c". Seetรตttu saab seda kasutada kรตigi pรตhimรคrgendite eesliitena.
Code Rida 12: Siin kasutame coretag out koos eesliitega "c" ja see vรคlja prindib vรครคrtuse avaldissildis. Seetรตttu on vรคljundiks nimi
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi:
Vรคljund:
- Vรครคrtuse saame nimena pรตhimรคrgendilt โoutโ, mis trรผkitakse vรคljundvoos.
2. Saak
- See pรผรผab kinni kรตik kehas esinevad visatavad erandid ja kuvatakse vรคljundina.
- Seda kasutatakse vigade kรคsitlemiseks ja nende tabamiseks.
sรผntaksit:
<c:catchvar="">
Siin var tรคhistab muutuja nime, mis sisaldab visatavat erandit.
Nรคide:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP2</title>
</head>
<body>
<c:catch var="guruException">
<% int num = 10/0; %>
</c:catch>
The Exception is : ${guruException}
</body>
</html>
Koodi selgitus:
Code Rida 3: See taglib-eesliide on vajalik kรตikide siltide jaoks ja lisatud eesliide on 'c' seega saab seda kasutada kรตigi pรตhimรคrgendite eesliitena
Code Rida 11-13: Coretag pรผรผdmist kasutatakse erandi pรผรผdmiseks ja erandi printimiseks. Siin tรตstatatakse erand, kui 10/0 ja selle erandi nimi on "guruException".
Code Rida 14: Trรผkime vรคlja โguruExceptionโ.
Koodi kรคivitamisel saate jรคrgmise vรคljundi:
Vรคljund:
- Saame aritmeetilise erandi vรครคrtusena /by null ja see trรผkitakse vรคljundis muutujaga โguruExceptionโ
3. Import
- Saame importida teise faili sisu JSP-lehele, nagu tegime JSP sisaldab tegevust.
- Siia vรตime lisada ka URL ja sisu kuvatakse sellel lehel.
sรผntaksit:
<c:importvar="" uri="">
Siin var on muutuja nimi, mis on identifikaator, mis sisaldab failinime/uri. uri on suhteline failinimi vรตi uriininimi.
coretag_jsp31.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP 31</title>
</head>
<body>
<c:import var="displayfile" url="coretag_jsp32.jsp">
</c:import>
<c:out value="${displayfile}"/>
</body>
</html>
Coretag_jsp32.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a>The file is diplayed after importing</a>
</body>
</html>
Koodi selgitus:
Coretag_jsp31.jsp
Code Rida 3: See taglib-eesliide on vajalik kรตikide siltide jaoks ja lisatud eesliide on 'c' seega saab seda kasutada kรตigi pรตhimรคrgendite eesliitena
Code Rida 11-12: Siin impordime faili coretag_jsp32.jsp sellesse faili, kasutades impordimรคrgendit
Code 13. rida: Siin prindime vรคlja mรคrgendi abil faili coretag_jsp32.jsp.
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi.
Vรคljund:
- Coretag_jsp32 prinditakse vรคljundisse, kuna see fail imporditi faili coretag_jsp31.jsp.
4. igale
- Seda kasutatakse lauseseeria elementide arvu itereerimiseks.
- See on sama, mis a Java forloop.
sรผntaksit:
<c:forEach var="" begin="" end="">
- Siin var tรคhistab muutuja nime, mis sisaldab loenduri nime
- Begin tรคhistab loenduri algusvรครคrtust
- End tรคhistab selle lรตppvรครคrtust
Nรคide:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP4</title>
</head>
<body>
<c:forEach var="gurucount" begin="5" end="10">
<c:out value="${gurucount}"/>
</c:forEach>
</body>
</html>
Koodi selgitus:
Code Rida 3: See taglib-eesliide on vajalik kรตikide siltide jaoks ja lisatud eesliide on 'c' seega saab seda kasutada kรตigi pรตhimรคrgendite eesliitena
Code Rida 11-13: Siin kasutame tsรผklit โforEachโ, kus muutuja nimi on โgurucountโ, mille loendust on alustatud 5-ga ja lรตpp-arvuga 10. Trรผkime muutuja gurucount, mille numbrid algavad 5-st 10-ni.
Koodi kรคivitamisel saate jรคrgmise vรคljundi
Vรคljund:
- Meie saadav vรคljund algab 5-st 10-ni.
5. Kui
- Seda kasutatakse Testimine tingimustel.
- Kui mรคrgendit kasutatakse tingimuse testimiseks, kas see on tรตene vรตi mitte, kรคivitatakse koodiplokk.
sรผntaksit:
<c:if test="${condition}></c:if>
Kui tingimus on tรตene, tรคidetakse siin rida lauseid.
Nรคide:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP5</title>
</head>
<body>
<c:set var="count" value="100"/>
<c:if test="${count == 100}">
<c:out value="The count is 100"/>
</c:if>
</body>
</html>
Koodi selgitus:
Code Rida 3: See taglib-eesliide on vajalik kรตikide siltide jaoks ja lisatud eesliide on 'c' seega saab seda kasutada kรตigi pรตhimรคrgendite eesliitena
Code Rida 11: Siin mรครคrame muutuja nimega count vรครคrtuseks 100
Code Rida 12-14: Siin kasutame "kui tingimust", kus kontrollime, kas arv on vรตrdne 100-ga. See on vรตrdne 100-ga, siis saame vรคljundiks "Arv on 100".
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi
Vรคljund:
- Kuna tingimus "kui" on tรตene, saame vรคljundiks "Arv on 100".
6. รผmbersuunamine
- Seda kasutatakse praeguse lehe รผmbersuunamiseks teisele lehele. URL pakkudes sugulast URL selle sildi.
- See toetab kontekstipรตhist URLs
sรผntaksit:
<c:redirect url="" context=""/>
Siin on url suhteline URL, kuhu see tuleb รผmber suunata, ja kohaliku veebirakenduse kontekstinimi.
Nรคide:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP6</title>
</head>
<body>
<c:redirect url="/"/>
</body>
</html>
Koodi selgitus:
Code Rida 3: See taglib-eesliide on vajalik kรตikide siltide jaoks ja lisatud eesliide on 'c' seega saab seda kasutada kรตigi pรตhimรคrgendite eesliitena
Code Rida 11: Siin kasutame "รผmbersuunamismรคrgendit", kus mรครคrame URL-i nime ja sellel lehel klรตpsates suunab see รผmber saidile, mis on รผmbersuunamiseks antud.
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi;
Vรคljund:
- Saame vรคljundi guru99.com URL-i, mille coretag_jsp6.jsp suunab รผmber
JSTL kohandatud sildid
- See on kasutaja mรครคratud JSP keele element.
- Kui JSP tรตlgitakse servletiks, teisendatakse kohandatud silt klassiks, mis toimib objektiga ja mida kutsutakse sildikรคsitlejaks.
- Need toimingud servleti kรคivitamisel kutsub esile veebikonteiner.
- Kasutaja mรครคratud kohandatud sildi loomiseks peame looma sildikรคsitleja, mis laiendab SimpleTagSupporti ja peab alistama meetodi doTag().
- Peame looma tippdomeeni, kus peame klassifaili TLD-s kaardistama.
Kohandatud siltide eelised JSP-s
Siin on JSP kohandatud siltide eelised:
- Kaasaskantav: Mรคrgenditeegis kirjeldatud toiming peab olema kasutatav mis tahes JSP-konteineris.
- Lihtne: Keerukad kasutajad peavad sellest mehhanismist aru saama ja seda kasutama. JSP-funktsioonide mรผรผjatel peab olema lihtne see kasutajatele toimingutena kรคttesaadavaks teha.
- Ekspressiivne: Mehhanism peab toetama mitmesuguseid toiminguid, sealhulgas pesastatud toiminguid, skriptielemente tegevuskehades, skriptimuutujate loomist, kasutamist ja vรคrskendamist.
- Kasutatav erinevatest skriptikeeltest: Kuigi JSP spetsifikatsioon mรครคratleb praegu ainult skriptide semantika Java programmeerimiskeelt tahame jรคtta avatuks teiste skriptikeelte vรตimaluse.
- Toetudes olemasolevatele kontseptsioonidele ja masinatele: Me ei taha mujal olemasolevat uuesti leiutada. Samuti soovime vรคltida tulevasi konflikte, kui suudame neid ette nรคha
sรผntaksit:
Mรตelge, et me loome testiGuru silt ja me saame kasutada taghandlertestTag klassi, mis tรผhistab doTag() meetodi.
<ex:testGuru/> Class testTag extends SimpleTagSupport{ public void doTag()}
Samuti peame selle testTag klassi kaardistama TLD-s (Tag Library Descriptvรตi) JSP-konteinerina loob automaatselt kaardiping klassifaili ja tippdomeeni (TLD) failis mainitud URI vahel.
JSP sildi liides
- See klass peab laiendama SimpleTagSupport klassi.
- See klass peab alistama meetodi doTag(), mis on osa SimpleTagSupport klassist (alistamine on meetod, mis pรคrineb รผlemklassist).
- See liides on JSPTagi liidese alamliides.
- See pakub meetodeid, mida teha sildi alguses ja lรตpus.
- Samuti peame selle klassi kaardistama tippdomeenis, st Tag Library deskriptoris
Me kaalume allolevas nรคites
Sildi liidese meetod
- doTag() on meetod, mille peame alistama ja millel on sildi sisu.
- See vรตtab praeguse JSP-konteksti, kasutades getJSPContext()
Nรคide:
Kohandatud_jsp1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Custom Tag</title>
</head>
<body>
<ex:guruTag/>
</body>
</html>
Kohandatud.tld
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Test TLD</short-name>
<tag>
<name>guruTag</name>
<tag-class>demotest.guruTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
guruTag.java(TagHandler)
package demotest; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class guruTag extends SimpleTagSupport{ public void doTag() throws JspException,IOException { JspWriter out = getJspContext().getOut(); out.println("Guru Tag"); } }
Koodi selgitus:
guruTag.java(TagHandler)
Code Rida 6:guruTag klass laiendab SimpleTagSupport klassi, mis asub failis javax.servlet.JSP jar
Code Rida 7: Siin alistame doTag() meetodi, mis viskab JspExceptioni ja IOExceptioni.
Code Rida 9-10: Selles meetodis manustatakse kood kohandatud sildile, mida kutsutakse. Vรตtame JSP-objekti.Writer, ja see prindib vรคlja โGuru pรคev."
Kohandatud.tld
Code Rida 6: Siin on kohandatud sildi nimi "guruTag".
Code Rida 7:Sildi klass on taghandlerclass, st guruTag.java. See vรตtab kogu kรคitleja faili tee, mis sisaldab faili asukoha kataloogi teed.
Kohandatud_jsp1.jsp
Code Line 3:See taglib-eesliide on vajalik kรตikide siltide jaoks ja lisatud eesliide on 'ex', seega saab seda kasutada kรตigi pรตhimรคrgendite eesliitena ja uri on custom.tld, mis kaardistab sildikรคsitleja.
Code Rida 11: Siin mรครคratleme kohandatud sildi โguruTagโ, mis kutsub vรคlja kรคitlejaklassi doTag() meetodi ja selles sisalduv kood kรคivitatakse.
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi
Vรคljund:
- Me saame vรคljundi kujul โGuruโTagโ failist guruTag.java, st TagHandler, mis tรผhistab meetodi doTag() ja kuvab โGuru โSiltโ vรคljundina.







