JSTL (JSP szabványos címkekönyvtár)
⚡ Okos összefoglaló
A JSP Standard Tag Library (JSTL) egyéni JSP tagkönyvtárak gyűjteménye, amelyek olyan általános webfejlesztési funkciókat biztosítanak, mint az iteráció, a feltételes logika, a kivételkezelés, az importálás és az átirányítás, így a JSP kód tisztább, hordozhatóbb és könnyebben olvasható, mint a szkriptletek.

Miben van a JSTL? Java?
JSTL jelentése Java szerveroldalak szabványos címkekönyvtárát, és ez egyéni JSP címkekönyvtárak gyűjteménye, amelyek közös webfejlesztési funkciókat biztosítanak. A JSTL a JSP szabványos címkekönyvtára.
A JSTL előnyei
Az alábbiakban bemutatjuk a JSTL előnyeit:
- Szabványos címke: A JSP-oldalak hordozható funkcióinak gazdag rétegét biztosítja. A fejlesztő könnyen megértheti a kódot.
- Code Ügyes és tiszta: Mivel a szkriptek megzavarják a fejlesztőt, a JSTL használata tisztává és tisztává teszi a kódot.
- Automatikus JavabeansInterospection támogatás: A JSTL előnye van a JSP scriptletekkel szemben. JSTL kifejezési nyelv kezeli JavaBean kód nagyon könnyen. Nem kell leépíteni az objektumokat, amelyek hatókörű attribútumként lettek letöltve. A JSP scriptlet kód használata bonyolult lesz, és a JSTL leegyszerűsítette ezt a célt.
- Az emberek számára könnyebben olvasható: A JSTL alapja XML, ami nagyon hasonlít a HTML-hez. Ezért a fejlesztők számára könnyen érthető.
- A számítógépek számára könnyebben érthető: Eszközök, mint pl Dreamweaver és a címlap egyre több HTML kódot generál. A HTML-eszközök nagyszerűen formázzák a HTML-kódot. A HTML kód keverve van a scriplet kóddal. Mivel a JSTL-t XML-kompatibilis címkékként fejezik ki, a HTML-generálás könnyen elemzi a JSTL-kódot a dokumentumon belül.
JSTL címkék
Az alapvető címkék a JSP leggyakrabban használt címkéi. Támogatást nyújtanak
- Ismétlés
- Feltételes logika
- Cat kivétel
- url előre
- Átirányítás stb.
Az alapvető címkék használatához először meg kell határoznunk a címkekönyvtárat, és lent található a címkekönyvtár szintaxisa.
Szintaxis:
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>
Itt,
- előtag használható az összes alapvető címke meghatározására és
- Az uri a taglib könyvtára, ahonnan importálva van
Nézzünk meg néhány alapvető címkét részletesen,
1. Ki
- A kifejezés eredménye az out címkében jelenik meg
- Közvetlenül elkerülheti az XML címkéket. Ezért a rendszer nem értékeli ki tényleges címkékként
Syntax:
<c:out value="" default="" escapeXML="">
- Itt az érték a kimenet információját jelenti, és ez kötelező
- Az alapértelmezés az információ kiadásának sikertelensége, és ez nem kötelező
- escapeXML – Igaz, ha kihagyja az XML karaktereket.
Példa:
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>
A kód magyarázata:
Code 3 vonal: Ez a taglib előtag minden címkéhez szükséges, és a hozzáadott előtag a „c”. Ezért minden alapcímke előtagjaként használható.
Code 12 vonal: Itt a coretag out-ot használjuk a „c” előtaggal, és ez kinyomtatja a kifejezéscímkében lévő értéket. Ezért a kimenet név lesz
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
output:
- Az értéket névként az „out” core címkétől kapjuk, amely a kimeneti adatfolyamban fog megjelenni.
2. Elkapni
- Elkap minden dobható kivételt, amely a testben előfordul, és kimenetként jelenik meg.
- A hibák kezelésére és elkapására szolgál.
Syntax:
<c:catchvar="">
Itt a var annak a változónak a nevét jelenti, amely a dobható kivételt tartalmazza.
Példa:
<%@ 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>
A kód magyarázata:
Code 3 vonal: Ez a taglib előtag minden címkéhez szükséges, a hozzáadott előtag pedig "c", így minden coretag előtagjaként használható
Code 11-13. sor: A Coretag catch a kivétel elfogására és a kivétel kinyomtatására szolgál. Itt a kivétel 10/0 esetén jelenik meg, és ennek a kivételnek a neve „guruException”.
Code 14 vonal: A „guruException”-t nyomtatjuk.
Amikor végrehajtja a kódot, a következő kimenetet kapja:
output:
- Az aritmetikai kivételt /by nullával kapjuk meg, és a „guruException” változó használatával kerül kinyomtatásra a kimenetbe.
3. Importálás
- Egy másik fájl tartalmát importálhatjuk egy JSP-oldalra, ahogyan azt korábban tettük A JSP tartalmaz műveletet.
- Ide sorolhatjuk még URL és a tartalom megjelenik az adott oldalon.
Syntax:
<c:importvar="" uri="">
Itt a var egy változónév, amely egy azonosító, amely tartalmazza a fájlnevet/uri-t. Az uri egy relatív fájlnév vagy urinév.
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>
A kód magyarázata:
Coretag_jsp31.jsp
Code 3 vonal: Ez a taglib előtag minden címkéhez szükséges, a hozzáadott előtag pedig "c", így minden coretag előtagjaként használható
Code 11-12. sor: Itt a coretag_jsp32.jsp fájlt importáljuk ebbe a fájlba az import címke használatával
Code 13. sor: Itt a coretag_jsp32.jsp fájlt nyomtatjuk ki az out tag használatával.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja.
output:
- A Coretag_jsp32 a kimenetben kerül kinyomtatásra, mivel ezt a fájlt a coretag_jsp31.jsp fájlba importálták.
4. Minden
- Az utasítássorozat elemeinek számának iterálására szolgál.
- Ez ugyanaz, mint a Java forloop.
Syntax:
<c:forEach var="" begin="" end="">
- Itt a var a változó nevét jelenti, amely a számláló nevét fogja tartalmazni
- A Begin a számláló kezdési értéket jelenti
- Az End a végértékét jelenti
Példa:
<%@ 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>
A kód magyarázata:
Code 3 vonal: Ez a taglib előtag minden címkéhez szükséges, a hozzáadott előtag pedig "c", így minden coretag előtagjaként használható
Code 11-13. sor: Itt a „forEach” ciklust használjuk, ahol a változó neve „gurucount”, ami 5-től kezdődően és 10-ig számol. A gurucount változót nyomtatjuk, amelynek 5-től 10-ig kezdődő számai vannak.
Amikor végrehajtja a kódot, a következő kimenetet kapja
output:
- A kapott kimenet 5-től 10-ig kezdődik.
5. Ha
- Ezt használják Tesztelés körülmények.
- Ha a címkét egy feltétel tesztelésére használjuk, hogy ez alapján igaz-e vagy sem, akkor a kódblokk végrehajtásra kerül.
Syntax:
<c:if test="${condition}></c:if>
Itt, ha a feltétel igaz, akkor utasítások sorozata kerül végrehajtásra.
Példa:
<%@ 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>
A kód magyarázata:
Code 3 vonal: Ez a taglib előtag minden címkéhez szükséges, a hozzáadott előtag pedig "c", így minden coretag előtagjaként használható
Code 11 vonal: Itt a count nevű változót 100-ra állítjuk
Code 12-14. sor: Itt az „ha feltételt” használjuk, ahol ellenőrizzük, hogy a szám egyenlő-e 100-zal. Egyenlő 100-zal, akkor a kimenetet a következőképpen kapjuk: „A szám 100”.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja
output:
- Mivel az „ha” feltétel igaz, a kimenetet „A szám 100”-ként kapjuk.
6. átirányítás
- Az aktuális oldal egy másik oldalra való átirányítására szolgál. URL a rokon biztosításával URL ennek a címkének.
- Támogatja a kontextus relatív URLs
Syntax:
<c:redirect url="" context=""/>
Itt az url a relatív URL, amelyre át kell irányítani, és a helyi webalkalmazás környezeti neve.
Példa:
<%@ 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>
A kód magyarázata:
Code 3 vonal: Ez a taglib előtag minden címkéhez szükséges, a hozzáadott előtag pedig "c", így minden coretag előtagjaként használható
Code 11 vonal: Itt az „átirányítási címkét” használjuk, ahol megadjuk az urlnevet, és amikor erre az oldalra kattintunk, átirányít az átirányításra megadott webhelyre.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja;
output:
- Megkapjuk a kimeneti guru99.com URL-t, amelyet a coretag_jsp6.jsp irányít át
JSTL egyéni címkék
- Ez egy felhasználó által meghatározott JSP nyelvi elem.
- Amikor a JSP-t szervletté fordítják, az egyéni címkét egy osztálylá alakítják, amely műveleteket hajt végre egy objektumon, és címkekezelőként hívják meg.
- A szervlet végrehajtásakor azokat a műveleteket hívja meg a webtároló.
- A felhasználó által definiált egyéni címke létrehozásához létre kell hoznunk a címkekezelőt, amely kiterjeszti a SimpleTagSupport-ot, és felül kell írnia a doTag() metódust.
- Létre kell hoznunk TLD-t, ahol le kell képeznünk az osztályfájlt TLD-ben.
Az egyéni címkék előnyei a JSP-ben
Íme az egyéni címkék előnyei a JSP-ben:
- Hordozható: A címkekönyvtárban leírt műveletnek használhatónak kell lennie bármely JSP-tárolóban.
- Egyszerű: A nem kifinomult felhasználóknak meg kell tudniuk érteni és használniuk ezt a mechanizmust. A JSP-funkciók szállítóinak könnyen elérhetővé kell tenniük azt a felhasználók számára műveletként.
- Kifejező: A mechanizmusnak támogatnia kell a műveletek széles skáláját, beleértve a beágyazott műveleteket, a művelettesteken belüli szkriptelemeket, a parancsfájl-változók létrehozását, használatát és frissítését.
- Különböző szkriptnyelvekből használható: Bár a JSP specifikáció jelenleg csak a szkriptek szemantikáját határozza meg a Java programozási nyelvet, nyitva akarjuk hagyni más szkriptnyelvek lehetőségét.
- Meglévő koncepciókra és gépekre építve: Nem akarjuk újra feltalálni azt, ami máshol létezik. Ezenkívül el akarjuk kerülni a jövőbeni konfliktusokat, amikor meg tudjuk előre jelezni őket
Syntax:
Gondoljuk át, hogy tesztet készítünkGuru tag-et, és használhatjuk a taghandlertestTag osztályt, amely felülírja a doTag() metódust.
<ex:testGuru/> Class testTag extends SimpleTagSupport{ public void doTag()}
Ezenkívül fel kell térképeznünk ezt a testTag osztályt a TLD-ben (Tag Library Descriptvagy) JSP konténerként automatikusan létrehoz egy map-etping az osztályfájl és a TLD fájlban említett URI között.
JSP címke interfész
- Ennek az osztálynak ki kell bővítenie a SimpleTagSupport osztályt.
- Ennek az osztálynak felül kell írnia a doTag() metódust, amely a SimpleTagSupport osztály része (a felülbírálás a szülőosztálytól örökölt metódus).
- Ez az interfész a JSPTag interfész egy alinterfésze.
- A címke elején és végén végrehajtható módszereket biztosít.
- Ezenkívül le kell térképeznünk ezt az osztályt a TLD-ben, azaz a Tag Library leíróban
Az alábbi példában megvizsgáljuk
A címkefelület módszere
- A doTag() egy olyan metódus, amelyet felül kell bírálnunk, és amely tartalmazza a címke tartalmát.
- Az aktuális JSP-környezetet használja a getJSPContext() segítségével
Példa:
Customtag_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>
Custom.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"); } }
A kód magyarázata:
guruTag.java(TagHandler)
Code 6 vonal:A guruTag osztály kiterjeszti a SimpleTagSupport osztályt, amely a javax.servlet.JSP jar fájlban található
Code 7 vonal: Itt felülírjuk a doTag() metódust, amely a JspException és az IOException parancsokat dobja.
Code 9-10. sor: Ebben a metódusban a kód egy egyéni címkébe ágyazódik be, amelyet meghívunk. Egy Jsp objektumot veszünk.Writer, és ez kinyomtatja a következőt: „Guru Nap."
Custom.tld
Code 6 vonal: Itt az egyéni címke neve „guruTag”.
Code 7 vonal:A címkeosztály a taghandlerclass, azaz a guruTag.java. A kezelőfájl teljes elérési útját veszi, amely tartalmazza a fájl helyének könyvtárútvonalát.
Customtag_jsp1.jsp
Code vonal 3: Ez a taglib előtag minden címkéhez szükséges, és a hozzáadott előtag 'ex', ezért minden coretag előtagjaként használható, az uri pedig a custom.tld, amely leképezi a címkekezelőt.
Code 11 vonal: Itt definiáljuk a „guruTag” egyéni címkét, amely meghívja a kezelő osztály doTag() metódust, és a benne lévő kód végrehajtásra kerül.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja
output:
- A kimenetet a következőképpen kapjuk: „Guru„Tag” a guruTag.java fájlból, azaz TagHandler, amely felülírja a doTag() metódust, és kiírja a „Guru „Tag” kimenetként.







