JavaServe
r Pages
(JSP)
JSP
Java Server Pages (JSP): es una tecnología Java que
permite generar contenido dinámico para web, en forma de
documentos HTML, XML o de otro tipo.
Esta tecnología es un desarrollo de la compañía Sun
Microsystems. La Especificación JSP 1.2 fue la primera
que se liberó.
Las JSP's permiten la utilización de código Java mediante
scripts. Además, es posible utilizar algunas acciones JSP
predefinidas mediante etiquetas. Estas etiquetas pueden
ser enriquecidas mediante la utilización de Bibliotecas de
Etiquetas (TagLibs o Tag Libraries) externas e incluso
personalizadas.
JSP
Arquitectura
El funcionamiento general de la tecnología JSP es que el
Servidor de Aplicaciones interpreta el código contenido en la
página JSP para construir el código Java del servlet a
generar. Este servlet será el que genere el documento
(típicamente HTML) que se presentará en la pantalla del
Navegador del usuario.
Servidor
Cliente
JSP de Aplicaciones
(Navegador)
Servlets
JSP
El código fuente de una página JSP puede contener:
- Directivas: Indican información general de la página,
como puede ser importación de clases, página a invocar
ante errores, si la página forma parte de una sesión,
etc.
- Declaraciones: Sirven para declarar métodos o
variables.
- Scriptlets: Código Java embebido.
- Expresiones: Expresiones Java que se evalúan y se
envían a la salida.
- Tags JSP: Etiquetas especiales que interpreta el servidor.
JSP
Un ejemplo simple de archivo JSP sería:
<%@page import="[Link].*"%>
<%! String cadena="Bienvenidos a JSP"; %>
<html><body><%= cadena %>
<br>
<% [Link](new Date()); %>
</body>
</html> .
JSP
JSP tiene bastantes ventajas frente a otras
orientaciones, como ASP o PHP. Al ser JSP una
especificación, podemos elegir entre diversas
implementaciones, comerciales o gratuitas, sin
tener que depender de un proveedor en particular.
Quizá la ventaja fundamental es que tenemos toda
la potencia del lenguaje Java a nuestro alcance,
con sus ventajas como reusabilidad, robustez,
multiplataforma, etc.
JSP
Elementos de JSP
1) Código Java: Se puede insertar código Java dentro
de JSP de tres formas:
* Expresiones
* Scriptlets
* Declaraciones
JSP
Expresiones: Son fragmentos de código Java, con la
forma <%= expresión %> que se evalúan y se
muestran en la salida del navegador. En general,
dentro de una expresión podemos usar cualquier
cosa que usaríamos dentro de un
[Link](expr);
Ejemplos:
<%= "Tamaño de cadena: "+[Link]() %>
<%= [Link]() %>
<%= [Link]*2 %>
JSP
Scriplets: Son fragmentos de código Java con la
forma <% código %>, en general, podemos
insertar cualquier código que pudiéramos usar
dentro de una función Java. Para acceder a la
salida del navegador, usamos el objeto
implícito out.
JSP
Ejemplos:
1)<table>
<% for (int i=0;i<10;i++)
{
%>
<tr><td> <%=i%> </td></tr>
<% }
%>
</table>
2) <% [Link]("<table>");
for (int i=0;i<10;i++)
[Link]("<tr><td>"+i+"</td></tr>");
[Link]("</table>");
%>
JSP
Si observamos los dos ejemplos anteriores (que
hacen lo mismo), podría parecer que la segunda
opción es más deseable, pero en general hay que
evitar el uso de [Link]() para elementos
HTML. En un proyecto en el que trabajen
programadores y diseñadores conjuntamente, hay
que separar presentación y código tanto como sea
posible.
Dentro de un scriptlet podemos usar cualquier
librería de Java, incluyendo las propias, lo cual
hace que resulte muy sencillo construir interfaces
web de entrada y salida para nuestras clases.
JSP
<% String
parametro1=[Link]("parametro1
");
String
parametro2=[Link]("parametro2
");
MiClase miClase=new MiClase();
String salida=[Link](parametro1,
parametro2);
%>
<%= salida %>
JSP
Para introducir comentarios en JSP, usaremos las
marcas
<%-- comentario --%> , dentro de un
scriptlet o declaración podemos usar comentarios
siguiendo la sintaxis de Java.
<%-- Comentario JSP --%> <!-- Comentario HTML -->
<%
// Comentario
/* Comentario */
%>
JSP
Declaraciones: Contienen declaraciones de
variables o métodos, con la forma <%!
declaración %>. Estas variables o métodos serán
accesibles desde cualquier lugar de la página JSP.
Hay que tener en cuenta que el servidor transforma la
página JSP en un servlet, y éste es usado por
múltiples peticiones, lo que provoca que las variables
conserven su valor entre sucesivas ejecuciones.
JSP
Ejemplos:
<%! int numeroAccesos=0; %>
<html><body><%=
"La página ha sido accedida "+(++numeroAccesos)+
" veces desde el arranque del servidor"
%>
</body>
</html>
<%! [Link] primerAcceso=new [Link](); %>
<html><body>El primer acceso a la página se realizo en:
<%= primerAcceso %>
</body>
</html>
JSP
Ejemplos:
<%! private String ahora()
{
return ""+new [Link]();
}
%>
<html><body><%= ahora() %>
</body>
</html>
JSP
Directivas
Las directivas son elementos que proporcionan
información al motor JSP, e influirán en la
estructura del servlet generado. Hay tres tipos
de directivas:
* Page
* Taglib
* Include.
JSP
Page
Se indica con la forma <%@ page atributo="valor">.
Tiene diversos usos, entre las cuales se destacan:
*Importar clases. Importar código, de la misma forma
que se realiza en un programa en Java, se indica con el
atributo import.
Ejemplo:
<%@page import="[Link].*, [Link]"%>
*Indicar si la página tendrá acceso a la sesión. Se
especifica con el atributo session.
<%@page session="true" import="[Link]"%>
JSP
* Gestión de errores. Permite redireccionar a una página
cuando se produzca un error, se indica con los
atributos errorPage y isErrorPage.
Ejemplos:
<%@page errorPage="[Link]">
<%@page isErrorPage="yes">
<html><body>Error, contacte con el administrador [...]
</body>
</html>
JSP
include: Permite incluir un archivo en el lugar donde se
especifique, al contrario que con la acción
<jsp:include>, la directiva include simplemente
copia el contenido del archivo byte a byte, siendo el
resultado similar a si copiáramos el texto del archivo
incluido y lo
pegáramos en el JSP.
Ejemplo:
<html><head><%@ include file="[Link]"%>
</head>
<body><%@ include file="[Link]"%>
</body>
</html>
JSP
Taglib: Se emplea para indicar que se van a
emplear librerías de etiquetas.
Ejemplo:
<%@ taglib prefix="c"
url="[Link] %>
JSP
Acciones
Las acciones tienen la forma <jsp:accion
[parámetros]/>, y tienen diversos usos, entre los
que destacan la inclusión de páginas y transferencia de
control.
Inclusión de páginas
Se realiza con la acción <jsp:include
page="[Link]">. Incluye la salida de otra
página JSP en la actual, al contrario que con la
directiva <%@include file="[Link]"%> la página
incluida se ejecuta y su salida se inserta en la página
que la incluye, con la directiva se incluye el contenido
del archivo (no su salida) y se ejecuta conjuntamente
con la página principal.
JSP
La página incluída tiene acceso a los parámetros
enviados a la principal, y podemos enviarle nuevos
parámetros con la subetiqueta <jsp:param
name="nombre" value="valor"/>.
Ejemplo
<html><head><jsp:include page="[Link]"/>
</head>
<body>
<jsp:include page="[Link]">
<jsp:param name="tipo" value="paginaPrincipal"/>
</jsp:include>
</body>
</html>
JSP
Transferencia de control
Se realiza con la acción <jsp:forward
page="[Link]"/>. La petición es redirigida a otra
página, y la salida de la actual se descarta. Al igual
que con la inclusión, la página a la que se redirige
tiene acceso a los parámetros pasados a la actual, y es
posible el envío de nuevos parámetros.
Ejemplo:
<jsp:forward page="[Link]">
<jsp:param name="titulo" value="Principal"/>
</jsp:forward>