JSTL (JSP Standard Tag Library)

Tässä JSTL-opetusohjelmassa näemme, kuinka eri JSTL-tunnisteiden käyttö helpottaa JSP-koodausta.

Mitä JSTL sisältää Java?

JSTL tarkoittaa Java palvelinsivujen standarditunnistekirjasto, ja se on kokoelma mukautettuja JSP-tunnistekirjastoja, jotka tarjoavat yhteisiä verkkokehitystoimintoja. JSTL on JSP:n vakiotunnistekirjasto.

JSTL:n edut

Alla on JSTL:n edut:

  1. Vakiotunniste: Se tarjoaa runsaasti JSP-sivujen kannettavia toimintoja. Kehittäjän on helppo ymmärtää koodi.
  2. Koodi siisti ja puhdas: Koska kirjoitukset hämmentävät kehittäjää, JSTL:n käyttö tekee koodista siistin ja puhtaan.
  3. automaattisesti JavabeansInterospection-tuki: Sillä on JSTL:n etu JSP-komentosarjoihin verrattuna. JSTL-lausekekielen kahvat JavaPapukoodi erittäin helposti. Meidän ei tarvitse laskea objekteja, jotka on haettu laajuisina määritteinä. JSP-komentosarjakoodin käyttäminen on monimutkaista, ja JSTL on yksinkertaistanut tätä tarkoitusta.
  4. Ihmisten on helpompi lukea: JSTL perustuu XML, joka on hyvin samanlainen kuin HTML. Siksi kehittäjien on helppo ymmärtää.
  5. Tietokoneiden on helpompi ymmärtää: Työkalut, kuten Dreamweaver ja etusivu tuottavat yhä enemmän HTML-koodia. HTML-työkalut tekevät hienoa työtä HTML-koodin muotoilussa. HTML-koodi sekoitetaan scriplet-koodin kanssa. Koska JSTL ilmaistaan ​​XML-yhteensopivina tunnisteina, HTML-luonnon on helppo jäsentää asiakirjan JSTL-koodi.

JSTL-tunnisteet

Ydintunnisteet ovat JSP:n yleisimmin käytettyjä tunnisteita. Ne tarjoavat tukea

  • iteraatio
  • Ehdollinen logiikka
  • Catch poikkeus
  • url eteenpäin
  • Uudelleenohjaus jne.

Jotta voisimme käyttää ydintunnisteita, meidän on ensin määritettävä tunnistekirjasto, ja alla on syntaksi tagikirjaston sisällyttämiseksi.

Syntaksi :

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

Täällä

  • etuliitettä voidaan käyttää määrittelemään kaikki ydintunnisteet ja
  • uri on taglib-kirjasto, josta se tuodaan

Katsotaanpa joitain ydintunnisteita yksityiskohtaisesti,

1. Ulos

  • Lausekkeen tulos näkyy out-tunnisteessa
  • Se voi suoraan paeta XML-tunnisteita. Siksi niitä ei arvioida todellisiksi tunnisteiksi

Syntaksi:

<c:out value="" default="" escapeXML="">
  • Tässä arvo edustaa tietoa ulostulolle, ja se on pakollinen
  • Oletusarvo on epäonnistuminen tietojen tulostamisessa, eikä se ole pakollista
  • escapeXML – On totta, jos se välttää XML-merkkejä.

Esimerkiksi:

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>

Koodin selitys:

Koodirivi 3: Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on "c". Siksi sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä.

Koodirivi 12: Tässä käytämme coretag out -etuliitettä "c", ja tämä tulos tulostaa lauseketunnisteen arvon. Tästä syystä tulos on nimi

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:

JSTL Core Tags - Out

lähtö:

  • Saamme arvon nimenä ydintunnisteesta "out", joka tulostuu tulosvirtaan.

2. Saalis

  • Se kiinnittää kaikki heitettävissä olevat poikkeukset, jotka tapahtuvat kehossa ja näkyy ulostulona.
  • Sitä käytetään virheiden käsittelyyn ja havaitsemiseen.

Syntaksi:

<c:catchvar="">

Tässä var edustaa muuttujan nimeä, joka sisältää heitettävän poikkeuksen.

Esimerkiksi:

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

Koodin selitys:

Koodirivi 3: Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on "c", joten sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä

Koodirivit 11-13: Ydintunnisteen sieppausta käytetään poikkeuksen saamiseen kiinni ja poikkeuksen tulostamiseen. Tässä poikkeus nostetaan esiin, kun 10/0 ja poikkeuksella on nimi "guruException".

Koodirivi 14: Tulostamme "guruExceptionin".

Kun suoritat koodin, saat seuraavan tulosteen:

JSTL-ydintunnisteet - Catch

lähtö:

  • Saamme aritmeettisen poikkeuksen muodossa /by nolla, ja se tulostetaan tulosteessa muuttujalla "guruException"

3. Tuonti

  • Voimme tuoda toisen tiedoston sisällön JSP-sivulle, kuten teimme JSP sisältää toiminnan.
  • Täällä voimme myös sisällyttää URL-osoitteen ja sisältö näytetään kyseisellä sivulla.

Syntaksi:

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

Tässä var on muuttujan nimi, joka on tunniste, joka sisältää tiedostonimen/urin. uri on suhteellinen tiedostonimi tai urinimi.

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>

Koodin selitys:

Coretag_jsp31.jsp

Koodirivi 3: Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on "c", joten sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä

Koodirivit 11-12: Tässä tuomme coretag_jsp32.jsp-tiedoston tähän tiedostoon tuontitunnisteen avulla

Koodirivi13: Tässä tulostetaan tiedosto coretag_jsp32.jsp käyttämällä out-tunnistetta.

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen.

JSTL-ydintunnisteet - tuonti

lähtö:

  • Coretag_jsp32 tulostetaan tulosteessa, koska tämä tiedosto tuotiin tiedostoon coretag_jsp31.jsp.

4. jokaiselle

  • Sitä käytetään lausekkeiden sarjan elementtien lukumäärän iterointiin.
  • Se on sama kuin a Java forloop.

Syntaksi:

<c:forEach var="" begin=""  end="">
  • Tässä var edustaa muuttujan nimeä, joka sisältää laskurin nimen
  • Begin edustaa laskurin aloitusarvoa
  • End edustaa sen loppuarvoa

Esimerkiksi:

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

Koodin selitys:

Koodirivi 3: Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on "c", joten sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä

Koodirivit 11-13: Tässä käytetään "forEach" -silmukkaa, jossa muuttujan nimi on "gurucount", joka on alkanut laskea 5:nä ja lopetusmääränä 10. Tulostamme muuttujan gurucount, jonka numerot alkavat 5:stä 10:een.

Kun suoritat koodin, saat seuraavan tulosteen

JSTL-ydintunnisteet - forEach

lähtö:

  • Saamamme tulos alkaa 5 - 10.

5. Jos

  • Sitä käytetään Testaus olosuhteissa.
  • Jos tunnistetta käytetään testaamaan ehtoa, onko se tosi vai ei tämän perusteella, koodilohko suoritettaisiin.

Syntaksi:

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

Tässä, jos ehto on tosi, suoritetaan joukko lauseita.

Esimerkiksi:

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

Koodin selitys:

Koodirivi 3: Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on "c", joten sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä

Koodirivi 11: Tässä asetamme muuttujan nimeltä count arvoon 100

Koodirivit 12-14: Tässä käytämme "jos ehtoa", jossa tarkistamme, onko luku yhtä suuri kuin 100. Se on yhtä suuri kuin 100, jolloin saamme ulostulon muodossa "Laskuri on 100".

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen

JSTL-ydintunnisteet – jos

lähtö:

  • Koska "jos"-ehto on tosi, saamme lähdön muodossa "Laskuri on 100".

6. uudelleenohjaus

  • Sitä käytetään nykyisen sivun uudelleenohjaamiseen toiseen URL-osoitteeseen antamalla tämän tunnisteen suhteellinen URL-osoite.
  • Se tukee kontekstisuhteellisia URL-osoitteita

Syntaksi:

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

Tässä url on suhteellinen URL-osoite, johon se on uudelleenohjattava, ja paikallisen verkkosovelluksen kontekstinimi.

Esimerkiksi:

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

Koodin selitys:

Koodirivi 3: Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on "c", joten sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä

Koodirivi 11: Tässä käytämme "uudelleenohjaustunnistetta", jossa määritämme url-nimen, ja kun napsautamme sitä sivua, se ohjaa uudelleenohjaukselle annetulle sivustolle.

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen;

JSTL-ydintunnisteet - Uudelleenohjaus

lähtö:

  • Saamme tulosteen guru99.com-URL-osoitteen, jonka coretag_jsp6.jsp uudelleenohjaa

JSTL mukautetut tunnisteet

  • Se on käyttäjän määrittelemä JSP kielielementti.
  • Kun JSP käännetään servletiksi, mukautettu tagi muunnetaan luokaksi, joka suorittaa toiminnon objektille ja jota kutsutaan tunnisteiden käsittelijäksi.
  • Verkkosäilö kutsuu ne toiminnot, kun servletti suoritetaan.
  • Luodaksemme käyttäjän määrittämän mukautetun tunnisteen meidän on luotava tagien käsittelijä, joka laajentaa SimpleTagSupportia ja jonka on ohitettava doTag()-metodi.
  • Meidän on luotava TLD, jossa meidän on kartoitettava luokkatiedosto TLD:ssä.

