Sintaxis

"Implantación de aplicaciones web"

Las JavaServer Pages (JSP) nos permiten separar la parte dinámica de nuestras páginas Web del HTML estático. Simplemente escribimos el HTML regular de la forma normal, usando cualquier herramienta de construcción de paginas Web que usemos normalmente. Encerramos el código de las partes dinámicas en unas etiquetas especiales, la mayoría de las cuales empiezan con "<%" y terminan con "%>".

Elemento JSP Síntaxis Interpretación Notas
Expresión JSP <%= expression %>; La Expresión es evaluada y situada en la salida. El equivalente XML es <jsp:expression> expression </jsp:expression>. Las variables predefinidas son request, response, out, session, application, config, y pageContext.
Scriptlet JSP <% code %>; El código se inserta en el método service. El equivalente XML es: <jsp:scriptlet> code </jsp:scriptlet>.
Declaración JSP <%! code %> El código se inserta en el cuerpo de la clase del servlet, fuera del método service. El equivalente XML es: <jsp:declaration> code </jsp:declaration>.
Directiva page JSP <%@ page att="val" %> Dirige al motor servlet sobre la configuración general. El equivalente XML es: <jsp:directive.page att="val"\>. Los atributos legales son (con los valores por defecto en negrita):
  • import="package.class"
  • contentType="MIME-Type"
  • isThreadSafe="true|false"
  • session="true|false"
  • buffer="sizekb|none"
  • autoflush="true|false"
  • extends="package.class"
  • info="message"
  • errorPage="url"
  • isErrorPage="true|false"
  • language="java"
Directiva include JSP <%@ include file="url" %> Un fichero del sistema local se incluirá cuando la página se traduzca a un Servlet. El equivalente XML es: <jsp:directive.include   file="url"\>. La URL debe ser relativa. Usamos la acción jsp:include para incluir un fichero en el momento de la petición en vez del momento de la tradución.
Comentario JSP <%-- comment --%> Comentario ignorado cuando se traduce la página JSP en un servlet. Si queremos un comentario en el HTML resultante, usamos la síntaxis de comentario normal del HTML <-- comment -->.
Acción jsp:include <jsp:include page="relative URL" flush="true"/> Incluye un fichero en el momento en que la página es solicitada. Aviso: en algunos servidores, el fichero incluido debe ser un fichero HTML o JSP, según determine el servidor (normalmente basado en la extensión del fichero).
Acción jsp:useBean <jsp:useBean&nbsp;att=val*/> <jsp:useBean&nbsp;att=val*> ... </jsp:useBean> Encuentra o construye un Java Bean. Los posibles atributos son:
  • id="name"
  • scope="page|request|session|application"
  • class="package.class"
  • type="package.class"
  • beanName="package.class"
Acción jsp:setProperty <jsp:setProperty att=val*/> Selecciona las propiedades del bean, bien directamenteo o designando el valor que viene desde un parámetro de la petición. Los atributos legales son:
  • name="beanName"
  • property="propertyName|*"
  • param="parameterName"
  • value="val"
Acción jsp:getProperty <jsp:getProperty name="propertyName" value="val"/> Recupera y saca las propiedades del Bean.  
Acción jsp:forward <jsp:forward page="relative URL"/> Reenvía la petición a otra página.  
Acción jsp:plugin <jsp:plugin attribute="value"*> ... </jsp:plugin> Genera etiquetas OBJECT o EMBED, apropiadas al tipo de navegador, pidiendo que se ejecute un applet usando el Java Plugin.  

Directivas jSP

"Implantación de aplicaciones web"

Una directiva JSP afecta a la estructura general de la clase servlet.
Normalmente tienen la siguiente forma:
<%@ directive attribute="value" %>
Hay dos tipos principales de directivas: page e include.

- Directiva Page

La directiva page nos permite definir uno o más de los siguientes atributos sensibles a las mayúsculas:

import="package.class“ o import="package.class1,...,package.classN". Esto nos permite especificar los paquetes que deberían ser importados. Por ejemplo:
<%@ page import="java.util.*" %> El atributo import es el único que puede aparecer múltiples veces.

contentType="MIME-Type" o contentType="MIME-Type"; charset="Character-Set". Esto especifica el tipo MIME de la salida. El valor por defecto es text/html. Por ejemplo, la directiva: <%@ page contentType="text/plain" %> tiene el mismo valor que el scriptlet <% response.setContentType("text/plain"); %>

isThreadSafe="true|false". Un valor de true (por defecto) indica un procesamiento del servlet normal, donde múltiples peticiones pueden procesarse simultáneamente con un sólo ejemplar del servlet, bajo la suposición que del autor sincroniza las variables de ejemplar. Un valor de false indica que el servlet debería implementar SingleThreadModel, con peticiones enviadas serialmente o con peticiones simultáneas siendo entregadas por ejemplares separados del servelt.

session="true|false". Un valor de true (por defecto) indica que la variable predefinida session (del tipo HttpSession) debería unirse a la sesión existente si existe una, si no existe se debería crear una nueva sesión para unirla. Un valor de false indica que no se usarán sesiones, y los intentos de acceder a la variable session resultarán en errores en el momento en que la página JSP sea traducida a un servlet.

buffer="sizekb|none". Esto especifica el tamaño del buffer para el JspWriter out. El valor por defecto es específico del servidor, debería ser de al menos 8kb.

autoflush="true|false". Un valor de true (por defecto) indica que el buffer debería desacargase cuando esté lleno. Un valor de false, raramente utilizado, indica que se debe lanzar una excepción cuando el buffe se sobrecargue. Un valor de false es ilegal cuando usamos buffer="none".

extends="package.class". Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaución, ya que el servidor podría utilizar una superclase personalizada.

info="message". Define un string que puede usarse para ser recuperado mediante el método getServletInfo.

errorPage="url". Especifica una página JSP que se debería procesar si se lanzará cualquier Throwable pero no fuera capturado en la página actual.

isErrorPage="true|false". Indica si la página actual actúa o no como página de error de otra página JSP. El valor por defecto es false.

language="java". En algunos momentos, esto está pensado para especificar el lenguaje a utilizar. Por ahora, no debemos precuparnos por él ya que java es tanto el valor por defecto como la única opción legal.

- Directiva Include

Esta directiva nos permite incluir ficheros en el momento en que la página JSP es traducida a un servlet.

<%@ include file="url relativa" %>

La URL especificada normalmente se interpreta como relativa a la página JSP a la que se refiere, pero, al igual que las URLs relativas en general, podemos decirle al sistema que interpreta la URL reativa al directorio home del servidor Web empezando la URL con una barra invertida. Los contenidos del fichero incluido son analizados como texto normal JSP, y así pueden incluir HTML estático, elementos de script, directivas y acciones.

<%@page contentType="text/html" charset=iso-8859-1"%>
<%@page import="java.io.*,java.lang.*,java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN” "http://www.w3.org/TR/html4/loose.dtd">
<html>
</head>
<body>
<%@ include file="/navbar.html" %>
<!-- Part specific to this page ... -->
</body>
</html>