Tutorial JSTL (JSP Standard Tag Library): Core & Esempi di tag personalizzati

Sommario:

Anonim

JSTL è una libreria di tag standard di JSP. Qui vedremo come l'utilizzo di diversi tag JSTL renderà più semplice la codifica JSP.

In questo tutorial imparerai-

  • Cos'è JSTL
  • JSTL Core
  • Tag personalizzati JSP

Cos'è JSTL?

JSTL sta per libreria di tag standard delle pagine del server Java ed è una raccolta di librerie di tag JSP personalizzate che forniscono funzionalità di sviluppo web comuni.

Vantaggi di JSTL

  1. Tag standard : fornisce un ricco livello di funzionalità portabili delle pagine JSP. È facile per uno sviluppatore comprendere il codice.
  2. Codice ordinato e pulito : poiché gli scriplet confondono lo sviluppatore, l'uso di JSTL rende il codice ordinato e pulito.
  3. Supporto di JavabeansInterospection automatico : presenta un vantaggio di JSTL rispetto agli scriptlet JSP. Il linguaggio JSTL Expression gestisce molto facilmente il codice JavaBean. Non è necessario eseguire il downcast degli oggetti, che sono stati recuperati come attributi con ambito. L'utilizzo del codice degli scriptlet JSP sarà complicato e JSTL ha semplificato tale scopo.
  4. Più facile da leggere per gli umani : JSTL è basato su XML, che è molto simile all'HTML. Quindi, è facile da capire per gli sviluppatori.
  5. Più facile da capire per i computer : strumenti come Dreamweaver e la prima pagina generano sempre più codice HTML. Gli strumenti HTML fanno un ottimo lavoro di formattazione del codice HTML. Il codice HTML viene combinato con il codice scriplet. Poiché JSTL è espresso come tag conformi a XML, è facile per la generazione HTML analizzare il codice JSTL all'interno del documento.

JSTL Core

I tag principali sono i tag utilizzati più di frequente in JSP. Forniscono supporto per

  • Iterazione
  • Logica condizionale
  • Eccezione di cattura
  • url forward
  • Reindirizzamento, ecc.

Per utilizzare i tag principali, dobbiamo prima definire la libreria di tag e di seguito la sintassi per includere una libreria di tag.

Sintassi:

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

Qui,

  • prefix può essere utilizzato per definire tutti i tag principali e
  • uri è la libreria di taglib da cui è importato

Vediamo in dettaglio alcuni dei tag principali,

1. Fuori:

  • Il risultato dell'espressione viene visualizzato nel tag out
  • Può sfuggire direttamente ai tag XML. Pertanto, non vengono valutati come tag effettivi

Sintassi:

  • Qui il valore rappresenta le informazioni sull'output ed è obbligatorio
  • L'impostazione predefinita è il mancato output delle informazioni e non è obbligatorio
  • escapeXML - È vero se sfugge ai caratteri XML.

Esempio:

Coretag_jsp1.jsp

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

Spiegazione del codice:

Riga codice 3: questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è "c". Quindi, può essere utilizzato come prefisso per tutti i coretag.

Riga di codice 12: qui stiamo usando coretag out con il prefisso "c" e questo out stamperà il valore nel tag di espressione. Quindi, l'output sarà name

Quando esegui il codice sopra, ottieni il seguente output:

Produzione:

  • Stiamo ottenendo il valore come nome dal tag principale "out" che verrà stampato nel flusso di output.

2. Cattura

  • Cattura qualsiasi eccezione lanciabile che si verifica nel corpo e viene visualizzata come output.
  • Viene utilizzato per gestire gli errori e per rilevarli.

Sintassi:

Qui var rappresenta il nome della variabile, che conterrà un'eccezione lanciabile.

Esempio:

<% @ 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"%> Tag principale JSP2 <% int num = 10/0; %>L'eccezione è: $ {guruException}

Spiegazione del codice:

Riga codice 3: questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è 'c', quindi può essere utilizzato come prefisso per tutti i tag coretag

Riga di codice 11-13: Coretag catch viene utilizzato per catturare l'eccezione e stampare l'eccezione. Qui l'eccezione viene sollevata quando 10/0 e quell'eccezione ha il nome "guruException".

Riga di codice 14: Stiamo stampando "guruException".

Quando esegui il codice, otterrai il seguente output:

Produzione:

  • Stiamo ottenendo l'eccezione aritmetica come / per zero e viene stampata nell'output utilizzando la variabile "guruException"

3. Importa

  • Possiamo importare un altro contenuto di file in una pagina JSP come abbiamo fatto in JSP include action.
  • Qui possiamo anche includere l'URL e il contenuto verrà visualizzato su quella pagina.

Sintassi:

Qui var è un nome di variabile che è un identificatore, che conterrà il nome del file / uri.

uri è il nome del file relativo o 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"%> Tag principale JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Inserisci il titolo qui  Il file viene visualizzato dopo l'importazione 

Spiegazione del codice:

Coretag_jsp31.jsp

Riga codice 3: questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è 'c', quindi può essere utilizzato come prefisso per tutti i tag coretag

Riga di codice 11-12: qui stiamo importando il file coretag_jsp32.jsp in questo file utilizzando il tag di importazione

Riga di codice 13: qui stiamo stampando il file coretag_jsp32.jsp usando il tag out.

Quando esegui il codice precedente, ottieni il seguente output.

Produzione:

  • Coretag_jsp32 viene stampato nell'output poiché questo file è stato importato in coretag_jsp31.jsp.

4. forEach

  • Viene utilizzato per iterare il numero di elementi in una serie di istruzioni.
  • È lo stesso di Java forloop.

Sintassi:

  • Qui var rappresenta il nome della variabile che conterrà il nome del contatore
  • Begin rappresenta il valore iniziale del contatore
  • End rappresenterà il suo valore finale

Esempio:

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

Spiegazione del codice:

Riga codice 3: questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è 'c', quindi può essere utilizzato come prefisso per tutti i tag coretag

Riga di codice 11-13: qui usiamo il ciclo "forEach" dove il nome della variabile è "gurucount", che ha iniziato a contare come 5 e alla fine conta come 10. Stiamo stampando la variabile gurucount che ha numeri che iniziano da 5 a 10.

Quando esegui il codice, ottieni il seguente output

Produzione:

  • L'output che stiamo ottenendo parte da 5 a 10.

5. Se

  • Viene utilizzato per le condizioni di test.
  • Se il tag viene utilizzato per testare una condizione se è vera o meno in base a questa, il blocco di codice verrebbe eseguito.

Sintassi:

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

Spiegazione del codice:

Riga codice 3: questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è 'c', quindi può essere utilizzato come prefisso per tutti i tag coretag

Riga di codice 11: qui stiamo impostando la variabile denominata come count a 100

Riga di codice 12-14: qui stiamo usando "if condition" dove stiamo controllando se il conteggio è uguale a 100. È uguale a 100 quindi otteniamo l'output come "Il conteggio è 100".

Quando esegui il codice precedente, ottieni il seguente output

Produzione:

  • Poiché la condizione "if" è vera, otteniamo l'output come "Il conteggio è 100".

6. reindirizzamento:

  • Viene utilizzato per reindirizzare la pagina corrente a un altro URL fornendo l'URL relativo di questo tag.
  • Supporta URL relativi al contesto

Sintassi:

Qui url è l'URL relativo a cui deve essere reindirizzato e il nome del contesto dell'applicazione web locale.

Esempio:

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

Spiegazione del codice:

Riga codice 3: questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è 'c', quindi può essere utilizzato come prefisso per tutti i tag coretag

Riga di codice 11: qui usiamo "redirect tag", dove stiamo specificando l'urlname, e quando clicchiamo su quella pagina reindirizza al sito che è stato dato per il reindirizzamento.

Quando esegui il codice precedente, ottieni il seguente output;

Produzione:

  • Otteniamo l'URL di output guru99.com che viene reindirizzato da coretag_jsp6.jsp

Tag personalizzati JSP

  • È un elemento del linguaggio JSP definito dall'utente.
  • Quando JSP viene tradotto in un servlet, il tag personalizzato viene convertito in una classe che esegue un'azione su un oggetto e viene chiamata come gestore di tag.
  • Quelle azioni quando viene eseguito il servlet vengono richiamate dal contenitore web.
  • Per creare il tag personalizzato definito dall'utente, dobbiamo creare il gestore di tag che estenderà il SimpleTagSupport e dovrà sovrascrivere il metodo doTag ().
  • Dobbiamo creare TLD dove abbiamo bisogno di mappare il file di classe in TLD.

Vantaggi dei tag personalizzati in JSP:

  • Portabile : un'azione descritta in una libreria di tag deve essere utilizzabile in qualsiasi contenitore JSP.
  • Semplice : gli utenti non sofisticati devono essere in grado di comprendere e utilizzare questo meccanismo. I fornitori di funzionalità JSP devono trovare facile renderlo disponibile agli utenti come azioni.
  • Espressivo : il meccanismo deve supportare un'ampia gamma di azioni, comprese azioni annidate, elementi di scripting all'interno di corpi di azione, creazione, utilizzo e aggiornamento di variabili di scripting.
  • Utilizzabile da diversi linguaggi di scripting - Sebbene la specifica JSP attualmente definisca solo la semantica per gli script nel linguaggio di programmazione Java, vogliamo lasciare aperta la possibilità di altri linguaggi di scripting.
  • Costruito su concetti e macchinari esistenti - Non vogliamo reinventare ciò che esiste altrove. Inoltre, vogliamo evitare conflitti futuri ogni volta che possiamo prevederli

Sintassi:

Considera che stiamo creando il tag testGuru e possiamo usare la classe taghandlertestTag, che sovrascriverà il metodo doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Inoltre, dovremo mappare questa classe testTag in TLD (Tag Library Descriptor) poiché il contenitore JSP creerà automaticamente una mappatura tra il file di classe e uri che è stato menzionato nel file TLD.

Interfaccia tag JSP

  • Questa classe dovrà estendere la classe SimpleTagSupport.
  • Questa classe dovrà sovrascrivere il metodo doTag () che fa parte della classe SimpleTagSupport (l'override è un metodo ereditato dalla classe genitore).
  • Questa interfaccia è un'interfaccia secondaria dell'interfaccia JSPTag.
  • Fornisce metodi da eseguire all'inizio e alla fine del tag.
  • Inoltre, dobbiamo mappare questa classe nel TLD, ovvero nel descrittore della libreria di tag

Stiamo considerando nell'esempio seguente

Metodo di interfaccia tag

  • doTag () è un metodo che dobbiamo sovrascrivere e che avrà il contenuto per il tag.
  • Prende il contesto JSP corrente utilizzando getJSPContext ()

Esempio:

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"%> Tag personalizzato 

Custom.tld

 1.0  2.0  Test TLD  guruTag  demotest.guruTag  vuoto 

guruTag.java (TagHandler)

demotest pacchetto;importare javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;public class guruTag estende SimpleTagSupport {public void doTag () genera JspException, IOException{Uscita JspWriter = getJspContext (). GetOut ();out.println ("Guru Tag");}}

Spiegazione del codice:

guruTag.java (TagHandler)

Riga di codice 6: la classe guruTag sta estendendo la classe SimpleTagSupport che è presente in javax.servlet.JSP jar

Riga di codice 7: qui stiamo sovrascrivendo il metodo doTag () che genera JspException e IOException.

Riga di codice 9-10: in questo metodo, il codice verrà incorporato nel tag personalizzato che verrà chiamato. Stiamo prendendo un oggetto di JspWriter e verrà stampato "Guru Tag".

Custom.tld

Riga di codice 6: qui il nome del tag personalizzato è "guruTag".

Riga di codice 7: la classe tag è taghandlerclass, ovvero guruTag.java. Accetta il percorso completo del file del gestore che include il percorso della directory della posizione del file.

Customtag_jsp1.jsp

Riga di codice 3 : questo prefisso taglib è richiesto per tutti i tag e il prefisso aggiunto è 'ex', quindi può essere utilizzato come prefisso per tutti i coretag e uri è custom.tld che mappa il gestore di tag.

Riga di codice 11: qui stiamo definendo il tag personalizzato "guruTag", che chiamerà il metodo doTag () della classe handler e verrà eseguito il codice al suo interno.

Quando esegui il codice precedente, ottieni il seguente output

Produzione:

  • Otteniamo l'output come "GuruTag" da guruTag.java cioè TagHandler, che sovrascrive il metodo doTag () e che stampa "Guru Tag" come output.

Sommario:

  • In questa sezione, abbiamo appreso della libreria di tag standard JSP in cui abbiamo creato tag principali e tag personalizzati.
  • I tag principali includono tag for, if, redirect, import, catch che erano tag utilizzati per scopi di base in JSP.
  • Inoltre, abbiamo creato tag personalizzati in cui possiamo definire i tag e usarli in JSP