JSTL (JSP Standaard Tag Bibliotheek)

⚡ Slimme samenvatting

De JSP Standard Tag Library (JSTL) is een verzameling aangepaste JSP-tagbibliotheken die veelvoorkomende functionaliteiten voor webontwikkeling bieden, zoals iteratie, voorwaardelijke logica, foutafhandeling, importeren en omleidingen. Hierdoor wordt JSP-code overzichtelijker, draagbaarder en gemakkelijker te lezen dan scriptlets.

  • ???? ️ JSTL gedefinieerd: Een standaardverzameling van aangepaste JSP-tagbibliotheken voor veelvoorkomende webtaken.
  • Voordelen: Produceert schone, draagbare code die gemakkelijker te lezen is voor mensen en tools dan scriptlets.
  • 🔧 Kernlabels: De functies `out`, `catch`, `import`, `forEach`, `if` en `redirect` verwerken uitvoer, fouten, includes, lussen en voorwaarden.
  • 🔁 Iteratie en logica: `forEach` doorloopt bereiken, terwijl `if` en `catch` voorwaardelijke afhandeling en uitzonderingsafhandeling toevoegen.
  • Aangepaste tags: Maak door de gebruiker gedefinieerde tags aan door SimpleTagSupport uit te breiden, doTag() te overschrijven en te mappen.ping in een TLD.
  • 📄 Tag-interface: De tagbibliotheek Descriptof (TLD) koppelt tagnamen aan hun handlerklassen voor de JSP-container.

JSTL - JSP Standard Tag Library

Wat is JSTL in Java?

JSTL staat voor Java standaard tagbibliotheek op serverpagina's, en het is een verzameling aangepaste JSP-tagbibliotheken die algemene webontwikkelingsfunctionaliteit bieden. JSTL is een standaard tagbibliotheek van de JSP.

Voordelen van JSTL

Hieronder staan ​​de voordelen van JSTL:

  1. Standaard label: Het biedt een rijke laag van de draagbare functionaliteit van JSP-pagina's. Het is voor een ontwikkelaar gemakkelijk om de code te begrijpen.
  2. Code Netjes en schoon: Omdat scriplets de ontwikkelaar in verwarring brengen, maakt het gebruik van JSTL de code netjes en schoon.
  3. Automatisch JavabonenInterospectie Ondersteuning: Het heeft het voordeel van JSTL ten opzichte van JSP-scriptlets. JSTL-expressietaalhandvatten JavaBean-code heel eenvoudig. We hoeven de objecten, die zijn opgehaald als scoped-attributen, niet te downcasten. Het gebruik van JSP-scriptletscode zal ingewikkeld zijn, en JSTL heeft dat doel vereenvoudigd.
  4. Gemakkelijker voor mensen om te lezen:JSTL is gebaseerd op XML, wat erg lijkt op HTML. Daarom is het voor de ontwikkelaars gemakkelijk te begrijpen.
  5. Gemakkelijker te begrijpen voor computers: Gereedschappen zoals Dreamweaver en de voorpagina genereren steeds meer HTML-code. HTML-tools kunnen uitstekend HTML-code opmaken. De HTML-code wordt gemengd met de scripletcode. Omdat JSTL wordt uitgedrukt als XML-compatibele tags, is het voor HTML-generatie eenvoudig om de JSTL-code in het document te parseren.

JSTL-tags

De kerntags zijn de meest gebruikte tags in JSP. Zij bieden ondersteuning voor

  • herhaling
  • Voorwaardelijke logica
  • Vang uitzondering
  • url naar voren
  • Omleiden, enz.

Om kerntags te gebruiken moeten we eerst de tagbibliotheek definiëren en hieronder vindt u de syntaxis om een ​​tagbibliotheek op te nemen.

Syntaxis :

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Hier

  • prefix kan worden gebruikt om alle kerntags te definiëren en
  • uri is de bibliotheek van taglib waaruit het wordt geïmporteerd

Laten we enkele van de kerntags in detail bekijken,

1. Uit

  • Het resultaat van de expressie wordt weergegeven in de out-tag
  • Het kan direct aan de XML-tags ontsnappen. Daarom worden ze niet geëvalueerd als daadwerkelijke tags

Syntax:

<c:out value="" default="" escapeXML="">
  • Hier vertegenwoordigt waarde informatie voor de uitvoer, en dit is verplicht
  • Standaard is het niet uitvoeren van informatie, en dit is niet verplicht
  • escapeXML – Dit is waar als het XML-tekens ontsnapt.

Voorbeeld:

Kerntag_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>

Uitleg van de code:

Code Regel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags.

Code Regel 12: Hier gebruiken we coretag out met het voorvoegsel “c” en deze out zal de waarde in de expressietag afdrukken. De uitvoer zal dus naam zijn

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:

JSTL-kerntags - uit

Output:

  • We krijgen de waarde als naam van de kerntag 'out' die in de uitvoerstroom wordt afgedrukt.

2. Vang

  • Het vangt elke werpbare uitzondering op die in het lichaam voorkomt en wordt als uitvoer weergegeven.
  • Het wordt gebruikt voor het afhandelen van de fouten en het opvangen ervan.

