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.
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.
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>
|