Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
<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:
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:
• 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
caso general:
<taglib>
<taglib-uri>http://jakarta.apache.org/taglibs/{library}</taglib-uri>
<taglib-location>/WEB-INF/{library}.tld</taglib-location>
</taglib>
4. En la parte superior de su pagina JSP agregar una directiva <@ taglib> identificando la
URL de la biblioteca.
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>
<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 then
be 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">
Procesando la solicitud:
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
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>
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:
<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.