JSTL (JSP Standard Tag Library) Vejledning: Core & Eksempler på brugerdefinerede tags

Indholdsfortegnelse:

Anonim

JSTL er et standard tagbibliotek fra JSP. Her vil vi se, hvordan brug af forskellige JSTL-tags vil gøre JSP-kodning lettere.

I denne vejledning lærer du-

  • Hvad er JSTL
  • JSTL Core
  • JSP brugerdefinerede tags

Hvad er JSTL?

JSTL står for Java-server sider standard tagbibliotek, og det er en samling af brugerdefinerede JSP-tagbiblioteker, der giver fælles webudviklingsfunktionalitet.

Fordele ved JSTL

  1. Standardmærke : Det giver et rigt lag af den bærbare funktionalitet på JSP-sider. Det er let for en udvikler at forstå koden.
  2. Kode pænt og rent: Da scriplets forvirrer udvikler, gør brugen af ​​JSTL koden pæn og ren.
  3. Automatisk JavabeansInterospection Support : Det har en fordel ved JSTL frem for JSP scriptlets. JSTL ekspressionssprog håndterer JavaBean-kode meget let. Vi behøver ikke at nedskyde objekterne, som er blevet hentet som scoped-attributter. Brug af JSP scriptlets-kode vil være kompliceret, og JSTL har forenklet dette formål.
  4. Lettere for mennesker at læse : JSTL er baseret på XML, der minder meget om HTML. Derfor er det let for udviklerne at forstå.
  5. Lettere at forstå computere : Værktøjer som Dreamweaver og forsiden genererer mere og mere HTML-kode. HTML-værktøjer gør et godt stykke arbejde med at formatere HTML-kode. HTML-koden blandes med scriplet-koden. Da JSTL udtrykkes som XML-kompatible tags, er det let for HTML-generering at analysere JSTL-koden i dokumentet.

JSTL Core

Kernetags er oftest anvendte tags i JSP. De yder støtte til

  • Iteration
  • Betinget logik
  • Fangstundtagelse
  • url fremad
  • Omdirigering osv.

For at bruge kernetags skal vi først definere tagbibliotek og nedenfor er syntaksen for at inkludere et tagbibliotek.

Syntaks:

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

Her,

  • præfikset kan bruges til at definere alle kernetags og
  • uri er biblioteket med taglib, hvorfra det importeres

Lad os se nogle af kernetags i detaljer,

1. Ud:

  • Resultat af udtryk vises i ud-taggen
  • Det kan undslippe XML-tags direkte. Derfor vurderes de ikke som egentlige tags

Syntaks:

  • Her repræsenterer værdi information til output, og det er obligatorisk
  • Standard er manglende outputinformation, og det er ikke obligatorisk
  • escapeXML - Det er sandt, hvis det undslipper XML-tegn.

Eksempel:

Coretag_jsp1.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Core Tag JSP1 

Forklaring af koden:

Kodelinje 3: Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'c'. Derfor kan det bruges som et præfiks for alle coretags.

Kodelinje 12: Her bruger vi coretag ud med præfikset "c", og dette ud vil udskrive værdien i udtryksmærket. Derfor vil output være navn

Når du udfører ovenstående kode, får du følgende output:

Produktion:

  • Vi får værdien som et navn fra kernetagget "ud", der udskrives i outputstrømmen.

2. Fangst

  • Den fanger enhver undtagelse, der kan kastes, der forekommer i kroppen og vises som output.
  • Det bruges til at håndtere fejlene og til at fange dem.

Syntaks:

Her repræsenterer var navnet på variablen, som har undtagelse, der kan kastes.

Eksempel:

<% @ side sprog = "java" contentType = "tekst / 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; %>Undtagelsen er: $ {guruException}

Forklaring af koden:

Kodelinje 3: Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'c', og det kan derfor bruges som et præfiks for alle coretags

Kodelinje 11-13: Coretag-fangst bruges til at fange undtagelsen og udskrive undtagelsen. Her hæves undtagelsen, når 10/0, og denne undtagelse har navnet "guruException".

Kodelinje 14: Vi udskriver "guruException".

Når du udfører koden, får du følgende output:

Produktion:

  • Vi får aritmetisk undtagelse som / ved nul, og den udskrives i output ved hjælp af variablen "guruException"

