Las etiquetas JSP son poderosas y encapsulan tareas que serían difíciles o llevarián mucho tiempo de programar.Los lenguajes de script que tenemos disponibles dependen del motor JSP que estemos usando. Con la implementación JSP de Sun, debemos usar el lenguaje Java como lenguaje de script, pero otros motores de JSP de terceras partes podrían incluir soporte para otros lenguajes.
Las etiquetas JSP tienen diferentes categorías:
Comentarios: <%-- mi comentario --%>
Declaraciones: se utiliza para declarar variables de tipos simples,objetos y métodos. .Ejemplo: <%! int contador = 0; %>. La sintaxis es puro Java y se continua con la vieja regla de "declarar antes de usar".
Expresiones: al procesar la página la salida es el valor de la expresión delimitada por <%= %>, por ejemplo podemos insertar la expresión dentro de una línea HTML típica
& ltp>La cuenta es: <%=contador%> <p>El cuadrado de la cuenta es: <%=cuadrado( contador )%> <%-- Llamada a método --%>
Scriptlets: un conjunto de instrucciones Java. Formato: <% scriptlet %>. Ejemplo:
<%! int base = 5, altura = 7 ; %> <% base * altura / 2.0; new java.util.Date(); %> <BR> Hola HTML <% System.out.println( "de regreso a scriplets" ); base + altura; %>
Directivas: su sintaxis general es <%@ directiva {atributo ="valor"} %> dónde la directiva debe tener al menos un atributo:
Directivas page: en función del atributo utilizado sirven para la configuración general: importar clases, definir tipo MIME, etc.
<%@ page import="paquete.clase" %> <%@ page contentType="tipo MIME" %>
Para contentType los valores por defecto son contentType="text/html; charset=iso-8859-1".
Algunos atributos:
import="package.*,clase.class" Sirve para importar paquetes y clases.
session="true|false" Por defecto es true. Indica si mantiene atributos de sesión para la página.
isThreadSafe="true|false" Por defecto es true. Si es true cada petición corre en un hilo y por tanto el procesador maneja las peticiones de forma asíncrona ("simultáneamente"). Con false se gestionan las peticiones en un hilo (una por una).
info="text" Información de la página a la que se puede acceder a través del método Servlet.getServletInfo()
errorPage="pagina_error". Página que manejará las excepciones.
isErrorPage="true|false". Indica si es una página que manejará errores.
Ejemplos:
<%@ page import=”com.myco.*” buffer=”26k” errorPage=”/oops.jsp”%>
Para reenviar una excepción a una página tiene: <%@ page errorPage="07_errorPage.jsp"%> En la página de error (07_errorPage.jsp) tenemos una forma de capturar el error por medio del objeto implícito "exception":
<%@ page isErrorPage="true" %>
<html>
<head><title>Ejemplo de errorPage
<body>
<h1>Se ha producido un error
<p>Error: <%= exception %>
Esta página capta las excepciones. No capta los errores debidos a fallos de enlace (URL).
Directivas include: se inserta un fichero en el lugar de la directiva. Matiz: se inserta el fichero, no su valor o resultado. Utiles, entre otras cosas, para insertar código HTML o JSP que se repite. La URL debe ser relativa. Ejemplo:
<%@ include file="cabecera.html" %>
Directivas Taglib: indica la referencia a la librería de etiquetas definidas por el programador (etiquetas personalizadas). El motor JSP utiliza esta librería para saber como interpretar las etiquetas personalizadas de la página JSP.Ejemplo:
<%@ taglib uri="URI_de_librería" prefix="prefijo_de_etiquetas" %>
URI es el descriptor único de la librería. No tiene valor por defecto. Si no se especifica aparece una excepción. El prefijo es el prefijo en la expresión prefijo:etiqueta, que sirve para definir la etiqueta personalizada. Cuando el motor de JSP se encuentra en la página con la expresión prefijo_de_etiquetas:etiqueta, entonces se dirige a la librería señalada en URI para interpretar la etiqueta. Las etiquetas personalizadas son importantes en el manejo de JSP.
Acciones: realizan una tarea en el momento en que se solicita la página. Sirven para acceder a beans, etc. La acción de inclusión, a diferencia de la directiva de inclusión, implica la sustitución por el valor o resultado del archivo en el momento de la petición. Ejemplo:
<jsp:include page="también una URL relativa" flush="true"/>
Otra acción es jsp:forward, que tiene el mismo comportamiento que javax.servlet.RequestDispatcher. Su sintaxis admite (o no) parámetros. La ejecución de la página invocante se detiene para resolver el forward. Sintaxis:
<jsp:forward page="también una URL relativa">
<jsp:param name="nombre_parametro" value="valor" />