JSTL (JSP standardna biblioteka oznaka)

⚡ Pametni sažetak

JSP Standard Tag Library (JSTL) je zbirka prilagođenih JSP tag biblioteka koje pružaju uobičajene funkcionalnosti web razvoja kao što su iteracija, uvjetna logika, rukovanje iznimkama, uvoz i preusmjeravanje, čineći JSP kod čišćim, prenosivim i lakšim za čitanje od skriptleta.

  • 🏷️ JSTL definirano: Standardna kolekcija prilagođenih JSP biblioteka oznaka za uobičajene web zadatke.
  • Prednosti: Proizvodi čist, prenosiv kod koji je ljudima i alatima lakši za čitanje od skriptleta.
  • 🔧 Osnovne oznake: out, catch, import, forEach, if i redirect obrađuju izlaz, pogreške, uključivanja, petlje i uvjete.
  • 🔁 Iteracija i logika: forEach vrši petlje preko raspona, dok if i catch dodaju uvjetnu obradu i obradu iznimki.
  • 🛠️ Prilagođene oznake: Stvorite korisnički definirane oznake proširivanjem SimpleTagSupport-a, nadjačavanjem doTag() i mapiranjemping u TLD-u.
  • 📄 Sučelje oznake: Biblioteka oznaka Descriptili (TLD) mapira imena oznaka na njihove klase rukovatelja za JSP kontejner.

JSTL - JSP standardna biblioteka oznaka

U čemu je JSTL Java?

JSTL zalaže za Java standardne knjižnice oznaka stranica poslužitelja, a to je zbirka prilagođenih biblioteka JSP oznaka koje pružaju uobičajenu funkcionalnost web-razvoja. JSTL je standardna biblioteka oznaka JSP-a.

Prednosti JSTL-a

Ispod su prednosti JSTL-a:

  1. Standardna oznaka: Pruža bogat sloj prenosive funkcionalnosti JSP stranica. Programeru je lako razumjeti kôd.
  2. Code Uredan i čist: Dok skripte zbunjuju programere, upotreba JSTL-a čini kod urednim i čistim.
  3. Automatski JavabeansInterospection podrška: Ima prednost JSTL-a nad JSP skriptama. Ručke jezika JSTL Expression JavaBean kod vrlo jednostavno. Ne trebamo spuštati objekte, koji su dohvaćeni kao atributi s opsegom. Korištenje koda JSP skriptleta bit će komplicirano, a JSTL je tu svrhu pojednostavio.
  4. Lakše za čitanje ljudima: JSTL se temelji na XML, koji je vrlo sličan HTML-u. Stoga je programerima lako razumjeti.
  5. Lakše za razumijevanje računalima: Alati kao što su Dreamweaver i naslovnica generiraju sve više i više HTML koda. HTML alati odlično rade formatiranje HTML koda. HTML kod je pomiješan sa kodom skripte. Budući da se JSTL izražava kao oznake usklađene s XML-om, generiranje HTML-a lako je analizirati JSTL kod unutar dokumenta.

JSTL oznake

Osnovne oznake su najčešće korištene oznake u JSP-u. Oni pružaju podršku za

  • ponavljanje
  • Uvjetna logika
  • Uhvati iznimku
  • url naprijed
  • Preusmjeravanje itd.

Da bismo koristili osnovne oznake, prvo moramo definirati biblioteku oznaka, a ispod je sintaksa za uključivanje biblioteke oznaka.

sintaksa:

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

Ovdje,

  • prefiks se može koristiti za definiranje svih osnovnih oznaka i
  • uri je biblioteka tagliba iz koje se uvozi

Pogledajmo neke od osnovnih oznaka u detalje,

1. Van

  • Rezultat izraza prikazuje se u izlaznoj oznaci
  • Može izravno izbjeći XML oznake. Stoga se ne vrednuju kao stvarne oznake

Sintaksa:

