Zelfstudie voor JSTL (JSP Standard Tag Library): Core & Voorbeelden van aangepaste tags

Inhoudsopgave:

Anonim

JSTL is een standaard tagbibliotheek van de JSP. Hier zullen we zien hoe het gebruik van verschillende JSTL-tags JSP-codering gemakkelijker maakt.

In deze tutorial leer je-

  • Wat is JSTL
  • JSTL Core
  • Aangepaste JSP-tags

Wat is JSTL?

JSTL staat voor de standaard tagbibliotheek van Java-serverpagina's en het is een verzameling aangepaste JSP-tagbibliotheken die algemene webontwikkelingsfunctionaliteit bieden.

Voordelen van JSTL

  1. Standaardtag : het biedt een rijke laag van de draagbare functionaliteit van JSP-pagina's. Het is gemakkelijk voor een ontwikkelaar om de code te begrijpen.
  2. Code netjes en schoon : aangezien scriplets de ontwikkelaar verwarren, maakt het gebruik van JSTL de code netjes en schoon.
  3. Automatische Javabeans Interospection-ondersteuning : het heeft een voordeel van JSTL ten opzichte van JSP-scriptlets. JSTL Expression-taal verwerkt JavaBean-code heel gemakkelijk. We hoeven de objecten niet te downcasten, die zijn opgehaald als scoped-attributen. Het gebruik van JSP-scriptletcode zal ingewikkeld zijn, en JSTL heeft dat doel vereenvoudigd.
  4. Gemakkelijker voor mensen om te lezen : JSTL is gebaseerd op XML, dat sterk lijkt op HTML. Daarom is het voor de ontwikkelaars gemakkelijk te begrijpen.
  5. Gemakkelijker voor computers om te begrijpen : tools zoals Dreamweaver en voorpagina genereren steeds meer HTML-code. HTML-tools zijn uitstekend in het opmaken van HTML-code. De HTML-code wordt gemengd met de scriplet-code. Omdat JSTL wordt uitgedrukt als XML-compatibele tags, is het gemakkelijk voor het genereren van HTML om de JSTL-code in het document te ontleden.

JSTL Core

De kerntags zijn de meest gebruikte tags in JSP. Ze bieden ondersteuning voor

  • Iteratie
  • Voorwaardelijke logica
  • Uitzondering vangen
  • url doorsturen
  • Omleiden, etc.

Om kerntags te gebruiken, moeten we eerst de tagbibliotheek definiëren en hieronder staat de syntaxis om een ​​tagbibliotheek op te nemen.

Syntaxis:

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

Hier,

  • prefix kan worden gebruikt om alle kerntags te definiëren en
  • uri is de bibliotheek van taglib waaruit het is geïmporteerd

Laten we enkele van de kerntags in detail bekijken,

1. Uit:

  • Het resultaat van de expressie wordt weergegeven in de out-tag
  • Het kan direct ontsnappen aan de XML-tags. Daarom worden ze niet geëvalueerd als daadwerkelijke tags

Syntaxis:

  • Hier vertegenwoordigt waarde informatie voor de uitvoer, en het is verplicht
  • Standaard is het niet mogelijk om informatie uit te voeren, en het is niet verplicht
  • escapeXML - Het is waar als het ontsnapt aan XML-tekens.

Voorbeeld:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Core Tag JSP1 

Uitleg van de code:

Coderegel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c'. Daarom kan het worden gebruikt als voorvoegsel voor alle coretags.

Coderegel 12: hier gebruiken we coretag out met het voorvoegsel "c" en dit zal de waarde in de expressie-tag afdrukken. Daarom zal de uitvoer de naam zijn

Als je de bovenstaande code uitvoert, krijg je de volgende output:

Uitgang:

  • We krijgen de waarde als een naam van de kerntag "out" die in de outputstroom zal worden afgedrukt.

2. Vangst

  • Het vangt elke throwable-uitzondering op die in de body voorkomt en wordt weergegeven als uitvoer.
  • Het wordt gebruikt voor het afhandelen van fouten en om ze op te vangen.

Syntaxis:

Hier vertegenwoordigt var de naam van de variabele, die een throwable-uitzondering zal bevatten.

Voorbeeld:

<% @ 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"%> Core Tag JSP2 <% int num = 10/0; ​De uitzondering is: $ {guruException}

Uitleg van de code:

Coderegel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c' en kan daarom worden gebruikt als een voorvoegsel voor alle kerntags

Coderegel 11-13: Coretag catch wordt gebruikt om de uitzondering op te vangen en de uitzondering af te drukken. Hier wordt de uitzondering opgeworpen als 10/0 en die uitzondering heeft de naam "guruException".

Coderegel 14: We drukken de "guruException" af.

Als je de code uitvoert, krijg je de volgende output:

Uitgang:

  • We krijgen rekenkundige uitzondering als / door nul, en deze wordt in de uitvoer afgedrukt met de variabele "guruException"

3. Importeren

  • We kunnen een andere bestandsinhoud importeren in een JSP-pagina zoals we deden in JSP include action.
  • Hier kunnen we ook de URL opnemen en de inhoud wordt op die pagina weergegeven.

Syntaxis:

Hier is var een variabelenaam die een identifier is, die de bestandsnaam / uri zal bevatten.

uri is een relatieve bestandsnaam of urinaam.

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"%> Core Tag JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Voeg hier titel in  Het bestand wordt weergegeven na het importeren 

Uitleg van de code:

Coretag_jsp31.jsp

Coderegel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c' en kan daarom worden gebruikt als een voorvoegsel voor alle kerntags

Coderegel 11-12: hier importeren we het coretag_jsp32.jsp-bestand in dit bestand met behulp van de import-tag

Code Line13: Hier drukken we het bestand coretag_jsp32.jsp af met behulp van de tag out.

Als je de bovenstaande code uitvoert, krijg je de volgende output.

Uitgang:

  • Coretag_jsp32 wordt afgedrukt in de uitvoer aangezien dit bestand werd geïmporteerd in coretag_jsp31.jsp.

4. voor elk

  • Het wordt gebruikt om het aantal elementen in reeksen instructies te herhalen.
  • Het is hetzelfde als een Java forloop.

Syntaxis:

  • Hier staat var voor de variabelenaam die de tellernaam zal bevatten
  • Begin vertegenwoordigt de beginwaarde van de teller
  • Einde vertegenwoordigt de eindwaarde

Voorbeeld:

<% @ 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"%> Core Tag JSP4 

Uitleg van de code:

Coderegel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c' en kan daarom worden gebruikt als een voorvoegsel voor alle kerntags

Coderegel 11-13: Hier gebruiken we de "forEach" -lus waar de variabelenaam "gurucount" is, die begonnen is met tellen als 5 en eindgeteld als 10. We drukken de variabele gurucount af met getallen die beginnen van 5 tot 10.

Als je de code uitvoert, krijg je de volgende output

Uitgang:

  • De output die we krijgen, begint van 5 tot 10.

5. Als

  • Het wordt gebruikt voor testomstandigheden.
  • Als de tag wordt gebruikt om op basis hiervan een voorwaarde te testen of deze waar is of niet, wordt het codeblok uitgevoerd.

Syntaxis:

<% @ 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"%> Core Tag JSP5 

Uitleg van de code:

Coderegel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c' en kan daarom worden gebruikt als een voorvoegsel voor alle kerntags

Coderegel 11: hier stellen we de variabele met de naam count in op 100

Coderegel 12-14: Hier gebruiken we "als voorwaarde" waarbij we controleren of de telling gelijk is aan 100. Het is gelijk aan 100, dan krijgen we de uitvoer als "De telling is 100."

Als je de bovenstaande code uitvoert, krijg je de volgende output

Uitgang:

  • Als de "if" -voorwaarde waar is, krijgen we de uitvoer als "The count is 100".

6. omleiding:

  • Het wordt gebruikt om de huidige pagina om te leiden naar een andere URL door de relatieve URL van deze tag op te geven.
  • Het ondersteunt context-relatieve URL's

Syntaxis:

Hier is de url de relatieve url waarnaar het moet worden omgeleid en de contextnaam van de lokale webapplicatie.

Voorbeeld:

<% @ 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"%> Core Tag JSP6 

Uitleg van de code:

Coderegel 3: Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'c' en kan daarom worden gebruikt als een voorvoegsel voor alle kerntags

Coderegel 11: Hier gebruiken we de "redirect-tag", waar we de url-naam specificeren, en wanneer we op die pagina klikken, wordt doorverwezen naar de site die is opgegeven voor omleiding.

Als je de bovenstaande code uitvoert, krijg je de volgende output;

Uitgang:

  • We krijgen de output guru99.com url die wordt omgeleid door coretag_jsp6.jsp

Aangepaste JSP-tags

  • Het is een door de gebruiker gedefinieerd JSP-taalelement.
  • Wanneer JSP wordt vertaald in een servlet, wordt een aangepaste tag geconverteerd naar een klasse die actie onderneemt op een object en wordt aangeroepen als taghandler.
  • Die acties wanneer de servlet wordt uitgevoerd, worden aangeroepen door de webcontainer.
  • Om de door de gebruiker gedefinieerde aangepaste tag te maken, moeten we de tag-handler maken die de SimpleTagSupport zal uitbreiden en de methode doTag () moet overschrijven.
  • We moeten een TLD maken waar we het klassenbestand in TLD moeten toewijzen.

