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.

  • 🏷️ JSTL definíció: Egyedi JSP címkekönyvtárak szabványos gyűjteménye gyakori webes feladatokhoz.
  • Előnyök: Tiszta, hordozható kódot hoz létre, amely könnyebben olvasható emberek és eszközök számára, mint a szkriptletek.
  • 🔧 Alapvető címkék: Az out, catch, import, forEach, if és redirect függvények a kimenetet, hibákat, include-okat, ciklusokat és feltételeket kezelik.
  • 🔁 Iteráció és logika: A forEach ciklusok tartományokon keresztül futnak, míg az if és a catch függvények feltételes és kivételkezelést adnak hozzá.
  • 🇧🇷 Egyéni címkék: Felhasználó által definiált címkék létrehozása a SimpleTagSupport kiterjesztésével, a doTag() felülbírálásával és a leképezésselping egy TLD-ben.
  • 📄 Címke interfész: A címkekönyvtár Descriptvagy (TLD) a tagneveket a JSP konténer kezelőosztályaihoz rendeli.

JSTL - JSP szabványos címkekönyvtár

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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ő.
  5. 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:

JSTL Core Tags - Out

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:

JSTL Core Tags - Catch

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.

JSTL alapcímkék – importálás

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

JSTL alapcímkék – forEach

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

JSTL alapcímkék – Ha

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;

JSTL alapcímkék – Átirányítás

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

JSP címke interfész

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.

GYIK

A JSTL öt tagcsoporttal rendelkezik: mag, formázás (I18N), SQL, XML és függvények. A mag tagek az iterációt és a logikát kezelik, míg a formázás, SQL, XML és függvény tagek a lokalizációt, az adatbázisokat, az XML-t és a karakterlánc-segédprogramokat fedik le.

A JSTL olvasható XML-szerű tageket használ a logikához, míg a szkriptletek nyers adatokat ágyaznak be. Java JSP-ben. A JSTL tisztább, könnyebben karbantartható oldalakat hoz létre, és elkerüli a keveredést. Java kód HTML jelöléssel.

A TLD egy XML fájl, amely az egyéni tagneveket a kezelőosztályaikhoz rendeli. A JSP konténer beolvassa a TLD-t, hogy megtudja, melyik Java osztály, amelyet minden egyéni címkéhez végre kell hajtani.

A mesterséges intelligencia asszisztensek JSTL-címkéket generálhatnak, egyéni címkekezelőket írhatnak, szkriptleteket JSTL-re konvertálhatnak, és elmagyarázhatják a kifejezésnyelvet. Felgyorsítják a JSP fejlesztését, miközben a fejlesztők áttekintik a generált kódot.

Igen. A mesterséges intelligencia eszközei képesek elemezni a szkriptlet kódját, és átírni azt egyenértékű JSTL alapcímkék és kifejezésnyelv használatával.ping modernizálja a régi JSP oldalakat a funkcionalitás megőrzése mellett.

Foglald össze ezt a bejegyzést a következőképpen: