JSTL (JSP standardna biblioteka oznaka)

U ovom JSTL vodiču vidjet ćemo kako će korištenje različitih JSTL oznaka olakšati JSP kodiranje.

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. Kod 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:

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

Redak koda 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:

Redak koda 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

Redak koda 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".

Redak koda 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 također možemo uključiti 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

Redak koda 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

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

Kodna 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:

Redak koda 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

Redak koda 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:

Redak koda 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

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

Redak koda 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 drugi URL pružanjem relativnog URL-a ove oznake.
  • Podržava kontekstne relativne URL-ove

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:

Redak koda 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

Redak koda 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:

Uzmite u obzir da stvaramo oznaku testGuru 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) budući da će JSP spremnik automatski stvoriti mapiranje 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)

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

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

Redak koda 9-10: U ovoj metodi, kod će biti ugrađen u prilagođenu oznaku koja će biti pozvana. Uzimamo objekt JspWritera i on će ispisati "Guru Tag."

Custom.tld

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

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

Customtag_jsp1.jsp

Kodna 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.

Redak koda 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:

  • Dobivamo izlaz kao “GuruTag” iz guruTag.java tj. TagHandler, koji nadjačava metodu doTag() i koji ispisuje “Guru Tag” kao izlaz.

rezime

  • U ovom odjeljku naučili smo o JSP standardnoj biblioteci oznaka u kojoj smo izradili osnovne oznake i prilagođene oznake.
  • Osnovne oznake uključuju oznake for, if, redirect, import, catch koje su bile oznake korištene u osnovne svrhe u JSP-u.
  • Također, napravili smo prilagođene oznake u kojima možemo definirati oznake i koristiti ih u JSP-u