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:
- Directiva de pรกgina
- Incluir directiva
- 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:
- Idioma
- Se extiende
- Importar
- tipo de contenido
- info
- Sesiรณn
- esThreadSafe
- lavado automรกtico
- buffer
- IsErrorPage
- codificaciรณn de pรกgina
- pรกgina de error
- 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
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:
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


