Biblioteca de Etiquetas en Java
Click here to load reader
description
Transcript of Biblioteca de Etiquetas en Java
![Page 1: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/1.jpg)
Biblioteca de Etiquetas en JavaAutor: Hugo Flores
[email protected]://hpfloresj.blogspot.com
Fecha: 29-12-2008
Estamos acostumbrados a escribir código Java embebido en los JSP, llamados normalmente
scriptles, pero cuando nuestro proyecto vemos que es de gran escala, el mantenimiento de nuestra
aplicación se ve comprometida por la gran cantidad de líneas, algunas de ellas nos hacen perder la pista
de donde a ocurrido un error, es de indicar que las etiquetas como JavaBeans son limitadas y no tienen
ningún control sobre las páginas JSP, por ejemplo no tienen acceso a los objetos request y response.
Para limpiar un poco nuestro trabajo es donde aparecen las bibliotecas de etiquetas, que son un conjunto
de ficheros que nos proporcionan funcionalidades específicas. Veamos un ejemplo de lo que estamos
hablando:
<%@page import="java.util.*" %><%@page import="java.sql.*" %>
<html> <head> <title>JSP Page</title> </head> <body> <% String url = "jdbc.odbc.countrydb", user = "", pasw = ""; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection( url, user, pasw ); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from countries"); while( rs.next() ){ String result = rs.getString("name"); %> <%= result %> <br> <% } rs.close(); }catch( SQLException sqle ){ sqle.printStackTrace(); } %> </body></html>
Código Nº 1: Sentencias Scriptles
Ahora comparemos el siguiente código:
<%@taglib uri="getCountriesTag" prefix="countryTag" %><html> <countryTag:getCountries /></html>
Código Nº 2: Sentencias Tags
![Page 2: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/2.jpg)
Existen tres partes importantes para comprender una biblioteca de etiquetas:
Clases manipuladoras de etiquetas
Proporciona funcionalidad de las etiquetas
Descriptor de biblioteca de etiquetas (TLD)
Fichero XML que describe las etiquetas y las hace coincidir con las clases manipuladoras.
La directriz tablib
Directriz situada en la parte superior del JSP que permite utilizar una biblioteca en particular.
Manipuladores de etiquetas
Un manipulador de etiquetas no es más que una clase especial que contiene el código necesario para
ejecutar las etiquetas, en otras palabras la funcionalidad de la etiqueta se encuentra en el manipulador de
etiquetas.
Existe un manipulador de etiquetas para cada etiqueta a medida.
El motor JSP necesita saber que manipulador de etiquetas corresponde a unas etiquetas y que
métodos llamar, todo esto se encuentra en el fichero TLD.
TLD
Es un documento XML que contiene información sobre una o más etiquetas a medida.
Se guarda por lo general con extensión .tld en el directorio WEB-INF.
La directriz Taglib
Para poder utilizar una biblioteca de etiquetas se debe de declarar la etiqueta tablib:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
uri: identifica la biblioteca, ayuda a documentar el origen de uso, el sistema no intenta
acceder a la URL, pero opcionalmente puede apuntar a una ruta a un fichero TLD, el sistema
intenta cargarlo.
El motor JSP busca el uri y luego el descriptor de etiquetas para luego poder utilizarlo.
prefix: se utiliza para identificar una etiqueta en una página JSP como parte de una biblioteca
en particular.
Si tenemos una etiqueta con nombre miEtiqueta y un prefijo miPrefijo, la etiqueta se escribiría:
<miPrefijo:miEtiqueta />
Uso de la Biblioteca de Etiquetas Request
![Page 3: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/3.jpg)
Esta biblioteca forma parte del proyecto Jakarta, utilizadas para acceder a la información sobre la petición
http.
Para empezar tenemos que descargar la última versión de esta biblioteca, para este ejemplo usaremos jakarta-taglibs-request-1.0.1.tar.gz: El archivo estará en formato compreso, descomprima en un lugar adecuado, y contiene los siguientes archivos:
taglibs-request.tld. Es el descriptor de despliegue de la biblioteca de etiquetas, generalmente
ubicado en /WEB-INF/ y referenciado mediante la etiqueta <taglib> en el descriptor /WEB-
INF/web.xml
taglibs-request.jar. El fichero JAR contiene todas las clases y recursos de asociaciones que
comprenden la biblioteca de etiquetas, este fichero generalmente es copiado al subdirectorio /WEB-
INF/lib
request-doc.war Contiene la documentación de la biblioteca
request-examples.war Contiene ejemplo de aplicación web.
Usando una biblioteca de etiquetas en su aplicación
Realice los siguientes pasos para utilizar uno o más etiquetas personalizadas:
1. copiar taglibs-request.tld al subdirectorio /WEB-INF de su aplicación web.
2. copiar taglibs-request.jar al subdirectorio /WEB-INF/lib de su aplicación web.
3. para cada biblioteca de etiquetas que piense en utilizar agregar <taglib> al descriptor de
despliegue /WEB-INF/web.xml, como ejemplo general:
caso general:<taglib>
<taglib-uri>http://jakarta.apache.org/taglibs/{library}</taglib-uri><taglib-location>/WEB-INF/{library}.tld</taglib-location>
</taglib>
caso específico: es el que usaremos.
<taglib><taglib-uri>http://jakarta.apache.org/taglibs/request-1.0</taglib-uri><taglib-location>/WEB-INF/taglibs-request.tld</taglib-location>
</taglib>
4. En la parte superior de su pagina JSP agregar una directiva <@ taglib> identificando la
URL de la biblioteca.
<%@ taglib uri="http://jakarta.apache.org/taglibs/request-1.0" prefix="req" %>
5. Para utilizar una etiqueta de la biblioteca simplemente incluir el prefijo e incluir el nombre del
atributo, en el ejemplo sea x el prefijo y magic la etiqueta
<x:magic/>
![Page 4: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/4.jpg)
Si la etiqueta necesita atributos y texto en el cuerpo:
<x:magic id=”beanName” name=”xyz”>Algún texto que necesite…
<x:magic/>
Lo que haremos es lo siguiente:
a. crearemos una carpeta de nombre “etiquetas” en el sud-directorio de %CATALINA_HOME%\
webaspps de nuestro servidor Tomcat.
b. Copiar el fichero request-examples.war al directorio “etiquetas” y ejecutar el comando jar xvf
request-examples.war, con esto tendremos nuestro ejemplo preparado.
Si todo esta bien podremos ver la siguiente figura en nuestro navegador:
Figura 1: Ejemplo de TagLib Request
Esta página index.html contiene un formulario web con un conjunto de campos de entrada ocultos. De
manera que cuando se envíe el formulario es enviado con parámetros de petición, haciendo click en
SUBMIT.
index.html
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html><head>
![Page 5: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/5.jpg)
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="#FFFFFF">
<center><h1>Jakarta REQUEST Taglib Example</h1></center><br><p>This page includes a number of hidden input paramters that can thenbe seen when viewing the request.jsp example page.<br><br><form action="request.jsp" method="POST"><input type="hidden" name="test1" value="This is a test"><input type="hidden" name="test2" value="This is another test"><input type="hidden" name="test3" value="This is a third test"><input type="hidden" name="test3" value="Third test with multiple values"><input type="hidden" name="test4" value="AAbb">
Select the <input type="submit" name="submit" value="SUBMIT"> button tosee the output from the request.jsp example page.</form><br>See the source from the <a href="request.html">request.jsp</a> example page.</body></html>
Procesando la solicitud:
Figura 2: Procesamiento de la solicitud.
Funcionamiento:
![Page 6: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/6.jpg)
Cuando se hace clic en submit se envía a un formulario a response.jsp, examinemos el código de
request.jsp:
Tenemos que observar primero la declaración de la librería:
<%@ taglib uri="http://jakarta.apache.org/taglibs/request-1.0" prefix="req" %>
El valor de uri le dice al contenedor JSP cual es el único identificador para la biblioteca, y el prefijo req le
dice también que las etiquetas que tengan dicho prefijo forman parte de la biblioteca.
Luego analicemos:
<req:parameters id="param"> <jsp:getProperty name="param" property="name"/> = <jsp:getProperty name="param" property="value"/></req:parameters>
Hay dos etiquetas que utilizamos en trazo, <req:parameters>, <jsp:getProperty>, deberiamos reconocer el
segundo, es una directiva propia de JSP.
Salida HTML:
GET or POST Parameters received with request:
test4 = AAbb
test3 = This is a third test
test2 = This is another test
test1 = This is a test
submit = SUBMIT
La primera etiqueta hace un bucle para todos los parámetros recibidos en la petición http, para cada
parámetro se obtiene el nombre y se muestra su valor.
Analicemos:
See if test1 parameter exists<req:existsParameter name="test1"> test1=<req:parameter name="test1"/></req:existsParameter><req:existsParameter name="test1" value="false"> Parameter test1 does not exist.</req:existsParameter>
Este codigo produce la salida:
See if test1 parameter exists
test1=This is a test
Esta etiqueta le permite tomar decisiones en la pagina JSP, sin tener que saber nada de Java, si el
parámetro existe o no, manda un mensaje en pantalla.
En el contenedor
Una vez declarada la biblioteca en el descriptor de despliegue web.xml, veamos un poco el fichero TLD:
![Page 7: Biblioteca de Etiquetas en Java](https://reader038.fdocuments.co/reader038/viewer/2022100517/5571f24849795947648c6b8b/html5/thumbnails/7.jpg)
<tag> <name>parameters</name> <tagclass>org.apache.taglibs.request.ParametersTag</tagclass> <teiclass>org.apache.taglibs.request.ParametersTEI</teiclass> <bodycontent>JSP</bodycontent> <attribute> <name>id</name> <required>yes</required> <rtexprvalue>no</rtexprvalue> </attribute> <attribute> <name>name</name> <required>no</required> <rtexprvalue>no</rtexprvalue> </attribute> </tag>
Como observamos se define la etiqueta, y luego la clase manipulador de etiquetas, las otras partes de la
definición describen el contenido de la etiqueta y sus atributos.
Hasta aquí hemos visto una introducción a los Tags Libraries. ;D