Een gids voor de JSTL-bibliotheek

1. Overzicht

JavaServer Pages Tag Library (JSTL) is een set tags die kunnen worden gebruikt voor het implementeren van enkele veelgebruikte bewerkingen, zoals looping, voorwaardelijke opmaak en andere.

In deze zelfstudie bespreken we hoe u JSTL instelt en hoe u de vele tags gebruikt.

2. Installatie

Om JSTL-functies in te schakelen, moeten we de bibliotheek aan ons project toevoegen. Voor een Maven-project voegen we de afhankelijkheid toe in pom.xml het dossier:

 javax.servlet jstl 1.2 

Met de bibliotheek toegevoegd aan ons project, zal de uiteindelijke setup zijn om de kern JSTL-tag en het naamruimtebestand van andere tags toe te voegen aan onze JSP met behulp van de taglib-instructie als volgt:

Vervolgens zullen we deze tags bekijken, die grofweg zijn gegroepeerd in vijf categorieën.

3. Kerntags

JSTL-kerntagbibliotheek bevat tags voor het uitvoeren van basisbewerkingen, zoals het afdrukken van waarden, declareren van variabelen, afhandeling van uitzonderingen, uitvoeren van iteraties en het declareren van voorwaardelijke instructies.

Laten we eens kijken naar de kerntags.

3.1. De Label

wordt gebruikt voor het weergeven van waarden in variabelen of het resultaat van een impliciete uitdrukking.

Het heeft drie attributen: value, default en escapeXML. De escapeXML attribuut voert ruwe XML-tags uit die zijn opgenomen in het waarde attribuut of zijn bijlage.

Een voorbeeld van tag zal zijn:

3.2. De Label

De tag wordt gebruikt voor het declareren van variabelen met een bereik in JSP. We kunnen ook de naam van de variabele en de waarde ervan in de var en waarde attributen.

Een voorbeeld is van de vorm:

3.3. De Label

De tag verwijdert variabelen met een bereik, wat overeenkomt met toewijzen nul naar een variabele. Het duurt var en reikwijdte attribuut met reikwijdte met een standaardwaarde voor alle bereiken.

Hieronder laten we een voorbeeld zien van het gebruik van label:

3.4. De Label

De tag vangt elke uitzondering op die binnen zijn behuizing wordt gegenereerd. Als de uitzondering wordt gegenereerd, wordt de waarde ervan opgeslagen in het var kenmerk van deze tag.

Typisch gebruik kan er als volgt uitzien:

En om te controleren of de uitzondering wordt gegenereerd, gebruiken we de tag zoals hieronder weergegeven:

De uitzondering is: $ {exceptionThrown}

Er is een uitzondering: $ {exceptionThrown.message}

3.5. De Label

De is een voorwaardelijke tag die zijn ingesloten scriptlets alleen weergeeft of uitvoert als zijn test attribuut evalueert naar waar. Het resultaat van de evaluatie kan worden opgeslagen in zijn var attribuut.

3.6. , en Tags

De is een bovenliggende tag die wordt gebruikt bij het uitvoeren van switch-achtige of if-else-expressies. Het heeft twee subtags; en die respectievelijk if / else-if en else vertegenwoordigen.

duurt een test attribuut dat de uitdrukking bevat die moet worden geëvalueerd. Hieronder laten we een voorbeeld van het gebruik van deze tags zien:

3.7. De Label

De tag zorgt voor het ophalen en weergeven van inhoud van absolute of relatieve URL's.

We kunnen de url en var attributen om de URL te bevatten, en de inhoud die van de URL is opgehaald. We kunnen bijvoorbeeld inhoud van een URL importeren door:

3.8. De Label

De tag is vergelijkbaar met Java's for, while of do-while syntaxis. De items attribuut bevat de lijst met items die moeten worden herhaald, while beginnen en einde attributen bevatten respectievelijk de begin- en eindindex (nulindexering).

tag heeft ook een stap attribuut dat de grootte van de indexverhoging na elke iteratie bepaalt. Hieronder laten we een voorbeeldgebruik zien:

 Item 

3.9. De Label

De tag wordt gebruikt voor het splitsen van een Draad in tokens en itereren erdoorheen.

Gelijkwaardig aan tag, het heeft een items attribuut en een extra afbakening attribuut dat het scheidingsteken is voor de Draad soortgelijk:

3.10. en Tags

De tag is handig voor het opmaken van een URL met de juiste verzoekcodering. de opgemaakte URL wordt opgeslagen in de var attribuut.

tag heeft ook een subtag die wordt gebruikt voor het specificeren van URL-parameters. We laten hieronder een voorbeeld zien:

3.11. De Label

De tag voert een URL-herschrijving uit en leidt de gebruiker om naar de pagina die is opgegeven in het url attribuut. Een typische use case ziet er als volgt uit:

4. Tags opmaken

JSTL-opmaak-tagbibliotheek biedt een handige manier voor het opmaken van tekst, getallen, datums, tijden en andere variabelen voor een betere weergave.

JSTL-opmaaktags kunnen ook worden gebruikt om de internationalisering van een website te verbeteren.

Voordat we deze opmaaktags gebruiken, moeten we de taglib toevoegen aan onze JSP:

Laten we de verschillende opmaaktags identificeren en hoe ze kunnen worden gebruikt.

4.1. De Label

De tag is handig bij het opmaken van datums of tijd. De waarde attribuut bevat de datum die moet worden opgemaakt, en de type attribuut heeft een van de drie waarden; datum, tijd of beide.

heeft ook een patroon attribuut waar we het gewenste opmaakpatroon kunnen specificeren. Hieronder ziet u een voorbeeld van een van de patronen:

4.2. De Label

De tag is vergelijkbaar met label.

Het verschil is dat met tag kunnen we het opmaakpatroon specificeren waarin de onderliggende datumparser mag verwachten dat de datumwaarde zich bevindt.

We kunnen datums ontleden:

4.3. De Label

De tag zorgt voor de weergave van getallen in een specifiek patroon of een specifieke precisie die er een kan zijn van aantal, valuta of percentage zoals gespecificeerd in zijn type attribuut. Een voorbeeldgebruik van zou zijn:

4.4. De Label

De tag is vergelijkbaar met label. Het verschil is dat met tag kunnen we het opmaakpatroon specificeren waarin de onderliggende nummer-parser mag verwachten dat het nummer zich bevindt.

We zouden dit kunnen gebruiken als:

4.5. De Label

De tag is een bovenliggende tag voor label. maakt de bundel gespecificeerd in zijn basisnaam attribuut toe aan het bijgevoegde tags.

tag is handig om internationalisering mogelijk te maken, omdat we locale-specifieke objecten kunnen specificeren. Typisch gebruik is van de vorm:

4.6. De Label

De tag wordt gebruikt voor het laden van een resourcebundel binnen JSP en deze beschikbaar te maken op de hele pagina. De geladen resourcebundel wordt opgeslagen in het var attribuut van de label. We kunnen de bundel instellen door:

4.7. De Label

De tag wordt gebruikt om de locale in te stellen voor de secties in JSP die na de declaratie worden geplaatst. Meestal stellen we dit in door:

fr_FR staat voor de landinstelling die in dit geval Frans is.

4.8. De Label

De tag is een bovenliggende tag die de tijdzone specificeert die moet worden gebruikt door tijdopmaak of parseeracties door tags in de bijlage.

Deze tijdzoneparameter wordt geleverd door zijn waarde attribuut. Een voorbeeldgebruik wordt hieronder getoond:

4.9. De Label

De tag kan worden gebruikt om de tijdzone te kopiëren die is opgegeven in het waarde attribuut toe aan een bereikvariabele die is opgegeven in zijn var attribuut. We definiëren dit door:

4.10. De Label

De <>> tag wordt gebruikt om internationaliseringsbericht weer te geven. De unieke identificatie voor het bericht dat moet worden opgehaald, moet worden doorgegeven aan het sleutel attribuut.

Een specifieke bundel om het bericht op te zoeken, die ook kan worden opgegeven via het bundel attribuut.

Dit kan er als volgt uitzien:

4.11. De Label

De tag is handig bij het specificeren van het coderingstype voor formulieren met het actietype post.

De naam van de te gebruiken tekencodering wordt geleverd via de sleutel attribuut van de label.

Laten we hieronder een voorbeeld bekijken:

5. XML-tags

JSTL XML-tagbibliotheek biedt handige manieren voor interactie met XML-gegevens binnen een JSP.

Om toegang te krijgen tot deze XML-tags, voegen we de tagbibliotheek toe aan onze JSP door:

Laten we eens kijken naar de verschillende tags in de JSTL XML-tagsbibliotheek.

5.1. De Label

De tag is vergelijkbaar met scriptlet-tag in JSP maar wordt specifiek gebruikt voor XPath-expressies.

tag heeft een selecteer en escapeXML attributen die worden gebruikt voor het specificeren van de XPath-expressie om een Draad en om respectievelijk het ontsnappen van speciale XML-tekens mogelijk te maken.

Een eenvoudig voorbeeld is:

$ output in het bovenstaande verwijst naar een voorgeladen XSL-bestand.

5.2. De Label

De tag wordt gebruikt voor het ontleden van de XML-gegevens die zijn opgegeven in het xml of doc attribuut of bijlage. Een typisch voorbeeld zou zijn:

5.3. De Label

De tag stelt de variabele in die is opgegeven in zijn var attribuut aan de geëvalueerde XPath-expressie die is doorgegeven aan zijn selecteer attribuut. Een typisch voorbeeld zou zijn:

5.4. De Label

De tag verwerkt zijn hoofdtekst als de XPath-expressie aan zijn selecteer attribuut evalueert naar waar.

Het resultaat van de evaluatie kan worden opgeslagen in zijn var attribuut.

Een eenvoudige use-case ziet er als volgt uit:

 Document heeft minstens één element. 

5.5. De Label

De tag wordt gebruikt voor het doorlopen van knooppunten in een XML-document. Het XML-document wordt geleverd via tag's selecteer attribuut.

Net als de kern-tag, tag heeft begin, einde en stap attributen.

We zouden dus hebben:

  • Itemnaam:

5.6. , en Tags

De tag is een bovenliggende tag die wordt gebruikt bij het uitvoeren van switch-achtige of if / else-if / else-expressies en heeft geen attributen maar omsluit en tags.

tag is vergelijkbaar if / else-if en neemt een selecteer attribuut dat de uitdrukking bevat die moet worden geëvalueerd.

tag is vergelijkbaar met else / default-clausule en heeft geen attribuut.

Hieronder laten we een voorbeeld van een use-case zien:

  Artikelcategorie is Sneakers Artikelcategorie is categorie Hakken onbekend. 

5.7. en Tags

De tag transformeert een XML-document binnen JSP door er een eXtensible Stylesheet Language (XSL) op toe te passen.

Het XML-document of Draad te transformeren wordt geleverd aan de doc attribuut terwijl de toe te passen XSL wordt doorgegeven aan de xslt attribuut van de label.

tag is een subtag van tag en het wordt gebruikt om een ​​parameter in het transformatie-stylesheet in te stellen.

Een simpele use case zal er als volgt uitzien:

6. SQL-tags

JSTL SQL-tagbibliotheek biedt tags voor het uitvoeren van relationele databasebewerkingens.

Om JSTL SQL-tags in te schakelen, voegen we de taglib toe aan onze JSP:

JSTL SQL-tags ondersteunen verschillende databases, waaronder MySQL, Oracle en Microsoft SQL Server.

