JSTL (JSP Standard Tag Library)
Selles JSTL-i รตpetuses nรคeme, kuidas erinevate JSTL-mรคrgendite kasutamine muudab JSP-kodeerimise lihtsamaks.
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.
kokkuvรตte
- Selles jaotises รตppisime JSP standardsiltide teegi kohta, milles tegime pรตhisilte ja kohandatud silte.
- Pรตhimรคrgendid hรตlmavad รผmbersuunamise, importimise ja pรผรผdmise silte, mida kasutati JSP-s pรตhilistel eesmรคrkidel.
- Samuti tegime kohandatud silte, kus saame sildid mรครคratleda ja kasutada seda JSP-s