3. Import

  • Vi kan importere et andet filindhold til en JSP-side, som vi gjorde i JSP inkluderer handling.
  • Her kan vi også inkludere URL, og indholdet vises på den side.

Syntaks:

Her er var et variabelnavn, der er en identifikator, der holder filnavnet / uri.

uri er relativ filnavn eller urinavn.

coretag_jsp31.jsp

<% @ side sprog = "java" contentType = "tekst / 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

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Indsæt titel her  Filen udbetales efter import 

Forklaring af koden:

Coretag_jsp31.jsp

Kodelinje 3: Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'c', og det kan derfor bruges som et præfiks for alle coretags

Kodelinje 11-12: Her importerer vi filen coretag_jsp32.jsp til denne fil ved hjælp af importtag

Kode Line13: Her udskriver vi filen coretag_jsp32.jsp ved hjælp af out tag.

Når du udfører ovenstående kode, får du følgende output.

Produktion:

  • Coretag_jsp32 er udskrevet i output, da denne fil blev importeret i coretag_jsp31.jsp.

4. forEach

  • Det bruges til at gentage antallet af elementer i udsagnsserier.
  • Det er det samme som en Java forloop.

Syntaks:

  • Her repræsenterer var variabelnavn, der vil indeholde tællernavn
  • Begin repræsenterer tællers startværdi
  • End repræsenterer dens slutværdi

Eksempel:

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Kernetag JSP4 

Forklaring af koden:

Kodelinje 3: Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'c', og det kan derfor bruges som et præfiks for alle coretags

Kodelinje 11-13: Her bruger vi "forEach" -sløjfe, hvor variabelnavnet er "gurucount", som er begyndt at tælle som 5 og endetælling som 10. Vi udskriver den variable gurucount, der har tal, der starter fra 5 til 10.

Når du udfører koden, får du følgende output

Produktion:

  • Den output, vi får, starter fra 5 til 10.

5. Hvis

  • Det bruges til testbetingelser.
  • Hvis mærket bruges til at teste en tilstand, om det er sandt eller ikke baseret på dette, vil kodeblokken blive udført.

Syntaks:

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP5 

Forklaring af koden:

Kodelinje 3: Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'c', og det kan derfor bruges som et præfiks for alle coretags

Kodelinje 11: Her indstiller vi variablen navngivet som count til 100

Kodelinje 12-14: Her bruger vi "hvis betingelse", hvor vi kontrollerer, om optællingen er lig med 100. Det er lig med 100, så får vi output som "Tællingen er 100."

Når du udfører ovenstående kode, får du følgende output

Produktion:

  • Da "hvis" -tilstanden er sand, får vi output som "Tællingen er 100".

6. omdirigering:

  • Det bruges til at omdirigere den aktuelle side til en anden URL ved at angive den relative URL for dette tag.
  • Det understøtter kontekst relative URL'er

Syntaks:

Her er url relativ url, som den skal omdirigeres til og kontekstnavn på den lokale webapplikation.

Eksempel:

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP6 

Forklaring af koden:

Kodelinje 3: Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'c', og det kan derfor bruges som et præfiks for alle coretags

Kodelinje 11: Her bruger vi "omdirigeringskode", hvor vi angiver urlnavnet, og når vi klikker på den side, omdirigeres det til websted, der er givet til omdirigering.

Når du udfører ovenstående kode, får du følgende output;

Produktion:

  • Vi får output guru99.com url, der omdirigeres af coretag_jsp6.jsp

JSP brugerdefinerede tags

  • Det er et brugerdefineret JSP-sprogelement.
  • Når JSP oversættes til en servlet, konverteres brugerdefineret tag til en klasse, der tager handling på et objekt og kaldes som en taghåndterer.
  • Disse handlinger, når servlet udføres, påberåbes af webcontaineren.
  • For at oprette det brugerdefinerede brugerdefinerede tag er vi nødt til at oprette taghåndtereren, der udvider SimpleTagSupport og skal tilsidesætte doTag () -metoden.
  • Vi er nødt til at oprette TLD, hvor vi skal kortlægge klassefilen i TLD.

