Nwlapcug.com


Tutorial su tag JSP personalizzati

Tag personalizzati in JavaServer Pages (JSP) sono tag XML si crea per eseguire azioni personalizzate in una pagina JSP. Tag personalizzati separare il design e il layout di una pagina JSP dal codice Java che spinge all'azione. Utilizzo di tag personalizzati rende più leggibili le pagine JSP, consente di riutilizzare il codice e rende l'applicazione più gestibile. Web designer può utilizzare il codice senza sapere nulla di Java semplicemente utilizzando i tag personalizzati che sono stati progettati in loro pagine JSP.

Struttura dei Tag personalizzati

Tag personalizzati attenersi alle regole di sintassi XML, seguendo la struttura di base seguente:
< prefisso: tagName attributo1 = "value1" attributo2 = "value2"... >
corpo
< / prefisso: tagName >

Il più semplice custom tag, chiamato un semplice tag, non ha corpo e non richiede attributi. Un tag personalizzato contenente un corpo viene chiamato un tag body. Tag personalizzati possono essere nidificati. Valori di attributo possono essere impostati utilizzando espressioni di JSP. Ci sono due componenti di base si genera per creare un tag personalizzato: il file descrittore della libreria di Tag e il gestore di tag classe Java. Questi componenti sono registrati con il contenitore di servlet nel file Web. XML dell'applicazione.

Creare il Tag Library Descriptor File

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

<? xml version=\"1.0\" codifica = \ "ISO-8859-1. \"? >
<! DOCTYPE taglib pubblica \"-//Sun Microsystems, Tag JSP Inc.//DTD
Libreria 1.2 / / EN\ "\" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd \ & quot; >
< taglib >
< tlib-versione > 1.0 < / tlibversion >
< jsp-versione > 2.0 < / jspversion >
< nome breve > eg < / shortname >
< uri >< / uri >
Biblioteca di < descrizione > etichetta di esempio < / descrizione >

< 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 gestore di Tag

Ciascun tag personalizzato ha un gestore di tag che imposta e ottiene i suoi attributi, i processi del corpo e implementa l'azione. Un gestore di tag è una classe Java che implementa javax.servlet.jsp.tagext.Tag o, meglio ancora, si estende una sottoclasse di Tag. Classi del gestore di tag hanno accesso agli stessi oggetti impliciti come pagine JSP, ad esempio request, response e sessione.

Creare una classe del gestore semplice tag estendendo javax.servlet.jsp.tagext.TagSupport. Implementare il doStartTag, doEndTag e metodi di rilascio. Il doStartTag viene eseguito quando il tag di inizio viene rilevato ed esegue l'azione principale del tag, tali calcoli e stampa i risultati.

genera/public int doStrtTag () {JspException

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

VAI
}

Quando viene incontrato il tag di fine, viene eseguito il metodo doEndTag. Restituire EVAL_PAGE se il resto della pagina JSP deve essere valutata. Il metodo release dovrebbe ripulire e rilasciare tutte le risorse utilizzate dalla classe del gestore di tag.

Se il tuo tag personalizzato ha attributi, includono una variabile membro e implementare insieme e ottenere metodi per ogni attributo. Se l'attributo non è necessaria, impostare un valore predefinito. Per l'attributo maxValue richiesto:

private int maxValue
VAI

public void setMaxValue (int val) {

maxValue = val

VAI
}
public int getMaxValue () {

return maxValue

VAI
}

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

Aggiornamento Web. XML

Dopo aver creato la classe del gestore TLD file e tag, modificare il file Web. XML per registrare la nuova libreria di tag con il contenitore di servlet. Aggiungere una sezione di taglib alla fine prima del tag di fine < / webapp >:

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

Utilizzare tag personalizzati

Nel file JSP che utilizzerà tag personalizzati, è possibile utilizzare la direttiva taglib per indicare la libreria di tag che si prevede di utilizzare e il prefisso che verrà utilizzato per fare riferimento alla libreria. È possibile sia fare riferimento vostro URI di libreria utilizzando il percorso:

< % @ taglib uri=\"/WEB-INF/exampletaglib.tld\" prefisso = \ "eg\" % >

o il nome fornito in Web. XML come taglib-uri:

< % @ taglib uri = \ "mytags\" prefisso = \ "eg\" % >

Utilizzare il tag personalizzato nel tuo JSP dove si desidera che l'azione accada, utilizzando il prefisso specificato per la direttiva taglib:

< eg: myTag maxValue = "40" / >