<c:out value="" default="" escapeXML="">
  • Ovdje vrijednost predstavlja informaciju za izlaz i obavezna je
  • Zadano je neuspjeh u ispisivanju informacija i nije obavezno
  • escapeXML – Istina je ako izbjegava XML znakove.

Primjer:

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>

Objašnjenje koda:

Code Redak 3: Ovaj prefiks oznake je potreban za sve oznake, a dodani prefiks je 'c'. Stoga se može koristiti kao prefiks za sve coretagove.

Code Redak 12: Ovdje koristimo coretag out s prefiksom "c" i ovaj out će ispisati vrijednost u oznaci izraza. Stoga će izlaz biti ime

Kada izvršite gornji kod, dobit ćete sljedeći izlaz:

JSTL osnovne oznake - vani

Izlaz:

  • Dobivamo vrijednost kao naziv iz osnovne oznake "out" koja će se ispisati u izlaznom toku.

2. Uhvatite

  • Hvata svaku iznimku koja se može izbaciti koja se dogodi u tijelu i prikazuje kao izlaz.
  • Koristi se za obradu grešaka i njihovo otkrivanje.

Sintaksa:

<c:catchvar="">

Ovdje var predstavlja naziv varijable, koja će sadržavati iznimku koja se može izbaciti.

Primjer:

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

Objašnjenje koda:

Code Redak 3: Ovaj prefiks oznake potreban je za sve oznake, a dodani prefiks je 'c', stoga se može koristiti kao prefiks za sve osnovne oznake

Code Redak 11-13: Coretag catch koristi se za hvatanje iznimke i ispis iznimke. Ovdje se iznimka pokreće kada je 10/0 i ta iznimka ima naziv "guruException".

Code Redak 14: Ispisujemo "guruException".

Kada izvršite kod, dobit ćete sljedeći izlaz:

JSTL osnovne oznake - Catch

Izlaz:

  • Dobivamo aritmetičku iznimku kao /by zero, i ona se ispisuje u izlazu pomoću varijable “guruException”

3. Uvoz

  • Možemo uvesti sadržaj druge datoteke u JSP stranicu kao što smo to učinili JSP uključuje akciju.
  • Ovdje možemo uključiti i URL i sadržaj će biti prikazan na toj stranici.

Sintaksa:

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

Ovdje je var naziv varijable koji je identifikator koji će sadržavati naziv/uri datoteke. uri je relativno ime datoteke ili uriname.

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>

Objašnjenje koda:

Coretag_jsp31.jsp

Code Redak 3: Ovaj prefiks oznake potreban je za sve oznake, a dodani prefiks je 'c', stoga se može koristiti kao prefiks za sve osnovne oznake

Code Redak 11-12: Ovdje uvozimo datoteku coretag_jsp32.jsp u ovu datoteku pomoću oznake uvoza

Code Linija 13: Ovdje ispisujemo datoteku coretag_jsp32.jsp koristeći out tag.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz.

JSTL osnovne oznake - uvoz

Izlaz:

  • Coretag_jsp32 se ispisuje u izlazu jer je ova datoteka uvezena u coretag_jsp31.jsp.

4. zaSvakog

  • Koristi se za ponavljanje broja elemenata u nizu izjava.
  • Isto je kao a Java petlja

Sintaksa:

<c:forEach var="" begin=""  end="">
  • Ovdje var predstavlja naziv varijable koji će sadržavati naziv brojača
  • Početak predstavlja početnu vrijednost brojača
  • Kraj će predstavljati njegovu krajnju vrijednost

Primjer:

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

Objašnjenje koda:

Code Redak 3: Ovaj prefiks oznake potreban je za sve oznake, a dodani prefiks je 'c', stoga se može koristiti kao prefiks za sve osnovne oznake

Code Redak 11-13: Ovdje koristimo petlju "forEach" gdje je naziv varijable "gurucount", koja je počela brojati kao 5, a završila kao 10. Ispisujemo varijablu gurucount koja ima brojeve počevši od 5 do 10.

Kada izvršite kod, dobit ćete sljedeći izlaz