Fordele ved brugerdefinerede tags i JSP:

  • Bærbar - En handling beskrevet i et tagbibliotek skal kunne bruges i enhver JSP-container.
  • Enkelt - Usofistikerede brugere skal være i stand til at forstå og bruge denne mekanisme. Leverandører af JSP-funktionalitet skal have let adgang til at gøre det tilgængeligt for brugere som handlinger.
  • Ekspressivt - Mekanismen skal understøtte en bred vifte af handlinger, herunder indlejrede handlinger, scriptelementer inde i handlingsorganer, oprettelse, brug og opdatering af scriptvariabler.
  • Anvendelig fra forskellige scriptsprog - Selvom JSP-specifikationen i øjeblikket kun definerer semantikken til scripts på Java-programmeringssproget, vil vi lade muligheden for andre scripting-sprog være åben.
  • Bygget på eksisterende koncepter og maskiner - Vi ønsker ikke at genopfinde whatexists andre steder. Vi vil også undgå fremtidige konflikter, når vi kan forudsige dem

Syntaks:

Overvej, at vi opretter testGuru-tag, og vi kan bruge taglertestTag-klasse, som tilsidesætter metoden doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Vi bliver også nødt til at kortlægge denne testTag-klasse i TLD (Tag Library Descriptor), da JSP-container automatisk opretter en kortlægning mellem klassefilen og uri, som er blevet nævnt i TLD-filen.

JSP-taggrænseflade

  • Denne klasse bliver nødt til at udvide SimpleTagSupport-klassen.
  • Denne klasse bliver nødt til at tilsidesætte doTag () -metoden, som er en del af SimpleTagSupport-klassen (tilsidesættelse er en metode, der arves fra overordnet klasse).
  • Denne grænseflade er en undergrænseflade til JSPTag-grænsefladen.
  • Det giver metoder til at udføre i starten og slutningen af ​​koden.
  • Vi er også nødt til at kortlægge denne klasse i TLD, dvs. Tagbiblioteksbeskrivelse

Vi overvejer i eksemplet nedenfor

Metode til taggrænseflade

  • doTag () er en metode, som vi har brug for at tilsidesætte, som indeholder indholdet til tagget.
  • Det tager den aktuelle JSP-kontekst ved hjælp af getJSPContext ()

Eksempel:

Customtag_jsp1.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "ex" uri = "WEB-INF / custom.tld"%> Tilpasset tag 

Custom.tld

 1.0  2.0  Test TLD  guruTag  demotest.guruTag  tom 

guruTag.java (TagHandler)

demotest pakke;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;public class guruTag udvider SimpleTagSupport {offentlig ugyldighed doTag () kaster JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Guru Tag");}}

Forklaring af koden:

guruTag.java (TagHandler)

Kodelinje 6: klassen guruTag udvider klassen SimpleTagSupport, som findes i javax.servlet.JSP jar

Kodelinje 7: Her tilsidesætter vi doTag () -metoden, som kaster JspException og IOException.

Kodelinje 9-10: I denne metode integreres koden i et brugerdefineret tag, der kaldes. Vi tager et objekt fra JspWriter, og det vil udskrive "Guru Tag."

Custom.tld

Kodelinje 6: Her er navnet på det brugerdefinerede tag "guruTag."

Kodelinje 7: Tagklasse er taghandlerclass, dvs. guruTag.java. Det tager den fulde sti til behandlerfilen, som inkluderer bibliotekstien til filens placering.

Customtag_jsp1.jsp

Kodelinje 3 : Dette taglib-præfiks er påkrævet for alle tags, og det tilføjede præfiks er 'ex', derfor kan det bruges som et præfiks for alle coretags, og uri er custom.tld som kortlægger taghåndtereren.

Kodelinje 11: Her definerer vi det brugerdefinerede tag "guruTag", som kalder handlerklassen doTag () -metoden, og koden indeni den vil blive udført.

Når du udfører ovenstående kode, får du følgende output

Produktion:

  • Vi får output som "GuruTag" fra guruTag.java dvs. TagHandler, som tilsidesætter doTag () -metoden, og som udskriver "Guru Tag" som output.

Resumé:

  • I dette afsnit lærte vi om JSP standard tagbibliotek, hvor vi lavede kernetags og tilpassede tags.
  • Kernetags inkluderer for, hvis, omdirigering, import, fangsttags, der var tags, der blev brugt til grundlæggende formål i JSP.
  • Vi lavede også brugerdefinerede tags, hvor vi kan definere tags og bruge den i JSP