Tutorial de JSTL (biblioteca de etiquetas estándar JSP): Core & Ejemplos de etiquetas personalizadas

Tabla de contenido:

Anonim

JSTL es una biblioteca de etiquetas estándar de JSP. Aquí veremos cómo el uso de diferentes etiquetas JSTL facilitará la codificación JSP.

En este tutorial, aprenderá:

  • Que es JSTL
  • Núcleo JSTL
  • Etiquetas personalizadas JSP

¿Qué es JSTL?

JSTL significa biblioteca de etiquetas estándar de páginas de servidor Java, y es una colección de bibliotecas de etiquetas JSP personalizadas que proporcionan una funcionalidad de desarrollo web común.

Ventajas de JSTL

  1. Etiqueta estándar : proporciona una rica capa de la funcionalidad portátil de las páginas JSP. Es fácil para un desarrollador comprender el código.
  2. Código ordenado y limpio : como los scriplets confunden al desarrollador, el uso de JSTL hace que el código sea ordenado y limpio.
  3. Soporte automático de JavabeansInterospection : tiene una ventaja de JSTL sobre los scriptlets JSP. El lenguaje de expresión JSTL maneja el código JavaBean muy fácilmente. No necesitamos abatir los objetos, que se han recuperado como atributos de ámbito. Usar código JSP scriptlets será complicado y JSTL ha simplificado ese propósito.
  4. Más fácil de leer para los humanos : JSTL se basa en XML, que es muy similar a HTML. Por lo tanto, es fácil de entender para los desarrolladores.
  5. Más fácil de entender para las computadoras : herramientas como Dreamweaver y la página principal generan cada vez más código HTML. Las herramientas HTML hacen un gran trabajo al formatear el código HTML. El código HTML se mezcla con el código scriplet. Como JSTL se expresa como etiquetas compatibles con XML, es fácil para la generación HTML analizar el código JSTL dentro del documento.

Núcleo JSTL

Las etiquetas principales son etiquetas que se utilizan con más frecuencia en JSP. Brindan apoyo para

  • Iteración
  • Lógica condicional
  • Captura de excepción
  • reenviar url
  • Redirigir, etc.

Para usar etiquetas principales, primero debemos definir la biblioteca de etiquetas y, a continuación, se encuentra la sintaxis para incluir una biblioteca de etiquetas.

Sintaxis:

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Aquí,

  • El prefijo se puede utilizar para definir todas las etiquetas principales y
  • uri es la biblioteca de taglib desde la que se importa

Veamos algunas de las etiquetas principales en detalle,

1. Fuera:

  • El resultado de la expresión se muestra en la etiqueta de salida
  • Puede escapar directamente de las etiquetas XML. Por lo tanto, no se evalúan como etiquetas reales.

Sintaxis:

  • Aquí el valor representa información para la salida, y es obligatorio
  • El valor predeterminado es la falla en la salida de información y no es obligatorio
  • escapeXML: es cierto si escapa a los caracteres XML.

Ejemplo:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Etiqueta principal JSP1 

Explicación del código:

Línea de código 3: este prefijo taglib es obligatorio para todas las etiquetas y el prefijo agregado es 'c'. Por lo tanto, se puede utilizar como prefijo para todas las etiquetas principales.

Línea de código 12: Aquí estamos usando coretag con el prefijo "c" y esto imprimirá el valor en la etiqueta de expresión. Por lo tanto, la salida será name

Cuando ejecuta el código anterior, obtiene el siguiente resultado:

Producción:

  • Obtenemos el valor como un nombre de la etiqueta principal "out" que se imprimirá en el flujo de salida.

2. Atrapa

  • Detecta cualquier excepción arrojable que se produzca en el cuerpo y se muestre como salida.
  • Se utiliza para manejar los errores y detectarlos.

Sintaxis:

Aquí var representa el nombre de la variable, que tendrá una excepción arrojable.

Ejemplo:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Etiqueta principal JSP2 <% int num = 10/0; %>La excepción es: $ {guruException}

Explicación del código:

Línea de código 3: este prefijo taglib es obligatorio para todas las etiquetas y el prefijo agregado es 'c', por lo que se puede usar como prefijo para todas las etiquetas principales

Línea de código 11-13: la captura de Coretag se usa para capturar la excepción e imprimirla. Aquí la excepción se genera cuando 10/0 y esa excepción tiene el nombre "guruException".

Línea de código 14: Estamos imprimiendo la "guruException".

Cuando ejecute el código, obtendrá el siguiente resultado:

Producción:

  • Obtenemos la excepción aritmética como / por cero, y se imprime en la salida usando la variable "guruException"

3. Importar

  • Podemos importar el contenido de otro archivo en una página JSP como hicimos en JSP include action.
  • Aquí también podemos incluir URL y los contenidos se mostrarán en esa página.

Sintaxis:

Aquí var es un nombre de variable que es un identificador, que contendrá el nombre de archivo / uri.

uri es un nombre de archivo relativo o uriname.

coretag_jsp31.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Etiqueta principal JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Inserte el título aquí  El archivo se muestra después de la importación 

Explicación del código:

Coretag_jsp31.jsp

Línea de código 3: este prefijo taglib es obligatorio para todas las etiquetas y el prefijo agregado es 'c', por lo que se puede usar como prefijo para todas las etiquetas principales

Línea de código 11-12: aquí estamos importando el archivo coretag_jsp32.jsp en este archivo usando la etiqueta de importación

Línea de código 13: Aquí estamos imprimiendo el archivo coretag_jsp32.jsp usando la etiqueta out.

Cuando ejecuta el código anterior, obtiene el siguiente resultado.

Producción:

  • Coretag_jsp32 se imprime en la salida ya que este archivo se importó en coretag_jsp31.jsp.

4. para cada uno

  • Se utiliza para iterar el número de elementos en una serie de declaraciones.
  • Es lo mismo que un forloop de Java.

Sintaxis:

  • Aquí var representa el nombre de la variable que contendrá el nombre del contador
  • Inicio representa el valor de inicio del contador
  • El final representará su valor final

Ejemplo:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Etiqueta principal JSP4 

Explicación del código:

Línea de código 3: este prefijo taglib es obligatorio para todas las etiquetas y el prefijo agregado es 'c', por lo que se puede usar como prefijo para todas las etiquetas principales

Línea de código 11-13: Aquí usamos el bucle "forEach" donde el nombre de la variable es "gurucount", que ha comenzado a contar como 5 y finaliza como 10. Estamos imprimiendo la variable gurucount que tiene números que comienzan del 5 al 10.

Cuando ejecuta el código, obtiene el siguiente resultado

Producción:

  • La salida que estamos obteniendo comienza de 5 a 10.

5. Si

  • Se utiliza para las condiciones de prueba.
  • Si la etiqueta se usa para probar una condición, ya sea que sea verdadera o no en base a esto, se ejecutará el bloque de código.

Sintaxis:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Etiqueta principal JSP5 

Explicación del código:

Línea de código 3: este prefijo taglib es obligatorio para todas las etiquetas y el prefijo agregado es 'c', por lo que se puede usar como prefijo para todas las etiquetas principales

Línea de código 11: Aquí estamos configurando la variable nombrada como cuenta en 100

Línea de código 12-14: Aquí estamos usando "condición si" donde estamos verificando si el recuento es igual a 100. Es igual a 100, entonces obtenemos el resultado como "El recuento es 100".

Cuando ejecuta el código anterior, obtiene el siguiente resultado

Producción:

  • Como la condición "si" es verdadera, obtenemos el resultado como "El recuento es 100".

6. redirigir:

  • Se utiliza para redirigir la página actual a otra URL proporcionando la URL relativa de esta etiqueta.
  • Admite URL relativas al contexto

Sintaxis:

Aquí url es la URL relativa a la que debe ser redirigida y el nombre de contexto de la aplicación web local.

Ejemplo:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Etiqueta principal JSP6 

Explicación del código:

Línea de código 3: este prefijo taglib es obligatorio para todas las etiquetas y el prefijo agregado es 'c', por lo que se puede usar como prefijo para todas las etiquetas principales

Línea de código 11: Aquí usamos "etiqueta de redireccionamiento", donde especificamos el nombre de la URL, y cuando hacemos clic en esa página, se redirige al sitio que se ha asignado para redireccionar.

Cuando ejecuta el código anterior, obtiene el siguiente resultado;

Producción:

  • Obtenemos la URL de salida guru99.com que es redirigida por coretag_jsp6.jsp

Etiquetas personalizadas JSP

  • Es un elemento de lenguaje JSP definido por el usuario.
  • Cuando JSP se traduce en un servlet, la etiqueta personalizada se convierte en una clase que realiza una acción en un objeto y se llama como un controlador de etiquetas.
  • Esas acciones cuando se ejecuta el servlet son invocadas por el contenedor web.
  • Para crear la etiqueta personalizada definida por el usuario, necesitamos crear el controlador de etiquetas que extenderá SimpleTagSupport y tendrá que anular el método doTag ().
  • Necesitamos crear TLD donde necesitamos mapear el archivo de clase en TLD.

Ventajas de las etiquetas personalizadas en JSP:

  • Portátil : una acción descrita en una biblioteca de etiquetas debe poder utilizarse en cualquier contenedor JSP.
  • Simple : los usuarios poco sofisticados deben ser capaces de comprender y utilizar este mecanismo. Los proveedores de la funcionalidad JSP deben tener facilidad para ponerlo a disposición de los usuarios como acciones.
  • Expresivo : el mecanismo debe admitir una amplia gama de acciones, incluidas acciones anidadas, elementos de secuencia de comandos dentro de los cuerpos de acción, creación, uso y actualización de variables de secuencia de comandos.
  • Utilizable desde diferentes lenguajes de scripting : aunque la especificación JSP actualmente solo define la semántica de los scripts en el lenguaje de programación Java, queremos dejar abierta la posibilidad de otros lenguajes de scripting.
  • Construido sobre conceptos y maquinaria existentes : no queremos reinventar lo que existe en otros lugares. Además, queremos evitar conflictos futuros siempre que podamos predecirlos.

Sintaxis:

Considere que estamos creando la etiqueta testGuru y podemos usar la clasetaghandlertestTag, que anulará el método doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Además, tendremos que mapear esta clase testTag en TLD (Descriptor de biblioteca de etiquetas) ya que el contenedor JSP creará automáticamente una asignación entre el archivo de clase y la uri que se ha mencionado en el archivo TLD.

Interfaz de etiqueta JSP

  • Esta clase tendrá que extender la clase SimpleTagSupport.
  • Esta clase tendrá que anular el método doTag () que es parte de la clase SimpleTagSupport (la anulación es un método que se hereda de la clase principal).
  • Esta interfaz es una subinterfaz de la interfaz JSPTag.
  • Proporciona métodos para realizar al principio y al final de la etiqueta.
  • Además, necesitamos mapear esta clase en TLD, es decir, en el descriptor de la biblioteca de etiquetas

Estamos considerando en el siguiente ejemplo

Método de interfaz de etiqueta

  • doTag () es un método que debemos anular y que tendrá el contenido de la etiqueta.
  • Toma el contexto JSP actual usando getJSPContext ()

Ejemplo:

Customtag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "ex" uri = "WEB-INF / custom.tld"%> Etiqueta personalizada 

Custom.tld

 1.0  2.0  TLD de prueba  guruTag  demotest.guruTag  vacío 

guruTag.java (TagHandler)

paquete demotest;importar javax.servlet.jsp.tagext. *;importar javax.servlet.jsp. *;importar java.io. *;guruTag de clase pública extiende SimpleTagSupport {public void doTag () lanza JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Etiqueta de Guru");}}

Explicación del código:

guruTag.java (TagHandler)

Línea de código 6: la clase guruTag está extendiendo la clase SimpleTagSupport que está presente en el jar javax.servlet.JSP

Línea de código 7: aquí estamos anulando el método doTag () que arroja JspException e IOException.

Línea de código 9-10: en este método, el código se incrustará en la etiqueta personalizada a la que se llamará. Estamos tomando un objeto de JspWriter, y eso imprimirá "Guru Tag".

Custom.tld

Línea de código 6: aquí el nombre de la etiqueta personalizada es "guruTag".

Línea de código 7: la clase de etiqueta es taghandlerclass, es decir, guruTag.java. Toma la ruta completa del archivo del controlador que incluye la ruta del directorio de la ubicación del archivo.

Customtag_jsp1.jsp

Línea de código 3 : este prefijo taglib es necesario para todas las etiquetas y el prefijo agregado es 'ex', por lo que se puede usar como prefijo para todas las etiquetas principales y uri es custom.tld, que asigna el controlador de etiquetas.

Línea de código 11: Aquí estamos definiendo la etiqueta personalizada "guruTag", que llamará al método doTag () de la clase de controlador y se ejecutará el código que contiene.

Cuando ejecuta el código anterior, obtiene el siguiente resultado

Producción:

  • Obtenemos la salida como "GuruTag" de guruTag.java, es decir, TagHandler, que anula el método doTag () y que imprime "Guru Tag" como salida.

Resumen:

  • En esta sección, aprendimos sobre la biblioteca de etiquetas estándar JSP en la que hicimos etiquetas centrales y etiquetas personalizadas.
  • Las etiquetas principales incluyen etiquetas para, si, redirigir, importar y capturar, que se utilizaron con fines básicos en JSP.
  • Además, hicimos etiquetas personalizadas en las que podemos definir las etiquetas y usarlas en JSP