Las directivas en JSP se usan para proporcionar información al motor JSP para generar la página. Existen tres tipos de directivas: página, inclusión de archivos y librería de etiquetas. La directiva page se usa para definir atributos que se aplican a toda la página JSP e incluye archivos, como el tipo de contenido, la página de error y la importación de clases.
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
Jsp directiva page
1. Una directiva se usa como información para el motor de JSP, de tal forma que
éste genera la página en función de los valores de la directiva. En JSP se
definen tres tipos de directivas: directivas de página, directivas de
inclusión de ficheros y directiva de librería de etiquetas.
Directiva de página (page)
Se usa para definir atributos que se aplican a una página JSP entera así como
a cualquier fichero estático que se incluya con las directivas “include” o
<jsp:include>.
Podemos usar esta directiva varias veces a lo largo de la pagina JSP, pero
sólo podemos asignar el valor de un atributo una vez por cada una, excepto
para el atributo import.
<%@ page atributo=”valor” %>
Aquí podemos ver la sintaxis de la directiva page. Los valores por defecto se
muestran en negrita. Los corchetes ([...]) indican un término opcional. La
barra vertical (|) proporciona una elección entre dos valores como true y
false.
<%@ page
[ language="java"]
[ extends="package.class"]
[ import= "{ package.class|package.*}, ..." ]
[ session="true|false"]
[ buffer="none|8kb|sizekb"]
[ autoFlush="true|false"]
[ isThreadSafe="true|false"]
[ info="text"]
[ errorPage="URLrelativa"]
[ contentType="mimeType[ ;charset=characterSet]" |
"text/html; charset=ISO-8859-1"]
[ isErrorPage="true|false"]
%>
3. En este ejemplo vamos a utilizar la directiva [page] para importar al fichero
JSP una clase contenida en un paquete determinado mediante el atributo import
de page.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="packJSP.ClasePresentar" %>
Para ello en Eclipse creamos el paquete packJSP y dentro de él la clase
ClasePresentar. Con lo cual la estructura de fichero jsp, paquete y clase
quedaría…
Y el código del fichero .jsp y la clase a importar serían…
dPage.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="packJSP.ClasePresentar" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Directiva page en JSP</title>
</head>
<body>
<%
ClasePresentar objPresentar = new ClasePresentar();
out.print(objPresentar.mensaje());
%>
</body>
</html>
4. ClasePresentar.java
package packJSP;
public class ClasePresentar {
public String mensaje(){
return "¡¡¡Hola!!! Soy la clase [ClasePresentar] y me han importado mediante la
directiva page.";
}
}
Resultado…
Ahora vamos ampliar el ejemplo anterior para mostrar el funcionamiento de los
atributos errorPage e isErrorPage de la directiva page.
En el fichero dPage.jsp añadimos un bloque de código que nos calcula la
velocidad a partir de los parámetros espacio y tiempo pasados en la URL de la
llamada al fichero dPage.jsp…
http://localhost:8080/prj_dPage/dPage.jsp?espacio=4&tiempo=2
Mediante <%@ page errorPage="ErrorVelocidad.jsp" %> indicamos el fichero que mostrará
la página de error encargado de mostrar la excepción. Por ejemplo una
excepción se provocará si pasamos, en este caso, el parámetro tiempo como de
tipo texto imposible de convertir a un tipo double.
http://localhost:8080/prj_dPage/dPage.jsp?espacio=4&tiempo=ddd
5. En el fichero errorVelocidad.jsp incluímos la directiva…
<%@ page isErrorPage="true" %>
…de esta forma utiliza el objeto exception el cual contiene una referencia a
la excepción lanzada.
dPage.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="packJSP.ClasePresentar" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page errorPage="ErrorVelocidad.jsp" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Directiva page en JSP</title>
</head>
<body>
<%
ClasePresentar objPresentar = new ClasePresentar();
out.print(objPresentar.mensaje());
%>
<%!
// Se lanzará un excepcion NumberFormatException si el valor es nulo o está mal
formateado
// Ejecutamos con la URL:
http://localhost:8080/prj_dPage/dPage.jsp?espacio=4&tiempo=2
double espacio,tiempo,velocidad;
private double toDouble(String value) {
return (Double.valueOf(value).doubleValue());
}
%>
<%
espacio = toDouble(request.getParameter("espacio"));
tiempo = toDouble(request.getParameter("tiempo"));
velocidad = espacio / tiempo;
%>
<br/>Espacio: <%= espacio%>
<br/>Tiempo: <%= tiempo%>
<br/>Velocidad: <%= velocidad%>
</body>
</html>
ErrorVelocidad.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<%@ page isErrorPage="true" %>
Hay un error en la pagina dPage.jsp: <%= exception.toString() %>
</body>
</html>
6. Un ejemplo de resultado de ejecución sin error sería…
http://localhost:8080/prj_dPage/dPage.jsp?espacio=4&tiempo=2
Un ejemplo de resultado de ejecución con error sería…
http://localhost:8080/prj_dPage/dPage.jsp?espacio=4&tiempo=ddd
7. En Internet Explorer para que se visualice la página de error con la
excepción tenemos que ir a Herramientas -> Opciones de Internet -> Opciones
Avanzadas y desmarcar la casilla con el texto “Mostrar mensajes de error HTTP
descriptivos”.
This is an IE feature. When an HTTP error page retrieved from the server is smaller
than 512 bytes, then IE will by default show a "Friendly" error page like the one you're
facing, which is configureable by Tools > Internet Options > Advanced > Uncheck
"Show Friendly Error Message" in the browser. Other (real) browsers does not have
this feature.