JSTL osnovne oznake - forEach

Izlaz:

  • Rezultat koji dobivamo počinje od 5 do 10.

5. Ako

  • Koristi se za Ispitivanje uvjeti.
  • Ako se oznaka koristi za testiranje uvjeta je li na temelju toga istinit ili ne, blok koda bi se izvršio.

Sintaksa:

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

Ovdje ako je uvjet istinit tada se izvršava niz naredbi.

Primjer:

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

Objašnjenje koda:

Code Redak 3: Ovaj prefiks oznake potreban je za sve oznake, a dodani prefiks je 'c', stoga se može koristiti kao prefiks za sve osnovne oznake

Code Redak 11: Ovdje postavljamo varijablu pod nazivom count na 100

Code Redak 12-14: Ovdje koristimo "if uvjet" gdje provjeravamo je li zbroj jednak 100. Jednako je 100, a zatim dobivamo izlaz kao "Broj je 100."

Kada izvršite gornji kod, dobit ćete sljedeći izlaz

JSTL osnovne oznake - Ako

Izlaz:

  • Kako je uvjet "ako" istinit, dobivamo izlaz kao "Broj je 100".

6. preusmjeriti

  • Koristi se za preusmjeravanje trenutne stranice na drugu URL pružanjem relativne URL ove oznake.
  • Podržava kontekstno relativan URLs

Sintaksa:

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

Ovdje je url relativni url na koji se mora preusmjeriti i naziv konteksta lokalne web aplikacije.

Primjer:

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

Objašnjenje koda:

Code Redak 3: Ovaj prefiks oznake potreban je za sve oznake, a dodani prefiks je 'c', stoga se može koristiti kao prefiks za sve osnovne oznake

Code Redak 11: Ovdje koristimo “redirect tag”, gdje specificiramo urlname, a kada kliknemo na tu stranicu preusmjerava se na stranicu koja je dana za preusmjeravanje.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz;

JSTL osnovne oznake - preusmjeravanje

Izlaz:

  • Dobivamo izlaz guru99.com url koji je preusmjeren putem coretag_jsp6.jsp

JSTL prilagođene oznake

  • To je korisnički definiran JSP jezični element.
  • Kada se JSP prevede u servlet, prilagođena oznaka se pretvara u klasu koja poduzima radnje na objektu i poziva se kao rukovatelj oznakama.
  • Te radnje kada se servlet izvršava poziva web spremnik.
  • Da bismo stvorili korisnički definiranu prilagođenu oznaku, moramo izraditi rukovatelj oznakama koji će proširivati ​​SimpleTagSupport i morati nadjačati metodu doTag().
  • Moramo stvoriti TLD gdje trebamo mapirati datoteku klase u TLD-u.

Prednosti prilagođenih oznaka u JSP-u

Evo prednosti prilagođenih oznaka u JSP-u:

  • Prijenosni: Radnja opisana u biblioteci oznaka mora biti upotrebljiva u bilo kojem JSP spremniku.
  • Jednostavno: Nesofisticirani korisnici moraju biti u stanju razumjeti i koristiti ovaj mehanizam. Dobavljačima JSP funkcionalnosti mora biti lako učiniti je dostupnom korisnicima kao radnju.
  • Izražajno: Mehanizam mora podržavati širok raspon radnji, uključujući ugniježđene radnje, elemente skriptiranja unutar tijela radnji, stvaranje, korištenje i ažuriranje varijabli skriptiranja.
  • Može se koristiti iz različitih skriptnih jezika: Iako JSP specifikacija trenutno samo definira semantiku za skripte u Java programskog jezika, želimo ostaviti otvorenu mogućnost drugih skriptnih jezika.
  • Izgrađeno na postojećim konceptima i strojevima: Ne želimo ponovno izmisliti ono što postoji drugdje. Također, želimo izbjeći buduće sukobe kad god ih možemo predvidjeti

Sintaksa:

