JSTL (JSP szabványos címkekönyvtár)

Ebben a JSTL oktatóanyagban látni fogjuk, hogy a különböző JSTL címkék használata hogyan teszi könnyebbé a JSP kódolást.

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. Kód Tiszta é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:

3. kódsor: 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ó.

12. kódsor: 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:

3. kódsor: 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ó

11-13. kódsor: 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”.

14. kódsor: 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.
  • Itt is megadhatjuk az URL-t, és a tartalom megjelenik az 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

3. kódsor: 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ó

11-12. kódsor: Itt a coretag_jsp32.jsp fájlt importáljuk ebbe a fájlba az import címke használatával

13. kódsor: 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:

3. kódsor: 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ó

11-13. kódsor: 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:

3. kódsor: 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ó

11. kódsor: Itt a count nevű változót 100-ra állítjuk

12-14. kódsor: 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

  • A címke relatív URL-címének megadásával az aktuális oldalt egy másik URL-re irányítja át.
  • Támogatja a kontextus relatív URL-eket

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:

3. kódsor: 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ó

11. kódsor: 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:

Fontolja meg, hogy testGuru címkét hozunk létre, és használhatjuk a taghandlertestTag osztályt, amely felülbírálja 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) mivel a JSP-tároló automatikusan létrehoz egy leképezést 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)

6. kódsor:A guruTag osztály kiterjeszti a SimpleTagSupport osztályt, amely a javax.servlet.JSP jar fájlban található

7. kódsor: Itt felülírjuk a doTag() metódust, amely a JspException és az IOException parancsokat dobja.

9-10. kódsor: Ennél a módszernél a kód beágyazódik az egyéni címkébe, amely meghívásra kerül. Elveszünk egy JspWriter objektumot, amely kinyomtatja a „Guru Tag”-ot.

Custom.tld

6. kódsor: Itt az egyéni címke neve „guruTag”.

7. kódsor: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

3. kódsor: 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.

11. kódsor: 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 „GuruTag”-ként kapjuk a guruTag.java-tól, azaz a TagHandler-től, amely felülbírálja a doTag() metódust, és amely a „Guru Tag”-ot írja ki kimenetként.

Összegzésként

  • Ebben a részben megismerkedtünk a JSP szabványos címkekönyvtárával, amelyben alapvető címkéket és egyéni címkéket készítettünk.
  • Az alapvető címkék közé tartoznak az if, redirect, import, catch címkék, amelyek a JSP-ben alapvető célokra használt címkék voltak.
  • Emellett egyéni címkéket is készítettünk, amelyekben meghatározhatjuk a címkéket és használhatjuk a JSP-ben