## Directivas JSP

## ¿Qué es la Directiva Include?

La directiva include se usa para insertar un fichero dentro de una página JSP cuando se compila la página JSP. El texto del fichro incluido se añade a la página JSP (ver la descripción de un fichero estático más adelante en esta página)

### ¿Qué clases de ficheros se pueden incluir?

El fichero incluido puede ser un fichero JSP, un fichero HTML, o un fichero de texto. También ser un fichero de código escrito en lenguaje Java.

Hay que ser cuidadoso en que el fichero incluido no contenga las etiquetas <html>, </html>, <body>, or </body>. Porque como todo el contenido del fichero incluido se añade en esa localización del fichero JSP, estas etiquetas podrían entrar en conflicto con las etiquetas similares del fichero JSP.

#### Incluir Ficheros JSP

Si el fichero incluido es un fichero JSP, las etiquetas JSP son analizadas y sus resultados se incluyen (junto con cualquier otro texto) en el fichero JSP.

Sólo podemos incluir ficheros estaticos. Esto significa que el resultado analizado del fichero incluido se añade al fichero JSP justo donde está situada la directiva. Una vez que el fichero incluido es analizado y añadido, el proceso continúa con la siguiente línea del fichero JSP llamante.

#### ¿Qué es un fichero Estático?

Un include estático significa que el texto del fichero incluido se añade al fichero JSP.

Además en conjuncióncon otra etiqueta JSP, <jsp:include>: podemos incluir ficheros estáticos o dinámicos:

Un fichero estático es analizado y si contenido se incluye en la página JSP llamante.

Un fichero dinámico actúa sobre la solicitud y envía de vuelta un resultado que es incluido en la página JSP.

### ¿Cuál es la Sintasis para Incluir un Fichero?

Podemos incluir unfichero en la localización específica del fichero JSP usando la directiva include con la siguiente síntasis::

>     "<%@ include file="URL" %>

Aquí la URL puede ser una URL relativa indicando la posición del fichero a incluir dentro del servidor.

## ¿Qué es la Directiva Page?

La directiva Page se usa para definir atributos que se aplican a una página JSP entera.

La directiva page se aplica a una página JSP completa, y a cualquier fichero estático que incluya con la directivas include" o <jsp:include>, que juntas son llamadas una unidad de traducción.

Observa que la directiva page no se aplica a cualquier fichero dinámico incluido.

Una directiva page puede usarse para establecer valores para distintos atributos que se pueden aplicar a la página JSP. Podemos usar la directiva page más de una vez en una página JSP (unidad de traducción). Sin embargo, (excepto para el atributo import), sólo podemos específicar un valor para atributo una sóla vez.

El atributo import es similar a la directiva import en un programa Java, y por eso podemos usarlar más de una vez.

Podemos situar el directiva page en cualquier lugar de la unidad de traducción y se aplicará a toda la unidad de traducción. Por calridad y facilidad de entendimiento, el mejor lugar podría ser al principio del fichero JSP principal.

### ¿Cuál es la Síntasis de la Directiva page

Aquí podemos ver la síntaxis 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"]
>     %>

### Ejemplos de Directivas Page

<%@ page import="java.util.Date" %> <%@ page import="java.awt.*" %> <%@ page info="Información sobre la página" %>

## Atributos de la Directiva Page

language="java"
  Este atributo define el lenguaje de script usado en los scriptles, declaraciones y expresiones en el fichero JSP y en cualquier fichero incluido. En JSP 1.0 el único lenguaje permitido es Java.

extends="package.class"
  Este atributo especifica un nombre totalmente cualificado de una superclase que será extendida por la clase Java en el fichero JSP. Sun recomienda que usemos este atributo con caute, ya puede limitar la habilidad del motor del JSP a proporcionar la superclase especializada que mejora la calidad del fichero compilado.

import= "{ package.class | package.* }, ..."
  Esta lista especifica una lista separada por comas de uno o más paquetes o clases que el fichero JSP debería importar. Las clases de los paquetes se ponen a disposición de los scriptlets, expresiones, declaraciones y etiquetas dentro del fichero JSP.

  Como cabría esperar, el atributo import debe aparecer antes de cualquier etiqueta que refiera la clase importada. Para importar varios paquetes, podemos usar una lista separada por comas, más de una directiva import o una combinación de ambas.

session="true|false"
  Todo cliente debe unirse a una sesión HTTP para poder usar una página JSP. Si el valor es true, el objeto session se refiere a la sesión actual o a una nueva sesión. Si el valor es false, no podemos utilizar el objeto session en el fichero JSP. El valor por defecto es true.

buffer="none|8kb|sizekb"
  Este atributo especifica el tamaño del buffer en kilobytes que será usado por el objeto out para manejar la salida envíada desde la página JSP compilada hasta el navegador cliene. El valor por defecto es 8kb.

autoFlush="true|false"
  Este atributo especifica si la salida sería envíada o no cuando el buffer esté lleno. Por defecto, el valor es true, el buffer será descargado. Si especificamos false, se lanzará una excepcióm cuando el buffer se sobrecargue.

isThreadSafe="true|false"
  Este atributo especifica si la seguridad de threads está implementada en el fichero JSP. El valor por defecto, true, significa que el motor puede enviar multiples solicitudes concurrentes a la página.

  Si usamos el valor por defecto, varios threads pueden acceder a la página JSP. Por lo tanto, debemos sincronizar nuestros métodos para proporcionar seguridad de threads.

  Con false, el motor JSP no envía solicitudes concurrentes a la página JSP. Probablemente no querremos forzar esta restricción en servidores de gran volumen porque puede dañar la habilidad del servidor de envíar nuestra página JSP a múltiples clientes.

info="text"
  Este atributo nos permite especificar una cadena de texto que es incorporada en el página JSP compilada. Podemos recuperar el string más tarde con el método getServletInfo().

errorPage="URLrelativa"
  Este atributo especifica un path a un fichero JSP al que este fichero JSP envía excepciones. Si el path empieza con una "/", el path es relativo al directorio raíz de documentos de la aplicación JSP y es resuelto por el servidor Web. Si no, el path es relativo al fichero JSP actual.

isErrorPage="true|false"
  Este atributo especifica si el fichero JSP muestra una página de error. Si es true, podemos usar el objeto exception, que contiene una referencia a la excepción lanzada, en el fichero JSP. Si es false (el valor por defecto), significa que no podemos uar el objeto exception en el fichero JSP.

contentType="mimeType [ ; charset=characterSet ]" | "text/html;charset=ISO-8859-1"
  Este atributo especifica el tipo MIME y la codificación de caracteres que use el fichero JSP cuando se envía la respuesta al cliente. Podemos usar cualquier tipo MIME o conjunto de caracteres que sean válidos para el motor JSP.

  El tipo MIME por defecto es text/html, y el conjunto de caracteres por defecto es ISO-8859-1.

Ozito