Vervolgens kijken we naar de verschillende beschikbare SQL-tags.

6.1. De Label

De tag wordt gebruikt voor het definiëren van de JDBC-configuratievariabelen.

Deze configuratievariabelen worden bewaard in het driver, url, gebruiker, wachtwoord en databron attributen van de tag zoals hieronder weergegeven:

In het bovenstaande is de var attribuut bevat een waarde die de bijbehorende database identificeert.

6.2. De Label

De tag wordt gebruikt om een ​​SQL SELECT-instructie uit te voeren met het resultaat dat is opgeslagen in een scoped-variabele die is gedefinieerd in zijn var attribuut. Meestal definiëren we dit als:

 SELECTEER * van GEBRUIKERS; 

tag's sql attribuut bevat de SQL-opdracht die moet worden uitgevoerd. Andere kenmerken zijn onder meer maxRows, startRow, en databron.

6.3. De Label

De tag is vergelijkbaar met tag maar voert alleen SQL INSERT-, UPDATE- of DELETE-bewerkingen uit waarvoor geen retourwaarde vereist is.

Een voorbeeldgebruik zou zijn:

 VOEG IN GEBRUIKERS IN (voornaam, achternaam, e-mail) WAARDEN ('Grace', 'Adams', '[email protected]'); 

tag's var attribuut bevat het aantal rijen dat werd beïnvloed door de SQL-instructie die is opgegeven in het sql attribuut.

6.4. De Label

De tag is een subtag die binnen kan worden gebruikt of tag om als volgt een waarde op te geven voor een tijdelijke aanduiding voor een waarde in de SQL-instructie:

 VERWIJDEREN VAN GEBRUIKERS WAAR email =? 

tag heeft één kenmerk; waarde die de te leveren waarde bevat.

6.5. De Label

De tag wordt binnen gebruikt of tag om een ​​datum- en tijdwaarde op te geven voor een tijdelijke aanduiding voor een waarde in de SQL-instructie.

We kunnen dit als volgt in onze JSP definiëren:

 UPDATE gebruikers SET geregistreerd =? WAAR email =? 

Zoals de label, tag heeft een waarde attribuut met een extra type attribuut waarvan de waarde er een kan zijn van datum Tijd of tijdstempel (datum en tijd).

6.6. De Label

De tag wordt gebruikt om een ​​JDBC-transactie-achtige bewerking te creëren door te groeperen en tags samen als volgt:

  UPDATE Users SET first_name = 'Patrick-Ellis' WHERE email = "[email protected]" UPDATE Users SET last_name = 'Nelson' WHERE email = '[email protected]' VOEG IN gebruikers (voornaam, achternaam, e-mail) VALUES ('Grace ',' Adams ',' [email protected] '); 

tag zorgt ervoor dat alle databasebewerkingen met succes worden verwerkt (vastgelegd) of allemaal netjes mislukken (teruggedraaid) als er een fout optreedt in een van de bewerkingen.

7. JSTL-functies

JSTL-methoden zijn hulpprogramma's voor gegevensmanipulatie binnen JSP. Hoewel sommige functies verschillende gegevenstypen aannemen, zijn de meeste bedoeld voor Draad manipulatie.

Om JSTL-methoden in JSP in te schakelen, voegen we de taglib toe aan onze pagina:

Laten we eens kijken naar deze functies en hoe u ze kunt gebruiken.

7.1. fn: bevat () en fn: bevatIgnoreCase ()

De fn: bevat () methode evalueert een Draad om te controleren of het een bepaalde substring bevat zoals deze:

'Eerste' gevonden in string

De fn: bevat () functie duurt twee Draad argumenten; de eerste is de bron Draad en het tweede argument is de deelstring. Het retourneert een booleaanse waarde, afhankelijk van het resultaat van de evaluatie.

De fn: bevatIgnoreCase () functie is een hoofdletterongevoelige variant van de fn: bevat () methode en kan als volgt worden gebruikt:

'Eerste' string gevonden

'FIRST' string gevonden

7.3. De fn: endsWith () Functie

De fn: endsWith () functie evalueert een Draad om te controleren of het achtervoegsel overeenkomt met een andere subtekenreeks. Er zijn twee argumenten voor nodig; het eerste argument is de Draad waarvan het achtervoegsel moet worden getest, terwijl het tweede argument het geteste achtervoegsel is.

We kunnen dit als volgt definiëren:

String eindigt met 'string'

7.4. De fn: escapeXml () Functie

De fn: escapeXML () functie wordt gebruikt om XML-opmaak in de invoer te ontsnappen Draad soortgelijk:

$ {fn: escapeXml (string1)}

7.5. De fn: indexOf () Functie

De fn: indexOf () functie kijkt door een Draad en geeft de index terug van de eerste keer dat een gegeven deelstring voorkomt.

Er zijn twee argumenten voor nodig; de eerste is de bron Draad en het tweede argument is de deelstring die moet overeenkomen en de eerste instantie moet retourneren.

fn: indexOf () functie retourneert een geheel getal en kan worden gebruikt als:

Index: $ {fn: indexOf (string1, "first")}

7.6. De fn: join () Functie

De fn: join () functie voegt alle elementen van een array samen tot één Draad en kan als volgt worden gebruikt:

7.7. De fn: lengte () Functie

De fn: lengte () functie geeft het aantal elementen in de gegeven verzameling of het aantal tekens in de gegeven Draad.

De fn: lengte () functie duurt een enkele Voorwerp die een verzameling of een Draad en retourneert een geheel getal als volgt:

Lengte: $ {fn: length (string1)}

7.8. De fn: vervangen () Functie

De fn: vervangen () functie vervangt alle instanties van een subtekenreeks in een tekenreeks door een andere Draad.

Er zijn drie argumenten voor nodig; de bron Draad, de subtekenreeks die moet worden opgezocht in de bron en de Draad om alle instanties van de subtekenreeks als volgt te vervangen:

7.9. De fn: split () Functie

De fn: split () functie voert een gesplitste bewerking uit op een Draad met behulp van het opgegeven scheidingsteken. Hier is een voorbeeldgebruik:

7.10. De fn: startsWith () Functie

De fn: startsWith () functie controleert het voorvoegsel van een Draad en retourneert waar als het overeenkomt met een gegeven subtekenreeks als volgt:

String begint met 'This'

7.11. De fn: substring () Functie

De fn: substring () functie maakt een subtekenreeks van een bron Draad bij de opgegeven begin- en eindindexen. We zouden het als volgt gebruiken:

7.12. De fn: substringAfter () Functie

De fn: substringAfter () functie controleert een bron Draad voor een gegeven subtekenreeks en retourneert de Draad onmiddellijk na het eerste voorkomen van de opgegeven subtekenreeks.

We zouden het als volgt gebruiken:

7.13. De fn: substringBefore () Functie

De fn: substringBefore () functie controleert een bron Draad voor een gegeven subtekenreeks en retourneert de Draad net voor het eerste voorkomen van de opgegeven subtekenreeks.

Op onze JSP-pagina ziet het er als volgt uit:

7.14. De fn: toLowerCase () Functie

De fn: naar LowerCase () functie transformeert alle karakters in een Draad kleine letters en kan als volgt worden gebruikt:

7.15. De fn: toUpperCase () Functie

De fn: toUpperCase () functie transformeert alle karakters in een Draad in hoofdletters:

7.16. De fn: trim () Functie

De fn: trim () functie verwijdert voorafgaande en achterliggende spaties in een Draad:

9. Conclusie

In dit uitgebreide artikel hebben we gekeken naar de verschillende JSTL-tags en hoe je ze kunt gebruiken.

Zoals gewoonlijk zijn codefragmenten te vinden op GitHub.