Tutorial su JSP tag personalizzati

August 20

tag personalizzati in JavaServer Pages (JSP) sono tag XML creati per eseguire azioni personalizzate in una pagina JSP. tag personalizzati separano il design e il layout di una pagina JSP dal codice Java che guida l'azione. Utilizzando tag personalizzati rende le pagine JSP più leggibile, consente di riutilizzare il codice, e rende l'applicazione più gestibile. Web designer possono utilizzare il codice senza sapere nulla di Java semplicemente utilizzando i tag personalizzati progettati nelle loro pagine JSP.

Personalizzato Tag Struttura

tag personalizzati seguono regole di sintassi XML, seguendo la seguente struttura di base:
<Prefisso: tagName attributo1 = "valore1" attributo2 = "valore2" ...>
corpo
</ Prefisso: tagName>

Il tag personalizzato più elementare, chiamato un semplice tag, non ha corpo e non richiede attributi. Un tag personalizzato contenente un corpo è chiamato un tag body. tag personalizzati possono essere nidificate. I valori degli attributi possono essere impostati utilizzando espressioni JSP. Ci sono due componenti di base si costruisce per creare un tag personalizzato: il file descrittore della libreria di tag e la classe Java tag handler. Questi componenti sono registrati con il contenitore di servlet nel file web.xml dell'applicazione.

Creare il tag del file descrittore libreria

Il file di libreria di tag descrittore (TLD) è un file XML contenente i metadati che definisce i tag personalizzati. Ad esempio, il seguente file TLD definisce un semplice tag denominato "myTag" con un attributo, "maxValue," e nessun corpo. è richiesto L'attributo maxValue, e il valore può essere impostato utilizzando un'espressione di runtime (impostato dall'elemento rtexprvalue), che deve restituire un numero intero.

<? Xml version = \ "1.0 \" encoding = \ "ISO-8859-1 \"?>
<! DOCTYPE taglib PUBLIC \ "- // Sun Microsystems, Inc.//DTD JSP Tag
Library 1.2 // EN \ "\" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd\&quot;>
<Taglib>
<Tlib-version> 1.0 </ tlibversion>
<Jsp-version> 2.0 </ jspversion>
<Short-name> es </ nome breve>
<Uri> </ uri>
<Description> libreria di tag Esempio </ description>

<Tag>

&lt;name>myTag&lt;/name>
&lt;tag-class>tags.myTag&lt;/tagclass>
&lt;body-content>empty&lt;/bodycontent>
&lt;description>Custom tag with an attribute&lt;/description>
&lt;attribute>
&lt;name>maxValue&lt;/name>
&lt;required>true&lt;/required>
&lt;rtexprvalue>true&lt;/rtexprvalue>
&lt;type>int&lt;/type>
&lt;/attribute>

</ Tag>
</ Taglib>

Creare il tag handler

Ogni tag personalizzato ha un tag handler che imposta e ottiene i suoi attributi, elabora il corpo, e attua l'azione. Un gestore tag è una classe Java che implementa javax.servlet.jsp.tagext.Tag o, meglio ancora, si estende una sottoclasse di tag. classi tag handler hanno accesso agli stessi oggetti impliciti come pagine JSP, come la richiesta, la risposta, e la sessione.

Creare una semplice classe tag handler estendendo javax.servlet.jsp.tagext.TagSupport. Implementare il doStartTag, doEndTag, e rilasciare i metodi. Il doStartTag viene eseguito quando si incontra il tag iniziale, ed esegue l'azione principale del tag, questi calcoli performanti e la stampa dei risultati.

public int doStartTag () genera JspException {

try {
… your code …
}
catch (Exception ex) {
… error handling …
}
return SKIP_BODY

ANDARE
}

Il metodo doEndTag viene eseguito quando si incontra il tag di chiusura. Ritorno EVAL_PAGE se il resto della pagina JSP deve essere analizzato. Il metodo di rilascio dovrebbe ripulire e liberare tutte le risorse utilizzate dalla classe tag handler.

Se il tag personalizzato ha attributi, includere una variabile membro e realizzare insieme e ottenere metodi per ogni attributo. Se non è richiesta l'attributo, impostare un valore predefinito. Per l'attributo maxValue richiesta:

private int maxValue
ANDARE

setMaxValue public void (int val) {

maxValue = val

ANDARE
}
public int getMaxValue () {

return maxValue

ANDARE
}

gestori di tag body che non interagiscono con il contenuto del corpo del tag estendono javax.servlet.jsp.tagext.TagSupport. Implementare gli stessi metodi per un semplice tag. Anche implementare il metodo doAfterBody per analizzare e utilizzare il contenuto del corpo. Per i gestori di tag corpo che hanno bisogno di interagire con il contenuto del corpo del tag, estendere javax.servlet.jsp.tagext.BodyTagSupport ed entrambi i metodi doInitBody e doAfterBody.

Aggiornamento web.xml

Dopo aver creato il file TLD e tag classe handler, modificare il file web.xml per registrare la nuova libreria di tag con il servlet container. Aggiungi una sezione taglib alla fine prima del tag di chiusura </ webapp>:

&lt;taglib>
&lt;taglib-uri>mytags&lt;/taglib-uri>
&lt;taglib-location>/WEB-INF/exampletaglib.tld&lt;/taglib-location>
&lt;/taglib>

Utilizzare i tag personalizzati

Nel file JSP che utilizzerà i tag personalizzati, utilizzare la direttiva taglib per indicare la libreria di tag che verrà utilizzato e il prefisso che verrà utilizzato per fare riferimento alla libreria. Si sia possibile fare riferimento alla uri libreria utilizzando il percorso:

<% @ Taglib uri = \ "/ WEB-INF / exampletaglib.tld \" prefix = \ "per esempio \"%>

oppure il nome che hai fornito in web.xml come taglib-uri:

<% @ Taglib uri = \ "mytags \" prefix = \ "per esempio \"%>

Usa il tuo tag personalizzato nel vostro JSP in cui si desidera che l'azione avvenga, utilizzando il prefisso che hai fornito alla direttiva taglib:

<Ad esempio: myTag maxValue = "40" />