Tutorial JSTL (JSP Standard Tag Library): Core & Exemple de etichete personalizate

Cuprins:

Anonim

JSTL este o bibliotecă de etichete standard a JSP. Aici vom vedea cum utilizarea diferitelor etichete JSTL va facilita codarea JSP.

În acest tutorial, veți învăța-

  • Ce este JSTL
  • JSTL Core
  • Etichete personalizate JSP

Ce este JSTL?

JSTL înseamnă bibliotecă de etichete standard pentru pagini de server Java și este o colecție de biblioteci de etichete JSP personalizate care oferă funcționalități comune de dezvoltare web.

Avantajele JSTL

  1. Etichetă standard : oferă un strat bogat al funcționalității portabile a paginilor JSP. Este ușor pentru un dezvoltator să înțeleagă codul.
  2. Cod curat și curat : deoarece scripletele încurcă dezvoltatorul, utilizarea JSTL face codul curat și curat.
  3. Suport automat Javabeans Interospection : Are un avantaj al JSTL față de scriptletele JSP. Limbajul JSTL Expression gestionează foarte ușor codul JavaBean. Nu este nevoie să dărâmăm obiectele, care au fost preluate ca atribute cu scop. Utilizarea codurilor scripturilor JSP va fi complicată, iar JSTL a simplificat acest scop.
  4. Mai ușor de citit de către oameni : JSTL se bazează pe XML, care este foarte asemănător cu HTML. Prin urmare, este ușor pentru dezvoltatori să înțeleagă.
  5. Mai ușor de înțeles pentru computere : instrumente precum Dreamweaver și prima pagină generează din ce în ce mai mult cod HTML. Instrumentele HTML fac o treabă excelentă de formatare a codului HTML. Codul HTML este amestecat cu codul scriplet. Deoarece JSTL este exprimat ca etichete compatibile XML, este ușor pentru generarea HTML să analizeze codul JSTL în document.

JSTL Core

Etichetele de bază sunt etichetele utilizate cel mai frecvent în JSP. Ele oferă sprijin pentru

  • Repetare
  • Logica condiționată
  • Excepție de captură
  • url înainte
  • Redirecționare etc.

Pentru a utiliza etichete de bază, trebuie să definim mai întâi biblioteca de etichete, iar mai jos este sintaxa pentru a include o bibliotecă de etichete.

Sintaxă:

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

Aici,

  • prefixul poate fi folosit pentru a defini toate etichetele de bază și
  • uri este biblioteca de taglib din care este importat

Să vedem în detaliu câteva dintre etichetele de bază,

1. Afară:

  • Rezultatul expresiei este afișat în eticheta out
  • Poate scăpa direct de etichetele XML. Prin urmare, acestea nu sunt evaluate ca etichete reale

Sintaxă:

  • Aici valoarea reprezintă informații pentru ieșire și este obligatorie
  • Implicit este eșecul de a transmite informații și nu este obligatoriu
  • escapeXML - Este adevărat dacă scapă de caracterele XML.

Exemplu:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Etichetă de bază JSP1 

Explicația codului:

Linia de cod 3: Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „c”. Prin urmare, poate fi folosit ca prefix pentru toate etichetele coretale.

Linia de cod 12: Aici folosim coretag out cu prefixul „c”, iar acesta va imprima valoarea din eticheta de expresie. Prin urmare, ieșirea va fi numele

Când executați codul de mai sus, obțineți următoarea ieșire:

Ieșire:

  • Obținem valoarea ca nume din eticheta de bază „out” care se va imprima în fluxul de ieșire.

2. Prinde

  • Prinde orice excepție aruncabilă care apare în corp și se arată ca ieșire.
  • Este folosit pentru tratarea erorilor și pentru a le prinde.

Sintaxă:

Aici var reprezintă numele variabilei, care va deține excepția aruncabilă.

Exemplu:

<% @ 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"%> Etichetă de bază JSP2 <% int num = 10/0; %>Excepția este: $ {guruException}

Explicația codului:

Linia de cod 3: Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „c”, prin urmare poate fi folosit ca prefix pentru toate etichetele coretale

Linia de cod 11-13: Captura Coretag este utilizată pentru a prinde excepția și a imprima excepția. Aici excepția este ridicată când 10/0 și acea excepție poartă numele "guruException".

Linia de cod 14: tipărim „guruException”.

Când executați codul, veți obține următoarea ieșire:

Ieșire:

  • Obținem excepția aritmetică ca / ​​de la zero și este tipărită în ieșire folosind variabila „guruException”

3. Import

  • Putem importa un alt conținut de fișier într-o pagină JSP, așa cum am făcut în JSP include acțiune.
  • Aici putem include și URL și conținutul va fi afișat pe acea pagină.

Sintaxă:

Aici var este un nume de variabilă care este un identificator, care va deține numele fișierului / uri.

uri este numele de fișier relativ sau 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"%> Etichetă de bază JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Introduceți titlul aici  Fișierul este afișat după import 

Explicația codului:

Coretag_jsp31.jsp

Linia de cod 3: Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „c”, prin urmare poate fi folosit ca prefix pentru toate etichetele coretale

Linia de cod 11-12: Aici importăm fișierul coretag_jsp32.jsp în acest fișier folosind eticheta de import

Linia de cod 13: Aici imprimăm fișierul coretag_jsp32.jsp folosind eticheta out.

Când executați codul de mai sus, obțineți următoarea ieșire.

Ieșire:

  • Coretag_jsp32 este tipărit în ieșire deoarece acest fișier a fost importat în coretag_jsp31.jsp.

4. pentru fiecare

  • Este folosit pentru a itera numărul de elemente din seriile de enunțuri.
  • Este la fel ca un forloop Java.

Sintaxă:

  • Aici var reprezintă numele variabilei care va deține numele contorului
  • Begin reprezintă valoarea counter counter
  • Sfârșitul va reprezenta valoarea sa finală

Exemplu:

<% @ 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"%> Etichetă de bază JSP4 

Explicația codului:

Linia de cod 3: Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „c”, prin urmare poate fi folosit ca prefix pentru toate etichetele coretale

Linia de cod 11-13: Aici folosim bucla "forEach" unde numele variabilei este "gurucount", care a început să se numere 5 și să se numere la sfârșit ca 10. Imprimăm variabila gurucount care are numere începând de la 5 la 10.

Când executați codul, obțineți următoarea ieșire

Ieșire:

  • Rezultatul pe care îl obținem începe de la 5 la 10.

5. Dacă

  • Este folosit pentru condițiile de testare.
  • Dacă eticheta este utilizată pentru a testa o condiție dacă este adevărată sau nu pe baza acestui lucru, blocul de cod ar fi executat.

Sintaxă:

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

Explicația codului:

Linia de cod 3: Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „c”, prin urmare poate fi folosit ca prefix pentru toate etichetele coretale

Linia de cod 11: Aici setăm variabila numită ca număr la 100

Linia de cod 12-14: Aici folosim „condiția if” în care verificăm dacă numărul este egal cu 100. Este egal cu 100, atunci obținem rezultatul ca „Numărul este 100”.

Când executați codul de mai sus, obțineți următoarea ieșire

Ieșire:

  • Deoarece condiția „dacă” este adevărată, obținem rezultatul ca „Numărul este 100”.

6. redirecționare:

  • Este utilizat pentru redirecționarea paginii curente către o altă adresă URL, furnizând adresa URL relativă a acestei etichete.
  • Acceptă adrese URL relative la context

Sintaxă:

Aici url este adresa URL relativă la care trebuie redirecționată și numele contextului aplicației web locale.

Exemplu:

<% @ 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"%> Etichetă de bază JSP6 

Explicația codului:

Linia de cod 3: Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „c”, prin urmare poate fi folosit ca prefix pentru toate etichetele coretale

Linia de cod 11: Aici folosim „etichetă de redirecționare”, unde specificăm numele adresei URL, iar când facem clic pe pagina respectivă, redirecționează către site-ul care a fost dat pentru redirecționare.

Când executați codul de mai sus, obțineți următoarea ieșire;

Ieșire:

  • Obținem adresa de ieșire guru99.com care este redirecționată de coretag_jsp6.jsp

Etichete personalizate JSP

  • Este un element de limbaj JSP definit de utilizator.
  • Când JSP este tradus într-un servlet, eticheta personalizată este convertită într-o clasă care acționează asupra unui obiect și este apelată ca un handler de etichete.
  • Acțiunile la executarea servletului sunt invocate de containerul web.
  • Pentru a crea eticheta personalizată definită de utilizator, trebuie să creăm gestionarul de etichete care va extinde SimpleTagSupport și trebuie să înlocuiască metoda doTag ().
  • Trebuie să creăm TLD unde trebuie să mapăm fișierul clasei în TLD.

Avantajele etichetelor personalizate în JSP:

  • Portabil - O acțiune descrisă într-o bibliotecă de etichete trebuie să poată fi utilizată în orice container JSP.
  • Simplu - Utilizatorii nesuficienți trebuie să poată înțelege și utiliza acest mecanism. Furnizorii de funcționalități JSP trebuie să fie ușor să-l facă disponibile ca acțiuni.
  • Expresiv - Mecanismul trebuie să susțină o gamă largă de acțiuni, inclusiv acțiuni imbricate, elemente de script în interiorul corpurilor de acțiune, crearea, utilizarea și actualizarea variabilelor de script.
  • Utilizabil din diferite limbaje de scriptare - Deși specificațiile JSP definesc în prezent doar semantica pentru scripturi în limbajul de programare Java, dorim să lăsăm deschisă posibilitatea altor limbaje de scriptare.
  • Construite pe concepte și mașini existente - Nu vrem să reinventăm ceea ce există în altă parte. De asemenea, vrem să evităm conflictele viitoare ori de câte ori le putem prevedea

Sintaxă:

Luați în considerare că creăm eticheta testGuru și putem folosi eticheta și clasa testTag, care va înlocui metoda doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

De asemenea, va trebui să mapăm această clasă testTag în TLD (Tag Library Descriptor), deoarece containerul JSP va crea automat o mapare între fișierul clasei și uri care a fost menționat în fișierul TLD.

JSP Tag Interface

  • Această clasă va trebui să extindă clasa SimpleTagSupport.
  • Această clasă va trebui să înlocuiască metoda doTag () care face parte din clasa SimpleTagSupport (suprascrierea este o metodă care este moștenită din clasa părinte).
  • Această interfață este o subinterfață a interfeței JSPTag.
  • Oferă metode de efectuat la începutul și la sfârșitul etichetei.
  • De asemenea, trebuie să mapăm această clasă în TLD, adică descriptorul bibliotecii de etichete

Luăm în considerare în exemplul de mai jos

Metoda interfeței de etichetare

  • doTag () este o metodă pe care trebuie să o ignorăm, care va avea conținutul etichetei.
  • Este nevoie de contextul JSP actual folosind getJSPContext ()

Exemplu:

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"%> Etichetă personalizată 

Personalizat.tld

 1.0  2.0  Test TLD  guruTag  demotest.guruTag  gol 

guruTag.java (TagHandler)

demotest pachet;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;public class guruTag extinde SimpleTagSupport {public void doTag () aruncă JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println („Guru Tag”);}}

Explicația codului:

guruTag.java (TagHandler)

Linia de cod 6: clasa guruTag extinde clasa SimpleTagSupport care este prezentă în javax.servlet.JSP jar

Linia de cod 7: Aici trecem peste metoda doTag () care aruncă JspException și IOException.

Linia de cod 9-10: În această metodă, codul va fi încorporat în eticheta personalizată care va fi numită. Luăm un obiect al JspWriter, iar acesta va tipări „Guru Tag”.

Personalizat.tld

Linia de cod 6: Aici numele etichetei personalizate este „guruTag”.

Linia de cod 7: Clasa etichetei este taghandlerclass, adică guruTag.java. Este nevoie de calea completă a fișierului handler care include calea directorului locației fișierului.

Customtag_jsp1.jsp

Linia de cod 3 : Acest prefix taglib este necesar pentru toate etichetele, iar prefixul adăugat este „ex”, prin urmare poate fi folosit ca prefix pentru toate etichetele coretice și uri este custom.tld care mapează gestionarul de etichete.

Linia de cod 11: Aici definim eticheta personalizată „guruTag”, care va apela metoda doTag () din clasa handler și codul din cadrul acesteia va fi executat.

Când executați codul de mai sus, obțineți următoarea ieșire

Ieșire:

  • Obținem rezultatul ca „GuruTag” din guruTag.java, adică TagHandler, care înlocuiește metoda doTag () și care tipărește „Guru Tag” ca ieșire.

Rezumat:

  • În această secțiune, am aflat despre biblioteca de etichete standard JSP în care am realizat etichete de bază și etichete personalizate.
  • Etichetele principale includ, dacă, redirecționează, importă, captează etichete care erau etichete utilizate în scopuri de bază în JSP.
  • De asemenea, am făcut etichete personalizate în care putem defini etichetele și le putem folosi în JSP