Zamislite da stvaramo testGuru oznaku i možemo koristiti klasu taghandlertestTag koja će nadjačati metodu doTag().

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

Također, morat ćemo mapirati ovu testTag klasu u TLD (Tag Library Descriptili) jer će JSP kontejner automatski kreirati mapuping između datoteke klase i uri-ja koji je spomenut u TLD datoteci.

JSP Tag sučelje

  • Ova će klasa morati proširiti klasu SimpleTagSupport.
  • Ova će klasa morati nadjačati metodu doTag() koja je dio klase SimpleTagSupport (nadjačavanje je metoda koja je naslijeđena od nadređene klase).
  • Ovo sučelje je podsučelje JSPTag sučelja.
  • Omogućuje metode za izvođenje na početku i kraju oznake.
  • Također, moramo preslikati ovu klasu u TLD tj. deskriptor biblioteke oznaka

Razmatramo u primjeru u nastavku

Metoda sučelja oznaka

  • doTag() je metoda koju trebamo nadjačati koja će imati sadržaj za oznaku.
  • Uzima trenutni JSP kontekst koristeći getJSPContext()

Primjer:

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

}

Objašnjenje koda:

guruTag.java(TagHandler)

Code Redak 6:klasa guruTag proširuje klasu SimpleTagSupport koja je prisutna u javax.servlet.JSP jar

Code Redak 7: Ovdje nadjačavamo doTag() metodu koja izbacuje JspException i IOException.

Code Redak 9-10: U ovoj metodi, kod će biti ugrađen u prilagođenu oznaku koja će biti pozvana. Uzimamo objekt Jsp-aWriter, i to će ispisati „Guru Dan."

Custom.tld

Code Redak 6: Ovdje je naziv prilagođene oznake "guruTag."

Code Redak 7:Klasa oznake je taghandlerclass, tj. guruTag.java. Potrebna je cijela staza datoteke rukovatelja koja uključuje stazu direktorija lokacije datoteke.

Customtag_jsp1.jsp

Code linija 3: Ovaj prefiks oznake je potreban za sve oznake, a dodani prefiks je 'ex', stoga se može koristiti kao prefiks za sve osnovne oznake, a uri je custom.tld koji preslikava rukovatelja oznakama.

Code Redak 11: Ovdje definiramo prilagođenu oznaku "guruTag", koja će pozvati metodu doTag() klase rukovatelja i kod unutar nje će se izvršiti.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz

JSP Tag sučelje

Izlaz:

  • Izlaz dobivamo kao "GuruOznaka” iz guruTag.java, tj. TagHandler, koji nadjačava metodu doTag() i ispisuje “Guru Oznaka” kao izlaz.

Pitanja i odgovori

JSTL ima pet skupina oznaka: jezgra, formatiranje (I18N), SQL, XML i funkcije. Jezgrene oznake obrađuju iteraciju i logiku, dok oznake formatiranja, SQL, XML i funkcija pokrivaju lokalizaciju, baze podataka, XML i uslužne programe za stringove.

JSTL koristi čitljive XML-slične oznake za logiku, dok skriptleti ugrađuju sirove podatke. Java u JSP-u. JSTL stvara čišće, održivije stranice i izbjegava miješanje Java kod s HTML oznakama.

TLD je XML datoteka koja mapira nazive prilagođenih oznaka na njihove klase rukovatelja. JSP kontejner čita TLD kako bi znao koji Java klasa za izvršavanje za svaku prilagođenu oznaku.

AI asistenti mogu generirati JSTL oznake, pisati prilagođene rukovatelje oznakama, pretvarati skriptlete u JSTL i objašnjavati jezik izraza. Ubrzavaju JSP razvoj dok programeri pregledavaju generirani kod.

Da. AI alati mogu analizirati skriptlet kod i prepisati ga koristeći ekvivalentne JSTL osnovne oznake i jezik izraza, helping modernizirati naslijeđene JSP stranice uz očuvanje funkcionalnosti.

Sažmite ovu objavu uz: