Tecnología

Inicio

Tutorial sobre JSP etiquetas personalizadas

Las etiquetas personalizadas en Java Server Pages (JSP) son etiquetas XML que se crean para llevar a cabo las acciones personalizadas en una página JSP. Las etiquetas personalizadas separan el diseño y el diseño de una página JSP desde el código Java que impulsa a la acción. El uso de etiquetas personalizadas hace que sus páginas JSP más legible, permite reutilizar código, y hace que su aplicación más fácil de mantener. Los diseñadores Web pueden utilizar su código sin saber nada acerca de Java, simplemente usando las etiquetas personalizadas que diseñó en sus páginas JSP.

Estructura de encargo etiqueta

Las etiquetas personalizadas siguen las reglas de sintaxis XML, siguiendo la siguiente estructura básica:
<Prefijo: tagName atributo1 = "valor1" atributo2 = "valor2" ...>
cuerpo
</ Prefijo: tagName>

La etiqueta personalizada más básico, llamado etiqueta simple, no tiene cuerpo y no requiere de atributos. Una etiqueta personalizada que contiene un cuerpo se llama un cuerpo de la etiqueta. Las etiquetas personalizadas se pueden anidar. Los valores de atributos se pueden establecer mediante expresiones JSP. Hay dos componentes básicos que se construye para crear una etiqueta personalizada: el archivo descriptor de la biblioteca y de la clase Java controlador de etiqueta. Estos componentes están registrados en el contenedor de servlets en el archivo web.xml de la aplicación.

Crear la biblioteca de etiquetas de descriptores de archivos

El archivo descriptor de biblioteca de etiquetas (TLD) es un archivo XML que contiene metadatos que definen sus etiquetas personalizadas. Por ejemplo, el siguiente archivo TLD define una etiqueta simple denominada "myTag" con un atributo, "maxValue," y no hay cuerpo. Se requiere el atributo maxValue, y el valor se puede ajustar mediante una expresión de tiempo de ejecución (establecido por el elemento rtexprvalue), que debe devolver un entero.

<? Xml version = \ "1.0 \" encoding = \ "ISO-8859-1 \"?>
<! DOCTYPE taglib PÚBLICA \ "- // Sun Microsystems, Inc.//DTD JSP Tag
Biblioteca 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>
<Nombre corto> ejemplo </ nombre corto>
<Uri> </ uri>
<Description> Ejemplo biblioteca etiqueta </ ​​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>

Crear el controlador de etiqueta

Cada etiqueta personalizada tiene un controlador de etiqueta que establece y obtiene sus atributos, procesa el cuerpo, e implementa la acción. Un controlador de etiqueta es una clase Java que implementa javax.servlet.jsp.tagext.Tag o, mejor aún, se extiende una subclase de la etiqueta. clases de controlador de etiquetas tienen acceso a los mismos objetos implícitos como las páginas JSP, tales como la petición, respuesta y sesión.

Crear un simple clase de controlador de etiquetas mediante la ampliación de javax.servlet.jsp.tagext.TagSupport. Implementar el doStartTag, doEndTag, y liberar métodos. El doStartTag se ejecuta cuando se encuentra la etiqueta de inicio, y lleva a cabo la acción principal de la etiqueta, tales cálculos rendimiento y la impresión de los resultados.

public int doStartTag () {lanza JspException

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

IR
}

El método doEndTag se ejecuta cuando se encuentra la etiqueta final. Volver EVAL_PAGE si el resto de la página JSP se va a evaluar. El método de liberación debe limpiar y liberar todos los recursos utilizados por la clase de controlador de etiquetas.

Si su etiqueta personalizada tiene atributos, incluir una variable miembro y aplicar conjunto y obtener métodos para cada atributo. Si no se requiere el atributo, establecer un valor predeterminado. Para el atributo maxValue requerido:

private int maxValue
IR

pública setMaxValue void (int val) {

maxValue = val

IR
}
public int getMaxValue () {

return maxValue

IR
}

controladores de etiquetas cuerpo que no interactúan con el contenido del cuerpo de la etiqueta se extienden javax.servlet.jsp.tagext.TagSupport. Aplicar los mismos métodos que para una simple etiqueta. También poner en práctica el método doAfterBody para analizar y utilizar el contenido del cuerpo. Para controladores de etiquetas cuerpo que necesitan para interactuar con el contenido del cuerpo de la etiqueta, se extienden javax.servlet.jsp.tagext.BodyTagSupport y tanto los métodos doInitBody y doAfterBody.

actualización web.xml

Una vez que haya creado el archivo de dominio de primer nivel y la clase de controlador de etiquetas, editar el archivo web.xml para registrar su nueva biblioteca de etiquetas con el contenedor de servlets. Añadir una sección taglib al final antes de la etiqueta de cierre </ webapp>:

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

Utilice su encargo Etiquetas

En el archivo JSP que utilice sus etiquetas personalizadas, utilice la directiva taglib para indicar la biblioteca de etiquetas que va a utilizar y el prefijo que usará para hacer referencia a la biblioteca. Puede referirse tanto a la biblioteca URI utilizando la ruta:

<% @ Taglib uri = \ "/ WEB-INF / exampletaglib.tld \" prefix = \ "por ejemplo, \"%>

o el nombre que ya ha proporcionado en web.xml como el taglib-uri:

<% @ Taglib uri = \ "mytags \" prefix = \ "por ejemplo, \"%>

Utilice su etiqueta personalizada en su JSP en el que desea que la acción ocurra, utilizando el prefijo que ya ha proporcionado a la directiva taglib:

<Por ejemplo: myTag maxValue = "40" />