Syntax:

<c:catchvar="">

Hier vertegenwoordigt var de naam van de variabele, die een werpbare uitzondering bevat.

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Regel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags

Code Lijn 11-13: Coretag catch wordt gebruikt om de uitzondering op te vangen en af ​​te drukken. Hier wordt de uitzondering gegenereerd wanneer 10/0 en die uitzondering de naam “guruException” heeft.

Code Regel 14: We drukken de “guruException” af.

Wanneer u de code uitvoert, krijgt u de volgende uitvoer:

JSTL-kerntags - Catch

Output:

  • We krijgen een rekenkundige uitzondering als /by zero, en deze wordt in de uitvoer afgedrukt met de variabele "guruException"

3. Importeren

  • We kunnen de inhoud van een ander bestand importeren in een JSP-pagina zoals we deden in JSP omvat actie.
  • Hier kunnen we ook het volgende opnemen URL en de inhoud wordt op die pagina weergegeven.

Syntax:

<c:importvar="" uri="">

Hier is var een variabelenaam die een identificatie is, die de bestandsnaam/uri bevat. uri is de relatieve bestandsnaam of uriname.

kerntag_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>

Kerntag_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>

Uitleg van de code:

Kerntag_jsp31.jsp

Code Regel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags

Code Lijn 11-12: Hier importeren we het coretag_jsp32.jsp-bestand in dit bestand met behulp van de importtag

Code Lijn 13: Hier drukken we het bestand coretag_jsp32.jsp af met behulp van onze tag.

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer.

JSTL-kerntags - importeren

Output:

  • Coretag_jsp32 wordt afgedrukt in de uitvoer omdat dit bestand werd geïmporteerd in coretag_jsp31.jsp.

4. voorElk

  • Het wordt gebruikt om het aantal elementen in reeksen uitspraken te herhalen.
  • Het is hetzelfde als een Java forloop.

Syntax:

<c:forEach var="" begin=""  end="">
  • Hier vertegenwoordigt var de variabelenaam die de tellernaam bevat
  • Begin vertegenwoordigt de tellerbeginwaarde
  • End vertegenwoordigt de eindwaarde

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Regel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags

Code Lijn 11-13: Hier gebruiken we de "forEach"-lus waarbij de variabelenaam "gurucount" is, die begon met tellen als 5 en eindigde met tellen als 10. We printen de variabele gurucount die getallen heeft die beginnen van 5 tot 10.

Wanneer u de code uitvoert, krijgt u de volgende uitvoer

JSTL-kerntags - voor elk

Output:

  • De uitvoer die we krijgen begint van 5 tot 10.

5. Als

  • Je gebruikt het voor Testen voorwaarden.
  • Als de tag wordt gebruikt om op basis hiervan te testen of een voorwaarde waar is of niet, wordt het codeblok uitgevoerd.

Syntax:

<c:if test="${condition}></c:if>

Als de voorwaarde waar is, worden hier reeksen instructies uitgevoerd.

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Regel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags

Code Regel 11: Hier stellen we de variabele met de naam count in op 100

Code Lijn 12-14: Hier gebruiken we de "if condition" waarbij we controleren of de telling gelijk is aan 100. Is deze gelijk aan 100, dan krijgen we de uitvoer als "De telling is 100."

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer

JSTL-kerntags - If

Output:

  • Omdat de “if”-voorwaarde waar is, krijgen we de uitvoer als “The count is 100”.

6. omleiding

  • Het wordt gebruikt om de huidige pagina door te verwijzen naar een andere pagina. URL door de relatieve waarde te verstrekken URL van dit label.
  • Het ondersteunt contextrelatieve URLs

Syntax:

<c:redirect url="" context=""/>

Hier is de URL de relatieve URL waarnaar deze moet worden doorverwezen en de contextnaam van de lokale webapplicatie.

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Regel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags

Code Regel 11: Hier gebruiken we de “redirect tag”, waarbij we de URL-naam specificeren, en wanneer we op die pagina klikken, wordt deze omgeleid naar de site die is opgegeven voor omleiding.

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:

JSTL-kerntags - omleiding

Output:

  • We krijgen de uitvoer-URL van guru99.com die wordt omgeleid door coretag_jsp6.jsp

Aangepaste JSTL-tags

  • Het is een door de gebruiker gedefinieerde JSP taalelement.
  • Wanneer JSP wordt vertaald naar een servlet, wordt de aangepaste tag omgezet in een klasse die actie onderneemt op een object en wordt aangeroepen als taghandler.
  • Deze acties wanneer de servlet wordt uitgevoerd, worden aangeroepen door de webcontainer.
  • Om de door de gebruiker gedefinieerde aangepaste tag te maken, moeten we de taghandler maken die de SimpleTagSupport uitbreidt en de doTag() -methode moet overschrijven.
  • We moeten TLD maken waarbij we het klassenbestand in TLD moeten toewijzen.

Voordelen van aangepaste tags in JSP

