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:

  1. Standardne silt: see pakub JSP-lehtede rikkalikku kaasaskantavat funktsiooni. Arendajal on koodist lihtne aru saada.
  2. Code Korralik ja puhas: Kuna skriptid ajavad arendaja segadusse, muudab JSTLi kasutamine koodi puhtaks ja puhtaks.
  3. 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.
  4. Inimestel on seda lihtsam lugeda: JSTL pรตhineb XML, mis on vรคga sarnane HTML-iga. Seetรตttu on arendajatel seda lihtne mรตista.
  5. 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:

JSTL-i pรตhisildid โ€“ vรคljas

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:

JSTL-i pรตhisildid โ€“ pรผรผdmine

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.

JSTL-i pรตhisildid โ€“ import

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

JSTL-i pรตhisildid โ€“ forEach

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

JSTL-i pรตhisildid โ€“ kui

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;

JSTL-i pรตhisildid โ€“ รผmbersuunamine

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

JSP sildi liides

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

Vรตta see postitus kokku jรคrgmiselt: