He estado programando con JSP y ASP durante mucho tiempo. Entre estas dos soluciones de programación del lado del servidor, siento cada vez más que JSP es mucho más poderoso que ASP. ¿Por qué debería elegir JSP como mi herramienta preferida de desarrollo de aplicaciones web del lado del servidor? Por supuesto, JSP tiene muchas características y funciones fascinantes, pero la biblioteca de etiquetas de JSP fue una de las razones más importantes para tomar esta decisión.
¿Por qué dices esto? Las razones son dos: mantenimiento y velocidad de desarrollo. Los lenguajes de secuencias de comandos del lado del servidor son en realidad el crisol del desarrollo de Internet. En una página de servidor, puede mezclar fácilmente varios métodos y objetos de script. Este tipo de página es simplemente lo concreto para construir la Web. Es esta mezcla de "cosas" la que proporciona a los scripts del lado del servidor potentes capacidades de procesamiento de información. Permite a los programadores del lado del servidor desarrollar páginas web dinámicas y flexibles. Pero, por otro lado, la libre mezcla de guiones también tiene sus desventajas, y es que es muy problemático de mantener, especialmente cuando el tamaño del proyecto sigue creciendo. Para empeorar las cosas, a medida que aumenta la complejidad del código, la velocidad de desarrollo se ralentizará, lo que no favorece el desarrollo de aplicaciones web de tamaño mediano y grande. Muchas aplicaciones web del lado del servidor de tamaño mediano o grande. se lanzan muy tarde y el coste es elevado, incontrolable. Además, una vez desarrollado, el sitio aún necesita encontrar programadores calificados para mantener estos códigos bastante complejos. Como resultado, estos programadores se convierten en diseñadores web generales y la aplicación del lado del servidor juega un papel clave tanto en el diseño gráfico final como en la implementación. Está debilitado.
Para superar este problema, ASP introdujo la tecnología de objetos COM, mientras que JSP proporcionó J2EE como contramedida. Estas soluciones se basan en mecanismos de bases de código centralizadas y reutilizables. Sin embargo, son demasiado difíciles de usar y lleva mucho tiempo aprenderlos. Además, estas soluciones no reducen la tentación de crear código desordenado y, como resultado, tenemos que organizar equipos de desarrollo grandes y bien estructurados para utilizar estas tecnologías. Para proyectos de tamaño mediano, estos métodos generalmente se usan menos, pero de hecho, los proyectos de aplicaciones web de tamaño mediano son los más comunes. Como resultado, muchos proyectos se ven obligados a utilizar un entorno de desarrollo y mantenimiento que no satisface sus necesidades.
Afortunadamente, JSP proporciona una mejor manera de resolver este problema. Las bibliotecas de etiquetas proporcionan una forma sencilla de crear bloques de código reutilizables. Una vez diseñada una biblioteca de etiquetas, se puede volver a utilizar en muchos proyectos. Lo que es aún más conveniente es que, a diferencia de COM y J2EE, siempre que sepa escribir JSP, no necesita aprender ninguna otra habilidad para crear una biblioteca de etiquetas. Finalmente, las bibliotecas de etiquetas también mejoran la capacidad de mantenimiento de las aplicaciones web. Esta mejora en la capacidad de mantenimiento se refleja en la fácil implementación de interfaces personalizables basadas en XML en páginas JSP. Como resultado, los diseñadores web pueden crear aplicaciones web JSP sin saber qué es JSP. De esta forma, el desarrollo web se convierte en una tarea de desarrollo en equipo muy eficiente. Los programadores JSP pueden crear etiquetas personalizadas y módulos de código back-end, mientras que los diseñadores web pueden usar etiquetas personalizadas y centrarse completamente en el diseño web en sí. La biblioteca de etiquetas resuelve el problema de la confusión del código y lo hace de manera limpia y hermosa (de hecho, XML es la esencia para resolver estos problemas, pero la biblioteca de etiquetas aún juega un papel clave).
¿Qué es una biblioteca de etiquetas?
La biblioteca de etiquetas JSP (también llamada biblioteca de etiquetas personalizadas) puede verse como un método para generar scripts basados en XML a través de JavaBeans. Conceptualmente, las etiquetas son estructuras de código simples y reutilizables. Por ejemplo, en nuestra última versión de JSPKit (dentro de JSP Insider), se puede acceder fácilmente a los documentos XML mediante etiquetas XML. Consulte la Lista A a continuación.
Listado A: Etiquetas de ejemplo que realizan transformaciones XML/XSL y las páginas HTML que contienen
<%@ taglib uri=" http://www.jspinsider.com/jspkit/JAXP " prefix="JAXP"%>
<JAXP:Etiqueta del transformador>
<JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile>
<JAXP:XSLFile>c:/xml/ejemplo.xsl</JAXP:XSLFile>
</JAXP:TransformerTag>
El ejemplo anterior utiliza etiquetas simples para acceder al código más potente detrás de escena. La parte de etiqueta de la declaración primero carga un archivo XML y luego aplica un archivo XSL para transformar el contenido del archivo XML en un determinado. formato de representación y enviado al cliente, todo esto es sólo mediante una etiqueta muy simple. Las etiquetas personalizadas facilitan la creación de módulos de código abierto reutilizables en proyectos JSP, y todo lo que necesita es una biblioteca de etiquetas y su documentación.
Características importantes de la biblioteca de etiquetas
1. Fácil de instalar en múltiples proyectos Las etiquetas se pueden migrar fácilmente de un proyecto JSP a otros proyectos. Una vez que cree una biblioteca de etiquetas, simplemente empaquete todo en un archivo JAR que pueda reutilizar en cualquier proyecto JSP. Las bibliotecas de etiquetas se están volviendo cada vez más populares porque las etiquetas se pueden reutilizar y utilizar fácilmente en sus propios proyectos. Actualmente, el mejor recurso de etiquetas se puede encontrar en JSPTags.com.
2. La biblioteca de etiquetas JSP extendida puede tener cualquier característica y función en la especificación JSP (JSP 1.2. Puede ampliar y aumentar las funciones de JSP sin límite sin esperar a que aparezca la próxima versión de JSP). Por ejemplo, no está satisfecho con la llamada de inclusión JSP. Puede crear sus propias etiquetas de inclusión que apliquen sus propias especificaciones.
3. Fácil de mantener
La biblioteca de etiquetas hace que las aplicaciones web JSP sean muy fáciles de mantener por las siguientes razones:
(1) La aplicación de etiquetas es simple y fácil de usar y comprender para cualquiera.
(2) Todos los códigos lógicos del programa se concentran en el procesador de etiquetas y JavaBeans. Esto significa que cuando actualiza el código, no necesita modificar cada página que usa el código. Solo necesita modificar los archivos de código centralizados.
(3) Si necesita agregar nuevas funciones, no necesita modificar ninguna página existente. Puede agregar atributos adicionales a las etiquetas para introducir nuevos comportamientos, mientras que otros atributos antiguos permanecen sin cambios, de modo que todas las páginas antiguas aún se puedan usar. Funciona normalmente. Por ejemplo, tienes una etiqueta que hace que todo el texto sea azul:
<BlueText>Mi texto</BlueText>
Pero más adelante en el proyecto querrás que el azul sea más oscuro. Puede conservar la etiqueta original y simplemente agregarle un nuevo atributo: sombra, como se muestra a continuación:
<BlueText shade="teal">Mi texto</BlueText>
Todas las etiquetas antiguas aún pueden producir texto azul, pero ahora puedes usar la misma etiqueta para producir texto azul oscuro.
(4) Las etiquetas mejoran la reutilización del código. El código que ha sido probado y utilizado muchas veces definitivamente tendrá menos errores. Por lo tanto, las páginas JSP que utilizan etiquetas personalizadas también tienen menos defectos y, naturalmente, son mucho más cómodas de mantener.
4. La biblioteca de etiquetas de tiempo de desarrollo rápido proporciona una manera fácil de reutilizar el código. Una de las formas estándar de reutilizar código en lenguajes del lado del servidor es utilizar plantillas. En comparación con el uso de bibliotecas de plantillas, las bibliotecas de etiquetas son una mejor solución. Con una biblioteca de plantillas, debe modificar las plantillas o crear una interfaz estricta para cada proyecto, mientras que la biblioteca de etiquetas no tiene estas restricciones y tiene todos los beneficios de la orientación a objetos, puede ser flexible y más extensible y, al reutilizar código, puede dedicar menos tiempo al desarrollo y más tiempo al diseño de su aplicación web. La interfaz de la biblioteca de etiquetas también es muy simple, lo que hace que sea muy fácil de insertar, usar y depurar.
Estructura de etiquetas
Aunque la biblioteca de etiquetas es muy fácil de usar, el mecanismo de implementación interna para establecer una biblioteca de etiquetas sigue siendo bastante complicado, al menos más complicado que establecer un JavaBean simple. La complejidad proviene del hecho de que la biblioteca de etiquetas se compone de varias partes. Sin embargo, sólo es necesario dominar los conocimientos de Java y JSP.
Una etiqueta simple consta de los siguientes elementos:
1. JavaBean: para obtener los beneficios de Java y su inherente naturaleza orientada a objetos, el código reutilizable debe colocarse en un contenedor de código separado, que es un JavaBean. Estos JavaBeans no son una parte esencial de la biblioteca de etiquetas, pero son los módulos de código básicos utilizados por la biblioteca de etiquetas para realizar las tareas asignadas.
2. Procesador de etiquetas: el procesador de etiquetas es el verdadero corazón de la biblioteca de etiquetas. Un controlador de etiquetas hace referencia a cualquier recurso externo que necesita (JavaBeans) y es responsable de acceder a la información de la página JSP (objetos PageContext). La página JSP pasa los atributos de etiqueta establecidos en la página y el contenido del cuerpo de la etiqueta al procesador de etiquetas. Cuando el procesador de etiquetas completa su procesamiento, enviará los resultados de salida procesados a la página JSP para su posterior procesamiento.
3. Descriptor de biblioteca de etiquetas (archivo TLD): este es un archivo XML simple que registra los atributos, la información y la ubicación del procesador de etiquetas. El contenedor JSP utiliza este archivo para saber dónde y cómo llamar a una biblioteca de etiquetas.
4. El archivo web.xml del sitio web: este es el archivo de inicialización del sitio web. En este archivo, se deben definir las etiquetas personalizadas utilizadas en el sitio web, así como el archivo tld utilizado para describir cada etiqueta personalizada.
5. Archivos de lanzamiento (archivos WAR o JAR): si desea reutilizar etiquetas personalizadas, necesita una forma de moverlas de un proyecto a otro. Empaquetar la biblioteca de etiquetas en un archivo JAR es una forma sencilla y eficaz.
6. Declaración de biblioteca de etiquetas en la página JSP: si desea utilizar una etiqueta personalizada en la página JSP, debe utilizar el identificador de la biblioteca de etiquetas para declararla en la página.
Parece que hay mucho trabajo por hacer y, por supuesto, será un poco complicado cuando empieces a usarlo, pero no es muy difícil. La cuestión no es codificar, sino organizar las piezas correctamente. Esta estructura jerárquica es importante porque hace que el uso de etiquetas sea flexible y más fácil de transferir. Más importante aún, estos niveles permiten automatizar todo el proceso de creación de una biblioteca de etiquetas a través de JSP IDE (entorno de desarrollo integrado JSP). JSP IDE puede completar automáticamente la mayor parte del trabajo de creación de etiquetas personalizadas, y usted solo necesita ser responsable de configurar el código y los procesadores de etiquetas.
(Nota: un procesador de etiquetas solo define una etiqueta personalizada; una biblioteca de etiquetas es una colección de varios procesadores de etiquetas que manejan la misma tarea)
Cree su primera etiqueta
Lo siguiente le enseñará paso a paso cómo crear una etiqueta personalizada, un ejemplo específico está ampliando JSP para que tenga su propia función de codificación HTML. Esta característica reemplaza todos los caracteres < y > con código HTML. Se puede ampliar fácilmente para realizar otros procesos de codificación. Para simplificar, este ejemplo solo explica los elementos básicos para crear una etiqueta personalizada.
Cualquier parte reutilizable del código
que crea un JavaBean
debe colocarse en un JavaBean.Esto es muy importante. De esta manera puedes reutilizar el código en otros proyectos. Dado que cualquier código colocado dentro de un controlador de etiquetas no es reutilizable fuera de la etiqueta, es importante aislar las partes del código reutilizables. En este ejemplo, la lógica codificada para HTML es común y, por lo tanto, se coloca en un JavaBean; consulte el Listado B
Listado B: JavaBeans codificados en HTML
/* HTML_Formato.java */
clase pública HTML_Format extiende el objeto implementa java.io.Serializable {
/** Crear un nuevo HTML_Format */
public HTML_Format() {}
/** Reemplace todos los caracteres < y > en una cadena con la codificación HTML de respuesta */
Cadena pública HTML_Encode (Cadena como_datos)
{
int li_len = as_data.length()
/*La longitud del búfer de cadena es más larga que la cadena original*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10)
/* Bucle para reemplazar todos los caracteres < y >*/
para(int li_count = 0; li_count < li_len; li_count++)
{ Cadena ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append(ls_next);
}
retorno (lsb_encode.toString());
}
}
El código para crear un procesador de etiquetas se muestra en el Listado C:
Listado C: Procesador de etiquetas de codificación HTML
importar java.io.IOException;
importar javax.servlet.jsp.*;
importar javax.servlet.jsp.tagext.*;
la clase pública HTML_FormatTag extiende BodyTagSupport
{
/* 1) Esta función será llamada al final de la etiqueta*/
public int doEndTag() lanza JspTagException
{
intentar
{ /* 2) Obtener el texto en la etiqueta */
Contenido del cuerpo l_tagbody = getBodyContent();
String ls_output = "";
/* 3) Si el cuerpo de la etiqueta tiene texto, procéselo */
si (l_tagbody! = nulo)
{ HTML_Format l_format = nuevo HTML_Format();
/* 3a) Convierte el contenido del cuerpo de la etiqueta en una cadena */
Cadena ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4) Escribe los resultados en el flujo de datos */
pageContext.getOut().write(ls_output.trim());
}
captura (IOException e)
{ throw new JspTagException("Error de etiqueta:" + e.toString());
}
/* Dejar que JSP continúe procesando el contenido de las siguientes páginas*/
devolver EVAL_PAGE;
}
}
Este procesamiento es muy sencillo, incluye:
1. Leer el texto entre las etiquetas de apertura y cierre.
2. Llamar a la función de codificación html
3. Devuelve los resultados a la página JSP.
Crear un descriptor de etiqueta
Necesitamos describir la etiqueta personalizada para que el sistema sepa qué hacer con ella. El sufijo de este archivo de descripción es .tld. El archivo TLD generalmente lleva el nombre del procesador de etiquetas y se almacena en el directorio "/WEB-INF/". Ver Listado D.
Listado D: Descriptor de etiqueta de codificación HTML <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//Biblioteca de etiquetas DTD JSP 1.1//ES"
" http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd ">
<TAGLIB>
<VERSIÓN TLIB>1.0</VERSIÓN TLIB>
<VERSIÓN JSP>1.1</VERSIÓN JSP>
<NOMBRE CORTO>HTML_FormatTag</NOMBRE CORTO>
<URI></URI>
<INFO>Etiqueta de codificación HTML </INFO>
<TAG>
<NOMBRE>Código HTML</NOMBRE>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>Codificar HTML</INFO>
</TAG>
</TAGLIB>
Actualice el archivo Web XML
para indicarle al contenedor JSP cómo usar la biblioteca de etiquetas. Para hacer esto, debe modificar el archivo web.xml. Específicamente, debe agregar un proyecto taglib para registrar la biblioteca de etiquetas y asignar un URI a la etiqueta. El URI es el único índice del sitio web que se aplica a esta etiqueta en particular. Dado que la etiqueta se puede utilizar en diferentes sitios web en el futuro, es mejor utilizar la URL completa y/o el nombre del paquete para garantizar la unicidad. Este ejemplo está simplificado; consulte el Listado E para obtener un código de muestra.
Listado E: Modificar el archivo web.xml <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PÚBLICO "-//Sun Microsystems, Inc.//Aplicación web DTD 2.2//ES"
" http://java.sun.com/j2ee/dtds/web-app_2.2.dtd ">
<WEB-APP>
<TAGLIB>
<TAGLIB-URI>
Codificación HTML
</TAGLIB-URI>
<UBICACIÓN-TAGLIB>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-UBICACIÓN>
</TAGLIB>
</WEB-APP>
Usar nuevas etiquetas
Una vez configuradas las etiquetas personalizadas, puede usarlas en sus páginas JSP. Para hacer esto, simplemente use el comando de la directiva taglib para declarar las etiquetas que desea usar en la página. Las etiquetas se indexan por su URI único, al que luego se le asigna un prefijo de espacio de nombres. Este prefijo no tiene un significado especial; siempre que no entre en conflicto con otros espacios de nombres, puede ser arbitrario. Consulte los Listados F y G a continuación.
Listado F: Uso de la etiqueta de codificación HTML<%@ taglib uri="HTMLEncode" prefix="Examples" %>
en una página JSP
<PRE>
<?XML:NAMESPACE PREFIX = Ejemplos /><Ejemplos:HTMLEncode>
<Hola, muestra simple>
</Ejemplos:HTMLEncode>
</PRE>
Listado G: Salida de código de muestra<Hola, muestra simple>
que se muestra como:
<Hola, muestra simple>
Con esta etiqueta, codifiqué todo el código de la página. Todas las etiquetas personalizadas se procesan en el servidor. Esto significa que no verá etiquetas personalizadas en la página de salida.
Como puede ver, crear etiquetas no es difícil. La parte más problemática es aprender todos los entresijos de los procesadores de etiquetas. Esta es una característica poderosa y solo hemos arañado la superficie. Debido a los muchos pasos involucrados en este proceso, los nuevos programadores de JSP pueden resultar confusos al crear etiquetas.
Conclusión
La biblioteca de etiquetas es una de las características más importantes de JSP y todavía está en constante desarrollo. De hecho, es algo nuevo, por lo que aún no se ha adoptado ampliamente, pero la biblioteca de etiquetas personalizadas ha eliminado su misterio y cada vez más desarrolladores están comenzando a prestarle atención y utilizarla. A finales de 2001, se puede esperar que las bibliotecas de etiquetas sean una característica muy común en muchos proyectos JSP.
Los beneficios de las bibliotecas de etiquetas sólo se analizan brevemente en este artículo. Las bibliotecas de etiquetas en realidad tienen muchas otras funciones poderosas. Las bibliotecas de etiquetas impulsan el desarrollo de JSP a un mundo nuevo sin precedentes. De hecho, esta es una nueva tecnología emocionante para los desarrolladores de JSP porque obtienen una herramienta que puede convertir JSP en varias aplicaciones y crear cualquier tipo de aplicación web. La biblioteca de etiquetas convierte a JSP en la capacidad de desarrollo más rica y dinámica y en el potente entorno de programación web. Sus capacidades están limitadas únicamente por nuestra imaginación y creatividad.