Mukautettujen tunnisteiden edut JSP:ssä

Tässä ovat JSP:n mukautettujen tunnisteiden edut:

  • Kannettava: Tunnistekirjastossa kuvatun toiminnon on oltava käytettävissä missä tahansa JSP-säilössä.
  • Simple: Kokemattomien käyttäjien on voitava ymmärtää ja käyttää tätä mekanismia. JSP-toimintojen myyjien on voitava helposti saattaa se käyttäjien saataville toimina.
  • Ilmeikäs: Mekanismin on tuettava monenlaisia ​​toimintoja, mukaan lukien sisäkkäiset toiminnot, komentosarjaelementit toimintokappaleiden sisällä, komentosarjamuuttujien luominen, käyttö ja päivittäminen.
  • Käytettävissä eri skriptikielillä: Vaikka JSP-määritykset määrittelevät tällä hetkellä vain skriptien semantiikan Java ohjelmointikieltä, haluamme jättää avoimeksi mahdollisuuden muihin komentosarjakieliin.
  • Rakennettu olemassa oleviin konsepteihin ja koneisiin: Emme halua keksiä uudelleen sitä, mikä muualla on olemassa. Haluamme myös välttää tulevia konflikteja aina, kun voimme ennakoida niitä

Syntaksi:

Harkitse, että luomme testGuru-tunnisteen ja voimme käyttää taghandlertestTag-luokkaa, joka ohittaa doTag()-menetelmän.

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

Meidän on myös kartoitettava tämä testTag-luokka TLD:ssä (Tag Library Descripttai) JSP-säilönä luo automaattisesti yhdistämisen luokkatiedoston ja TLD-tiedostossa mainitun uri:n välille.

JSP-tunnisteen käyttöliittymä

  • Tämän luokan on laajennettava SimpleTagSupport-luokkaa.
  • Tämän luokan on ohitettava doTag()-metodi, joka on osa SimpleTagSupport-luokkaa (ohitus on menetelmä, joka on peritty yläluokasta).
  • Tämä käyttöliittymä on JSPTag-liittymän aliliitäntä.
  • Se tarjoaa menetelmiä, jotka suoritetaan tunnisteen alussa ja lopussa.
  • Lisäksi meidän on kartoitettava tämä luokka TLD eli Tag Library -kuvaajassa

Harkitsemme alla olevassa esimerkissä

Tag Interface -menetelmä

  • doTag() on menetelmä, joka meidän on ohitettava ja jolla on tagin sisältö.
  • Se ottaa nykyisen JSP-kontekstin käyttämällä getJSPContext()

Esimerkiksi:

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

}

Koodin selitys:

guruTag.java(TagHandler)

Koodirivi 6:guruTag-luokka laajentaa SimpleTagSupport-luokkaa, joka on javax.servlet.JSP-jarissa

Koodirivi 7: Tässä ohitamme doTag()-menetelmän, joka heittää JspExceptionin ja IOExceptionin.

Koodirivit 9-10: Tässä menetelmässä koodi upotetaan mukautettuun tagiin, jota kutsutaan. Otamme JspWriterin objektin, joka tulostaa "Guru Tagin".

Custom.tld

Koodirivi 6: Tässä mukautetun tagin nimi on "guruTag".

Koodirivi 7:Tunnisteluokka on taghandlerclass,eli guruTag.java. Se vie käsittelijätiedoston koko polun, joka sisältää tiedoston sijainnin hakemistopolun.

Customtag_jsp1.jsp

Koodirivi 3:Tämä taglib-etuliite vaaditaan kaikille tunnisteille ja lisätty etuliite on 'ex', joten sitä voidaan käyttää kaikkien ydintunnisteiden etuliitteenä ja uri on custom.tld, joka yhdistää tunnisteen käsittelijän.

Koodirivi 11: Tässä määrittelemme mukautetun tunnisteen "guruTag", joka kutsuu käsittelijän luokan doTag()-metodia ja siinä oleva koodi suoritetaan.

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen

JSP-tunnisteen käyttöliittymä

lähtö:

  • Saamme tulosteen nimellä “GuruTag” guruTag.javasta eli TagHandlerista, joka ohittaa doTag()-metodin ja joka tulostaa tulosteena “Guru Tag”.

Yhteenveto

  • Tässä osiossa opimme JSP-standardin tunnistekirjastosta, jossa teimme ydintunnisteita ja mukautettuja tunnisteita.
  • Ydintunnisteet sisältävät if, redirect, import, catch tagit, jotka olivat tunnisteita, joita käytettiin JSP:n perustarkoituksiin.
  • Teimme myös mukautettuja tunnisteita, joissa voimme määritellä tunnisteet ja käyttää niitä JSP:ssä