Dit zijn de voordelen van aangepaste tags in JSP:

  • draagbaar: Een actie die in een tagbibliotheek wordt beschreven, moet in elke JSP-container kunnen worden gebruikt.
  • Eenvoudig: Onervaren gebruikers moeten dit mechanisme kunnen begrijpen en gebruiken. Leveranciers van JSP-functionaliteit moeten het makkelijk vinden om het beschikbaar te maken voor gebruikers als acties.
  • Expressief: Het mechanisme moet een breed scala aan acties ondersteunen, waaronder geneste acties, scriptelementen binnen actielichamen, het aanmaken, gebruiken en bijwerken van scriptvariabelen.
  • Bruikbaar vanuit verschillende scripttalen: Hoewel de JSP-specificatie momenteel alleen de semantiek voor scripts in de Java programmeertaal willen we de mogelijkheid van andere scripttalen openlaten.
  • Gebaseerd op bestaande concepten en machines: We willen niet opnieuw uitvinden wat elders bestaat. Ook willen we toekomstige conflicten vermijden wanneer we ze kunnen voorspellen.

Syntax:

Stel dat we een test aan het maken zijn.Guru We kunnen de tag gebruiken en de klasse `taghandlertestTag` gebruiken, die de `doTag()`-methode overschrijft.

<ex:testGuru/>
Class testTag extends SimpleTagSupport{ public void doTag()}

We zullen deze testTag-klasse ook in TLD (Tag Library Descriptof) aangezien de JSP-container automatisch een kaart aanmaaktping tussen het klassebestand en de URI die in het TLD-bestand is vermeld.

JSP-taginterface

  • Deze klasse zal de SimpleTagSupport-klasse moeten uitbreiden.
  • Deze klasse zal de doTag()-methode moeten overschrijven die deel uitmaakt van de SimpleTagSupport-klasse (overschrijven is een methode die wordt overgenomen van de bovenliggende klasse).
  • Deze interface is een subinterface van de JSPTAg-interface.
  • Het biedt methoden voor uitvoering aan het begin en einde van de tag.
  • We moeten deze klasse ook in kaart brengen in TLD, dat wil zeggen de Tag Library-descriptor

We overwegen in het onderstaande voorbeeld

Methode van tag-interface

  • doTag() is een methode die we moeten overschrijven en die de inhoud van de tag zal bevatten.
  • Er is de huidige JSP-context nodig met behulp van getJSPContext()

Voorbeeld:

Aangepaste tag_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>

Aangepast.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");
	}

}

Uitleg van de code:

guruTag.java (TagHandler)

Code Regel 6:guruTag-klasse is een uitbreiding van de SimpleTagSupport-klasse die aanwezig is in javax.servlet.JSP jar

Code Regel 7: Hier overschrijven we de doTag()-methode die JspException en IOException genereert.

Code Lijn 9-10: Bij deze methode wordt de code ingesloten in een aangepaste tag die vervolgens wordt aangeroepen. We gebruiken hiervoor een JSP-object.Writer, en dat zal afdrukken “Guru Dag."

Aangepast.tld

Code Regel 6: De naam van de aangepaste tag is hier 'guruTag'.

Code Regel 7:Tagklasse is taghandlerclass, dat wil zeggen guruTag.java. Het heeft het volledige pad van het handlerbestand nodig, inclusief het directorypad van de locatie van het bestand.

Aangepaste tag_jsp1.jsp

Code Lijn 3:Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'ex'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags en uri is custom.tld die de tag-handler toewijst.

Code Regel 11: Hier definiëren we de aangepaste tag “guruTag”, die de methode doTag() van de handlerklasse zal aanroepen en de code daarin zal worden uitgevoerd.

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer

JSP-taginterface

Output:

  • We krijgen de volgende uitvoer: “GuruTag” uit guruTag.java, oftewel TagHandler, die de doTag()-methode overschrijft en die afdrukt “Guru "Tag" als uitvoer.

Veelgestelde vragen

JSTL heeft vijf taggroepen: core, formatting (I18N), SQL, XML en functions. Core-tags behandelen iteratie en logica, terwijl formatting-, SQL-, XML- en function-tags betrekking hebben op lokalisatie, databases, XML en stringhulpprogramma's.

JSTL gebruikt leesbare XML-achtige tags voor logica, terwijl scriptlets ruwe code insluiten. Java in JSP. JSTL produceert schonere, beter onderhoudbare pagina's en voorkomt het mengen van verschillende elementen. Java Code met HTML-opmaak.

Een TLD is een XML-bestand dat aangepaste tagnamen koppelt aan hun handlerklassen. De JSP-container leest de TLD om te weten welke tags gebruikt moeten worden. Java De klasse die voor elke aangepaste tag moet worden uitgevoerd.

AI-assistenten kunnen JSTL-tags genereren, aangepaste taghandlers schrijven, scriptlets naar JSTL converteren en expressietaal uitleggen. Ze versnellen de JSP-ontwikkeling terwijl ontwikkelaars de gegenereerde code controleren.

Ja. AI-tools kunnen scriptcode analyseren en herschrijven met behulp van equivalente JSTL-kerntags en expressietaal.ping Moderniseer verouderde JSP-pagina's met behoud van functionaliteit.

Vat dit bericht samen met: