(Anterior) Struts | Apéndice "A" (Siguiente) |
Utilidad.
A través de Tags hechos a medida es posible generar diversos comportamientos en ambientes JSP's colocando un simple Tag en lugar de escribir 100 o 200 lineas de código Java directamente en un JSP o Servlet. Inclusive "Struts" esta fuertemente basado en Tags hechos a medida, los Tags incluidos en las librerías logic
, html
y demás contienen cientos de lineas de código Java que ofrecen su funcionalidad a través de un simple Tag JSP.
Ante las facilidades ofrecidas por este tipo de Tags hechos a medida, la comunidad Java y Sun Microsystems tomaron nota y recientemente conformaron la especificación denominada JSTL-"Java Standard Tag Library" ( http://java.sun.com/products/jsp/jstl/ ) , a través de JSTL se intenta generar un standard para que determinados Tags hechos a medida se incorporen al diseño formal de aplicaciones Java (J2EE).
Al igual que los Tags incluidos en Struts y aquellos incorporados en JSTL, es posible diseñar cualquier tipo imaginable de Tag para emplearse en JSP's, inclusive hoy en día ya existe un depósito inmenso de Tags disponibles y Open-Source que ofrecen funcionalidades desde enviar correos, manipular XML, hasta manejo de Bases de Datos, este depósito es parte de un sub-proyecto de la fundación Apache llamado: Taglibs (http://jakarta.apache.org/taglibs) .
Composición de JSTL.
Debido a que JSTL es una especificación, al igual que un "Servlet Engine"/"Application Server", existen diversas implementaciones para su uso, en este curso será utilizada la distribución de la fundación Apache que puede ser descargada en : http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html .
JSTL en su versión más reciente (1.0) se encuentra compuesta por cuatro principales tipos de Tags descritos a continuación :
Core (c.tld) : Estos Tags como su nombre lo implica ("Core") conforman las funcionalidades básicas de JSTL, entre las que se encuentran: ciclos, definición de variables, condicionales y otras funcionalidades.
Formato (fmt.tld) : Este tipo de Tags son empleados para dar formato específico a elementos dentro de JSP's, estos formatos incluyen aquellos para Fechas, Monedas y Números, así como apoyo para formateo basado en el "Locale/i18n" (Lenguaje) del usuario.
XML (xml.tld) : Estos Tags son empleados para la manipulación de XML dentro de JSP's.
SQL (sql.tld) : Tags empleados para interactuar con Bases de Datos dentro de JSP's. NOTA: Basado en los principios "MVC", el uso de estos Tags en JSP's resulta en una pésima decisión de diseño, ya que se estaría mezclando el "M"odelo (Base de Datos) con la "V"ista de presentación (JSP)
Para utilizar Tags JSTL dentro de un JSP ("Java Server Page"), es necesario que estén presentes los siguientes elementos en la estructura de la aplicación (WAR-"Web-Archive") :
/WEB-INF/lib/jstl.jar: Este JAR contiene las clases empleadas por tags JSTL que corresponden a
javax.servlet.jsp.jstl.*
./WEB-INF/lib/standard.jar: Este JAR contiene la implementación de tags JSTL, en este caso de Apache.
Declaración en /WEB-INF/web.xml: También es necesario realizar las declaraciones correspondientes en el archivo principal de configuración
web.xml
, estas declaraciones ya fueron descritas en la configuración de Struts: web.xml con definición de Tags/Librerías ./WEB-INF/*.tld: Descripción del las librerías JSTL en un archivo
tld
, aquí se describe el nombre corto del Tag, la Clase Java y otros parámetros; estos archivos ya se incluyen en la distribución de JSTL.Declaración en JSP : Finalmente es necesario importar el Tag JSTL al JSP que hará uso de éste mediante el "Directive"
<%@ taglib %>
.
Uso de JSTL y Java Beans.
Al principio de este curso fue diseñado un JSP que realizaba una búsqueda en una Base de Datos y desplegaba sus resultados en una Tabla HTML, a continuación será re-diseñada esta aplicación para que emplee las facilidades de JSTL así como el uso de Java Beans:
Composición de Tags Hechos a Medida.
Para generar y utilizar un Tag hecho a medida se requieren los siguientes componentes:
Clase Java: Esta clase contiene la lógica de ejecución que será realizada por el Tag, una característica de esta Clase es que hereda ("inherit") el comportamiento de la clase llamada
TagSupport
.*.tld: Descripción del Tag en un archivo
tld
, aquí se describe el nombre corto del Tag, la Clase Java y otros parámetros; este archivo se incluye típicamente bajo el directorioWEB-INF
del "Web-Archive" que hará uso del Tag.Declaración en /WEB-INF/web.xml: También es necesario realizar las declaraciones correspondientes en el archivo principal de configuración
web.xml
, estas declaraciones ya fueron descritas en la configuración de Struts: web.xml con definición de Tags/Librerías .Declaración en JSP : Finalmente es necesario importar el Tag al JSP que hará uso de éste mediante el "Directive"
<%@ taglib %>
.
Tag de Bienvenida basado en tiempo del día.
Existen muchos sitios que despliegan el tiempo del día en una sección de su página. Para darle un toque "humano" a una página, el siguiente Tag genera un Saludo en base a la hora del Sistema.
De esta manera el usuario observará Buenos Días!, Buenas Tardes! o Buenas Noches! dependiendo de la hora que visite el sitio.
Tag para Verificar Registro.
En ocasiones, ciertas secciones de un sitio diseñadas alrededor de JSP's requieren que el visitante este registrado para observar el contenido, a través de un Tag hecho a medida es posible re-direccionar al usuario a cierta página de registro, todo a través de un simple tag colocado en la parte superior.
El diseño de este Tag gira alrededor de los conceptos de sesiones; se analiza la sesión del usuario buscando un determinado valor generado al registrarse, si no es encontrado este valor se redirecciona hacia la página de registro en caso contrario no ocurre ningún efecto.