Directivas JSP

¿Qué son las directivas JSP?

  • Las directivas JSP son los mensajes al contenedor JSP. Proporcionan información global sobre una página JSP completa.
  • Las directivas JSP se utilizan para dar instrucciones especiales a un contenedor para la traducción de JSP a código de servlet.
  • En la fase del ciclo de vida de JSP, JSP debe convertirse en un servlet, que es la fase de traducción.
  • Dan instrucciones al contenedor sobre cómo manejar ciertos aspectos del procesamiento JSP.
  • Las directivas pueden tener muchos atributos separados por comas como pares clave-valor.
  • En JSP, la directiva se describe en <%@ %> las etiquetas.

Sintaxis de la directiva:

<%@ directive attribute="" %>

Tipos de directivas en JSP

Hay tres tipos de directivas en JSP:

  1. Directiva de página
  2. Incluir directiva
  3. directiva taglib

Cada uno de ellos se describe detalladamente a continuación con ejemplos:

1) Directiva de página JSP

Sintaxis de la directiva de página:

<%@ page…%>
  • Proporciona atributos que se aplican a toda la página JSP.
  • Define atributos dependientes de la página, como el lenguaje de script, la página de error y los requisitos de almacenamiento en búfer.
  • Se utiliza para proporcionar instrucciones a un contenedor que pertenece a la página JSP actual.

A continuación se muestra la lista de atributos asociados con la directiva de página:

  1. Idioma
  2. Se extiende
  3. Importar
  4. tipo de contenido
  5. info
  6. Sesión
  7. esThreadSafe
  8. lavado automático
  9. buffer
  10. IsErrorPage
  11. codificación de página
  12. página de error
  13. estáELIgonorado

Más detalles sobre cada atributo

1) idioma: Define el lenguaje de programación (lenguaje subyacente) que se utiliza en la página.

Sintaxis del lenguaje:

<%@ page language="value" %>

Aquí el valor es el lenguaje de programación (lenguaje subyacente)

Ejemplo:

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

Explicación del código: En el ejemplo anterior, el valor del idioma del atributo es Java que es el lenguaje subyacente en este caso. Por lo tanto, el código de las etiquetas de expresión se compilaría utilizando el compilador de Java.

2) se extiende: Este atributo se utiliza para extender (heredar) la clase como lo hace JAVA

Sintaxis de extiende:

<%@ page extends="value" %>

Aquí el valor representa la clase de la que se debe heredar.

Ejemplo:

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

<%@ page extends="demotest.DemoClass" %>

Explicación del código: En el código anterior, JSP está ampliando DemoClass, que se encuentra dentro del paquete demotest, y ampliará todas las características de la clase.

3) Importar: Este atributo es el atributo más utilizado en los atributos de directiva de página. Se utiliza para indicarle al contenedor que importe otras clases, interfaces, enumeraciones, etc. de Java mientras se genera código de servlet. Es similar a las declaraciones de importación en clases e interfaces de Java.

Sintaxis de importación:

<%@ page import="value" %>

Aquí el valor indica las clases que deben importarse.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    import="java.util.Date" pageEncoding="ISO-8859-1"%>

Explicación del código:

En el código anterior, importamos la clase Date del paquete java.util (todas las clases de utilidad) y puede usar todos los métodos de la siguiente clase.

4) tipo de contenido:

  • Define el esquema de codificación de caracteres, es decir, se utiliza para establecer el tipo de contenido y el juego de caracteres de la respuesta.
  • El tipo predeterminado de contentType es "text/html; charset=ISO-8859-1".

Sintaxis del tipo de contenido:

<%@ page contentType="value" %>

Ejemplo:

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

Explicación del código:

En el código anterior, el tipo de contenido se establece como texto/html, establece la codificación de caracteres para JSP y para la página de respuesta generada.

5) información

  • Define una cadena a la que se puede acceder mediante el método getServletInfo().
  • Este atributo se utiliza para establecer la descripción del servlet.

Sintaxis de información:

<%@ page info="value" %>

Aquí, el valor representa la información del servlet.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>

Explicación del código:

En el código anterior, la cadena "Directiva Guru JSP" se puede recuperar mediante la interfaz del servlet usando getServletInfo()

6) Sesión

  • La página JSP crea una sesión de forma predeterminada.
  • A veces no necesitamos que se cree una sesión en JSP y, por lo tanto, podemos establecer este atributo en falso en ese caso. El valor predeterminado del atributo de sesión es verdadero y se crea la sesión. Cuando se establece en falso, podemos indicar al compilador que no cree la sesión de forma predeterminada.

Sintaxis de sesión:

<%@ page session="true/false"%>

Aquí, en este caso, el atributo de sesión se puede establecer en verdadero o falso.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    session="false"%>

Explicación del código:

En el ejemplo anterior, el atributo de sesión está establecido en "falso", por lo que indicamos que no queremos crear ninguna sesión en este JSP.

7) esThreadSafe:

  • Define el modelo de subprocesamiento para el servlet generado.
  • Indica el nivel de seguridad de subprocesos implementado en la página.
  • Su valor predeterminado es verdadero, por lo que es simultáneo.
  • Podemos usar este atributo para implementar la interfaz SingleThreadModel en el servlet generado.
  • Si lo configuramos en falso, implementará SingleThreadModel y podrá acceder a cualquier objeto compartido y puede generar inconsistencia.

Sintaxis de isThreadSafe:

<% @ page isThreadSafe="true/false" %>

Aquí verdadero o falso representa si hay sincronización, entonces configúrelo como verdadero y configúrelo como falso.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isThreadSafe="true"%>

Explicación del código:

En el código anterior, isThreadSafe está configurado como “verdadero”, por lo tanto, se realizará la sincronización y se pueden usar múltiples subprocesos.

8) Descarga automática:

Este atributo especifica si la salida almacenada en el búfer se debe vaciar automáticamente o no y el valor predeterminado de ese atributo es verdadero. Si el valor se establece en falso, el búfer no se vaciará automáticamente y, si está lleno, obtendremos una excepción. Cuando el búfer es ninguno, el valor falso es ilegítimo y no hay almacenamiento en búfer, por lo que se vaciará automáticamente.

Sintaxis de autoFlush:

<% @ page autoFlush="true/false" %>

Aquí verdadero/falso representa si se debe realizar el almacenamiento en búfer o no.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    autoFlush="false"%>

Explicación del código:

En el código anterior, el vaciado automático se establece en falso y, por lo tanto, no se realizará el almacenamiento en búfer y se vaciará manualmente la salida.

9) Buffer:

  • Usando este atributo se puede almacenar en búfer el objeto de respuesta de salida.
  • Podemos definir el tamaño del almacenamiento en búfer que se realizará utilizando este atributo y el tamaño predeterminado es 8 KB.
  • Indica al servlet que escriba en el buffer antes de escribir en el objeto de respuesta.

Sintaxis del buffer:

<%@ page buffer="value" %>

Aquí el valor representa el tamaño del buffer que se debe definir. Si no hay buffer, podemos escribir como none, y si no mencionamos ningún valor, el valor predeterminado es 8 KB.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    buffer="16KB"%>

Explicación del código:

En el código anterior, el tamaño del búfer se menciona como 16 KB, donde el búfer sería de ese tamaño.

10) es una página de errores:

  • Indica que la página JSP que tiene una página de error se verificará en otra página JSP.
  • Cualquier archivo JSP declarado con el atributo "isErrorPage" es capaz de recibir excepciones de otras páginas JSP que tienen páginas de error.
  • Las excepciones están disponibles únicamente para estas páginas.
  • El valor predeterminado es falso.

Sintaxis de isErrorPage:

<%@ page isErrorPage="true/false"%>

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isErrorPage="true"%>

Explicación del código:

En el código anterior, isErrorPage se establece como verdadero. Por lo tanto, verificará que cualquier otro JSP tenga establecido el atributo errorPage (descrito en el siguiente atributo) y que pueda manejar excepciones.

11) Codificación de página:

El atributo “pageEncoding” define la codificación de caracteres para la página JSP. El valor predeterminado es “ISO-8859-1” si no se especifica ningún otro.

Sintaxis de codificación de página:

<%@ page pageEncoding="vaue" %>

Aquí el valor especifica el valor del juego de caracteres para JSP.

Ejemplo:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isErrorPage="true"%>

Explicación del código:

En el código anterior, "pageEncoding" se ha configurado en el juego de caracteres predeterminado ISO-8859-1

12) página de error:

Este atributo se utiliza para establecer la página de error para la página JSP si JSP genera una excepción y luego redirige a la página de excepción.

Sintaxis de página de error:

<%@ page errorPage="value" %>

Aquí el valor representa el valor de la página JSP de error.

Ejemplo:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

Explicación del código:

En el código anterior, para manejar excepciones tenemos errroHandler.jsp

13) se ignora:

  • IsELIgnored es un atributo de bandera donde tenemos que decidir si ignoramos las etiquetas EL o no.
  • Su tipo de datos es java enum y el valor predeterminado es falso, por lo que EL está habilitado de forma predeterminada.

Sintaxis de isELIgnored:

<%@ page isELIgnored="true/false" %>

Aquí, verdadero/falso representa el valor de EL, ya sea que deba ignorarse o no.

Ejemplo:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="true"%>

Explicación del código:

En el código anterior, isELIgnored es verdadero y por lo tanto Lenguaje de expresión (EL) Aquí se ignora. En el ejemplo siguiente, usamos cuatro atributos (líneas de código 1-2)

Ejemplo con cuatro atributos

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="false"%>
 <%@page import="java.util.Date" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Directive Guru JSP1</title>
</head>
<body>
<a>Date is:</a>
<%= new java.util.Date() %>
</body>
</html>

Explicación del código:

Línea de código 1-2: Aquí hemos definido cuatro atributos, es decir

  • Idioma: Se establece como Java como lenguaje de programación
  • contentType: establecido como texto/html para indicarle al compilador que se debe formatear html
  • pageEncoding: el juego de caracteres predeterminado está establecido en este atributo
  • isELIgnored: la etiqueta de expresión es falsa, por lo que no se ignora

Línea de código 3: Aquí hemos utilizado el atributo de importación y está importando la "clase de fecha" que es de Java paquete util, y estamos intentando mostrar la fecha actual en el código.

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

Directiva de página JSP

Salida:

  • La fecha es: fecha actual usando el método de fecha de la clase de fecha

2)Directiva de inclusión de JSP

  • La “directiva de inclusión” JSP (línea de código 8) se utiliza para incluir un archivo en otro archivo.
  • Este archivo incluido puede ser HTML, JSP, archivos de texto, etc.
  • También es útil para crear plantillas con las vistas del usuario y dividir las páginas en acciones de encabezado, pie de página y barra lateral.
  • Incluye archivo durante la fase de traducción.

Sintaxis de la directiva de inclusión:

<%@ include….%>

Ejemplo:

Directiva_jsp2.jsp (archivo principal)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ include file="directive_header_jsp3.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Directive JSP2</title>
</head>
<body>
<a>This is the main file</a> 
</body>
</html>

directive_header_jsp3.jsp (que se incluye en el archivo principal)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

</head>
<body>
<a>Header file : </a>
<%int count =1; count++;
out.println(count);%> :
</body>
</html>

Explicación del código:

Directiva_jsp2.jsp:

Línea de código 3: En este código, usamos etiquetas de inclusión donde incluimos el archivo directivo_header_jsp3.jsp en el archivo principal (_jsp2.jsp) y obtenemos la salida tanto del archivo principal como del archivo incluido.

Directiva_header_jsp3.jsp:

Línea de código 11-12: Hemos tomado un recuento de variables inicializado en 1 y luego lo incrementamos. Esto dará el resultado en el archivo principal como se muestra a continuación.

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

Directiva de inclusión JSP

Salida:

  • El resultado es un archivo de encabezado: 2: este es el archivo principal.
  • La salida se ejecuta desde el archivo directivo_jsp2.jsp mientras que el archivo incluido directiva_header_jsp3.jsp se compilará primero.
  • Una vez finalizado el archivo incluido, se ejecuta el archivo principal y la salida será del archivo principal "Este es el archivo principal". Entonces obtendrá el resultado como "Archivo de encabezado: 2" de _jsp3.jsp y "Este es el archivo principal" de _jsp2.jsp.

3) Directiva JSP Taglib

  • La directiva JSP taglib se usa para definir la biblioteca de etiquetas con "taglib" como prefijo, que podemos usar en JSP.
  • Se cubrirán más detalles en la sección Etiquetas personalizadas JSP
  • La directiva JSP taglib se utiliza en las páginas JSP que utilizan las bibliotecas de etiquetas estándar JSP
  • Utiliza un conjunto de etiquetas personalizadas, identifica la ubicación de la biblioteca y proporciona medios para identificar etiquetas personalizadas en una página JSP.

Sintaxis de la directiva taglib:

<%@ taglib uri="uri" prefix="value"%>

Aquí el atributo "uri" es un identificador único en el descriptor de la biblioteca de etiquetas y el atributo "prefijo" es un nombre de etiqueta.

Ejemplo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Directive JSP</title>
<gurutag:hello/>
</head>
<body>
</body>
</html>

Explicación del código:

Línea de código 3: Aquí "taglib" se define con los atributos uri y prefijo.

Línea de código 9: “gurutag” es la etiqueta personalizada definida y se puede usar en cualquier lugar