Infosintesis Solutions Group, S.L. Apéndice
Inicio | Apéndices

Sintaxis de las páginas JSP

En este apéndice vamos a ver los diferentes tipos de elementos de las páginas JSP versión 2.0. Para ello vamos a tener en cuenta cuenta la siguiente nomenclatura

Texto normal  = es requerido | = operador OR [  ]  = opcional +  = se puede repetir
negrita  = valor por defecto '   '  = literal { }  = opción requerida (  )  = agrupación
itálica  = texto que tiene que escribir el creador de la página JSP

^  = negación

...  = lista de elementos -  = un rango

Se pueden crear páginas JSP con sintaxis JSP o con sintaxis XML.

Elementos de código (Scripting elements)

El contenedor Web está capacitado para procesar cualquier lenguage de script que sepa interactuar con objetos Java

Los elementos de código permiten crear fragmentos de código Java que más tarde formará parte del Servlet que se crea a partir de la página JSP.

Los elementos de código se suelen utilizar para

Muchas de las tareas que realizan los elementos de código tendrían que ser eliminadas en favor de las librerías de etiquetas personalizadas (custom tags libraries) o en su defecto librerías de etiquetas JSP estándares (JSP Standard Tag Library, JSTL)

Elementos de código (scriptlets)
  Sintaxis
                  Descripción JSP XML
Código El fragmento de código Java que se encuentra dentro de este elemento se ejecuta en los métodos doGet(...) o doPost() del Servlet  <% fragmento de código %> <jsp:scriptlet>
 fragmento de código
</jsp:scriptlet>
Expresión

Se evalúa y el resultado se muestra por la salida.

Ejemplo <%= validadorDat...

<%= expresión %> <jsp:expression>
 expresión
</jsp:expression>
Declaración

El código Java se inserta en el cuerpo de la Clase del Servlet y fuera de los métodos doGet(...) o doPost().

Se utiliza para declarar variables de instáncia, métodos y Clases.

<%! declaración; [ declaración; ]+ ... %> <jsp:declaratio>
 declaration [ declaration; ]+ ...
</jsp:declaratio>

Directivas

Permiten controlar la configuración general del Servlet que se crea a partir del fichero con extensión .jsp

Directivas
  Sintaxis
                  Descripción JSP XML
Página

Son indicaciones que se dan al Contenedor Web acerca de los parámetros generales de ejecución para esa página.

Ejemplo <%@ page pageEncoding...

<%@ 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" ] [ isErrorPage="true | false" ]
[ contentType="{mimeType [ ; charset=characterSet ] |
text/html ; charset=ISO-8859-1}" ]
[ pageEncoding="{characterSet | ISO-8859-1}" ]
[ isELIgnored="true | false" ]
%>
<jsp:directive.page
 listaAttrDirectivasDePágina
/>

Donde
listaAttrDirectivasDePágina se refiere a la lista de la columna JSP.
Inclusión

Se incluye un fichero en el momento en que la página JSP se transforma en un Servlet contenido en un fichero con extensión .java

  • es decir, el fichero ya está incluido antes de que el Contenedor Web compile el Servlet

Ventajas: en tiempo de ejecución, el Contenedor Web no tiene que hacer ningún trabajo extra, por que el fichero ya ha sido incluido con anterioridad

Desventajas: si el recurso externo cambia, el Servlet asociado al JSP no es modificado

cualquier variable o método definidas en el JSP principal, serán acccesibles desde el fichero incluido.

<%@ include file="URLrelativa" %> <jsp:directive.include file="URLrelativa" />
Taglib

Define el Tag Library Descriptor (TLD, Descriptior de Librería de Etiquetas) y su prefijo para Custom Tags (Etiquetas Personalizadas) utilizadas en la página JSP.

Ejemplo <%@ taglib uri=/WEB-INF/tl...

<%@ taglib {uri="URI"
| tagdir="/WEB-INF/tlds[/subdir]+" } prefix="prefijoEtiqueta"
%>
Se incluye en el elemento <jsp:root>

<cualquierEtiqueta xmlns:prefix="{uri | urn:jsptld:path |
urn:jsptagdir:/WEB-INF/tags[/subdir]+ }"
>

Ejemplo:
<prefijo1:etiqueta1 xmlns:my="urn:jsptld:/WEB-INF/tlds/my.tld" />

Elementos estándares

Se corresponden con Objetos que pueden ser utilizados para llevar a cabo determinadas funcionalidades.

Elementos estándares
  Sintaxis
  Descripción JSP XML
<jsp:
useBean>

Se utiliza para localizar o instanciar un JavaBean con un nombre y ámbito (scope) específico.

Ejemplo <jsp:useBean id=vali...

<jsp:useBean
id="nombreInstanciaJBean"
scope="page
 
| request | session | application"
{
class="package.class" [ type="package.class" ] |
beanName="{package.class | '${' Expresión '}' |
<%= expresión %>}"
type="package.class" |
type="package.class"
}
{ /> | > otros elementos
</jsp:useBean> }
<jsp:useBean
id="nombreInstanciaJBean"
scope="page
 
| request | session | application"
{
class="package.class" [ type="package.class" ] |
beanName="{package.class | '${' Expresión '}' |
%= expresión %}"
type="package.class" |
type="package.class"
}
{ /> | >otros elementos
</jsp:useBean> }
<jsp:
getProperty >

se utiliza para obtener el valor de la propiedad o variable de instancia de un JavaBean. El valor se inserta en el resultado.

Ejemplo <jsp:getProperty name...

<jsp:getProperty name="nombreInstanciaJavaBean"
property="propertyName" />
Igual que la sintaxis JSP
<jsp:
include >

Se incluye un fichero cada vez que el navegador solicita una página JSP. Es decir, el JSP solicitado se para y vacía su stream de salida. Entonces llama al fichero que tiene que incluir e inserta la salida en el stream de salida. Cuando el fichero externo ha finalizado, entonces el Contenedor Web retoma el envio del JSP solicitado

Ventajas: si el recurso externo se modifica, automáticamente se envía al Navegador la última versión del mencionado recurso.

Desventajas: en tiempo de ejecución, el Contenedor Web tiene que insertar el recurso externo.

<jsp:include page="{URLrelativa | '${'Expresión'}' |
<%= expresión %>}"
[ flush="true | false" ]
{ /> | > [ <jsp:param name="nombreParámetro"
value="{valorParámetro | '${' Expresión '}' |
<%= expresión %>}" /> ] +
<jsp:include page="{URLrelativa | '${' Expresión '}' |
%= expresión %}"
[ flush="true | false" ]
{ /> | > [ <jsp:param name="nombreParámetro"
value="{valorParámetro |'${' Expresión '}' |
%= expresión %}" /> ] +
<jsp:
forward >
Se utiliza para reenviar la petición a otra página JSP o Servlet. <jsp:forward page="{URLrelativa  | '${' Expresión'}' |
<%= expression %> }"
{ /> | > [ <jsp:param name="nombreParámetro"
value="{valorParámetro | '${' Expresión '}' |
<%= expresión %>}" } /> ] +
</jsp:forward> }
<jsp:forward page="{URLrelativa | '${' Expresión'}' |
<%= expression %> }"
{ /> | > [ <jsp:param name="nombreParámetro"
value="{valorParámetro | '${' Expresión '}' |
%= expresión %}" } /> ] +
</jsp:forward> }
<jsp:
root >

Representa al elemento raíz de la página JSP.

Indica al Contenedor Web que la página JSP está escrita con sintaxis XML.

Define a través de atributos espacios de nombre (namespaces) para localizar librerías de etiquetas (tag libraries).

Ejemplo <jsp:root version...

No tiene equivalente. <jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
[xmlns:taglibPrefix="URI"]+ ...
version="2.0">
otros elementos
</jsp:root>

Objetos

Las páginas JSP cuentan con una serie de Objetos implícitos. De hecho, son los Objetos que se manejan en un Servlet.

Objetos
                  Clase Ámbito Métodos
request
Subclase de javax.servlet.ServletRequest Request getAttribute, getParameter, getParameterNames, getParameterValues, setAttribute
session

javax.servlet.http.HttpSession

Session getAttribute, getId, setAttribute
application

javax.servlet.ServletContext

Application getAttribute, getMimeType, getRealPath, setAttribute
out javax.servlet.jsp.JspWriter Page clear, clearBuffer, flush, getBufferSize, getRemaining

Expresiones EL (Expression Language)

Expresiones EL (Expression Language)
  Sintaxis
                  Descripción JSP XML
Expresión EL Contiene una expresión en el JSP Expression Language (EL) ${ Expresión } Igual que la sintaxis JSP

Comentarios

El Contenedor Web prescinde de los comentarios cuando la página se convierte en un Servlet

Comentarios
  Sintaxis
                  Descripción JSP XML
Comentario Los comentarios pueden incluir cualquier literal que no sea --%> or --> si el comentario está realizado en una sintaxis XML. <%-- comentario --%> <!--comentario-->

Un resumen completo editado por Sun sobre la sintaxis de las páginas JSP lo podemos encontrar en los documentos

Ignasi Pérez Valls
asesor-formador independiente
ignasiperez[ARROBA]javadabbadoo[PUNTO]org
Infosintesis Solutions Group, S.L.
Formación, asesoramiento y desarrollo de proyectos informáticos