Voordelen van aangepaste tags in JSP:

  • Draagbaar - Een actie die wordt beschreven in een tagbibliotheek, moet bruikbaar zijn in elke JSP-container.
  • Simpel - Ongesofisticeerde gebruikers moeten dit mechanisme kunnen begrijpen en gebruiken. Verkopers van JSP-functionaliteit moeten het gemakkelijk vinden om het beschikbaar te stellen als een broek.
  • Expressief - Het mechanisme moet een breed scala aan acties ondersteunen, inclusief geneste acties, scripting-elementen binnen actielichamen, creatie, gebruik en update van scriptvariabelen.
  • Bruikbaar vanuit verschillende scripttalen - Hoewel de JSP-specificatie momenteel alleen de semantiek definieert voor scripts in de programmeertaal Java, willen we de mogelijkheid van andere scripttalen open laten.
  • Gebouwd op bestaande concepten en machines - We willen niet opnieuw uitvinden wat elders bestaat. We willen ook toekomstige conflicten vermijden wanneer we ze kunnen voorspellen

Syntaxis:

Overweeg dat we een testGuru-tag maken en dat we de klasseetaghandlertestTag kunnen gebruiken, die de methode doTag () zal overschrijven.

Class testTag extends SimpleTagSupport{ public void doTag()}

We zullen deze testTag-klasse ook in TLD (Tag Library Descriptor) moeten toewijzen, aangezien de JSP-container automatisch een toewijzing maakt tussen het klassebestand en de uri die in het TLD-bestand is genoemd.

JSP-taginterface

  • Deze klasse moet de klasse SimpleTagSupport uitbreiden.
  • Deze klasse zal de methode doTag () moeten overschrijven die deel uitmaakt van de klasse SimpleTagSupport (overschrijven is een methode die wordt geërfd van de bovenliggende klasse).
  • Deze interface is een subinterface van de JSPTag-interface.
  • Het biedt methoden om aan het begin en einde van de tag uit te voeren.
  • We moeten deze klasse ook in TLD toewijzen, dwz de Tag Library-descriptor

We overwegen in het onderstaande voorbeeld

Methode van tag-interface

  • doTag () is een methode die we moeten overschrijven en die de inhoud van de tag heeft.
  • Het vereist de huidige JSP-context met behulp van getJSPContext ()

Voorbeeld:

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"%> Aangepaste tag 

Custom.tld

 1.0  2.0  Test TLD  guruTag  demotest.guruTag  leeg 

guruTag.java (TagHandler)

pakket demotest;importeer javax.servlet.jsp.tagext. *;importeer javax.servlet.jsp. *;importeer java.io. *;public class guruTag breidt SimpleTagSupport {uitpublic void doTag () gooit JspException, IOException​JspWriter uit = getJspContext (). GetOut ();out.println ("Guru Tag");​​

Uitleg van de code:

guruTag.java (TagHandler)

Code Regel 6: guruTag klasse breidt SimpleTagSupport klasse uit die aanwezig is in javax.servlet.JSP jar

Coderegel 7: hier overschrijven we de methode doTag () die JspException en IOException genereert.

Coderegel 9-10: bij deze methode wordt de code ingesloten in een aangepaste tag die wordt aangeroepen. We nemen een object van JspWriter, en dat zal "Guru Tag" afdrukken.

Custom.tld

Coderegel 6: hier is de naam van de aangepaste tag "guruTag."

Coderegel 7: Tag-klasse is taghandlerclass, dwz guruTag.java. Het neemt het volledige pad van het handlerbestand in beslag, inclusief het mappad van de locatie van het bestand.

Customtag_jsp1.jsp

Coderegel 3 : Dit taglib-voorvoegsel is vereist voor alle tags en het toegevoegde voorvoegsel is 'ex', vandaar dat het kan worden gebruikt als een voorvoegsel voor alle kerntags en uri is custom.tld die de tag-handler in kaart brengt.

Coderegel 11: Hier definiëren we de aangepaste tag "guruTag", die de handlerklasse doTag () -methode aanroept en de code erin wordt uitgevoerd.

Als je de bovenstaande code uitvoert, krijg je de volgende output

Uitgang:

  • We krijgen de uitvoer als "GuruTag" van guruTag.java, dwz TagHandler, die de methode doTag () overschrijft en die "Guru Tag" als uitvoer afdrukt.

Overzicht:

  • In deze sectie leerden we over de standaard JSP-tagbibliotheek waarin we kerntags en aangepaste tags hebben gemaakt.
  • Kerntags omvatten for, if, redirect, import, catch-tags die tags waren die voor basisdoeleinden in JSP werden gebruikt.
  • We hebben ook aangepaste tags gemaakt waarin we de tags kunnen definiëren en deze in JSP kunnen gebruiken