Concetto: Tag personalizzato JSP (Java Server Page)
Questa linea guida fornisce una panoramica tecnica di tag personalizzati, un meccanismo per l'estensione di JSP API.
Relazioni
Elementi correlati
Descrizione principale

Introduzione

I tag personalizzati costituiscono un meccanismo per l'estensione di JSP API e consentono estensioni esplicative delle pagine JSP. I tag JSP vengono implementati in Java, ma attivati in JSP mediante tag simili a quelli HTML. A differenza di questi ultimi, i tag JSP vengono processati dal server e non dal browser del client.

I tag personalizzati forniscono una chiara separazione di responsabilità tra i progettisti Web (sviluppatori JSP) e i programmatori Java. I programmatori Java implementano i tag JSP personalizzati. I progettisti Web selezionano esplicitamente questi tag per attivare l'implementazione Java.

Il progettista JSP "richiama" il codice Java dichiarando i tag e lo sviluppatore Java crea il codice nei gestori di tag, come mostrato nel diagramma seguente.

Diagramma descritto nel testo di accompagnamento.

Per fornire un tag personalizzato, lo sviluppatore Java deve creare due cose:

Gestore di tag

Un gestore di tag è una classe che implementa l'interfaccia di tag. Le due seguenti classi di librerie facilitano la creazione di gestori di tag: javax.servlet.jsp.TagSupport e javax.servlet.jsp.BodyTagSupport. La classe TagSupport viene utilizzata per i tag che non hanno un corpo mentre BodyTagSupport per i tag che hanno un corpo.

Di seguito viene riportato un esempio dell'implementazione più semplice di un gestore di tag.

Diagramma descritto nel testo di accompagnamento.

Descrittore della libreria di tag

Per consentire ad un JSP di utilizzare tag personalizzati JSP si deve creare un descrittore della libreria di tag, un file XML distribuito sul server Web insieme ai gestori di tag.

Di seguito viene riportato un file semplice di un descrittore della libreria di tag contenente un descrittore della libreria di tag HelloWorld.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLScheme-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>simp</short-name>
<uri> http://www.inferdata.com/taglib/hello-world</uri>
<description>Simple example of a JSP custom tag</description>
<tag>
<name>hello</name>
<tag-class>com.inferdata.taglib.HelloWorld</tag-class>
<body-content>empty</body-content>
<description>Simple hello world tag</description>
</tag>
</taglib>