Colección de ejemplos prácticos de JSP para comprender los distintos elementos del lenguaje.
Hola Mundo
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hola Mundo</title>
</head>
<body>
<% out.println("Hola Mundo"); %>
</body>
</html>
Comentarios
Los comentarios JSP (<%-- --%>) no se incluyen en la respuesta enviada al cliente, a diferencia de los comentarios HTML que sí son visibles en el código fuente:
<%@ page language="java" %>
<html>
<head>
<title>Ejemplo de comentarios ocultos</title>
</head>
<body>
<h2>Ejemplo de comentarios ocultos</h2>
<%-- Este comentario no se incluye en el response --%>
<!-- Fecha de compilacion: <%= new java.util.Date()%> -->
</body>
</html>
Contador de accesos (declaración)
Uso de una declaración (<%! %>) para definir un atributo de clase que persiste entre peticiones:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Contador de accesos</title>
</head>
<body>
<%! private int accessCount = 0; %>
Número de veces que se consultó a la página:
<%= ++accessCount %>
</body>
</html>
Color de fondo (parámetro de petición)
Recupera un parámetro de la URL para cambiar dinámicamente el color de fondo de la página:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Color de Fondo</TITLE>
</HEAD>
<%
String bgColor = request.getParameter("bgColor");
boolean hasExplicitColor;
if (bgColor != null) {
hasExplicitColor = true;
} else {
hasExplicitColor = false;
bgColor = "WHITE";
}
%>
<BODY BGCOLOR="<%= bgColor %>">
<H2 ALIGN="CENTER">Color de Fondo</H2>
</BODY>
</HTML>
Scriptlet con bucle
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<HTML>
<head>
<title>Página de ejemplo de scriptlet</title>
</head>
<body>
<h1>Página de ejemplo de scriptlet</h1>
<%
for (int i = 0; i < 10; i++) {
out.println("<b>Hola a todos. Esto es un ejemplo de scriptlet " + i + "</b>");
System.out.println("Esto va al stream System.out: " + i);
}
%>
</body>
</HTML>
Combinando HTML y Java
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>HTML y Java combinado</title>
</head>
<body>
<% if (Math.random() < 0.5) { %>
Tiene un <B>día</B> feliz!
<% } else { %>
Tiene un <B>dia</B> aburrido!
<% } %>
</body>
</html>
Expresiones
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<HTML>
<head>
<title>Página de ejemplo de expresiones</title>
</head>
<body>
<h1>Página de ejemplo de expresiones</h1>
Hola a todos, son las <%= new java.util.Date().toString() %>
</body>
</HTML>
Expresiones avanzadas
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Ejemplo: Expresiones</TITLE>
</HEAD>
<BODY>
<H2>Ejemplos de expresiones JSP</H2>
<UL>
<LI>Hora actual en el servidor: <%= new java.util.Date() %></LI>
<LI>Nombre del host: <%= request.getRemoteHost() %></LI>
<LI>Identificador de sesion: <%= session.getId() %></LI>
<LI>Valor del parametro testParam: <%= request.getParameter("testParam") %></LI>
</UL>
</BODY>
</HTML>
Parámetros y formulario
Muestra el formulario si no se ha enviado el nombre, o el saludo si ya está disponible:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>Saludo con parámetro</title>
</head>
<body>
<%
String nombre = request.getParameter("nombrePila");
if (nombre != null) {
%>
<h1>Hola <%= nombre %>, <br/>¡ Bienvenido a la página !</h1>
<%
} else {
%>
<form action="ejemplo05.jsp" method="get">
<p>Escriba su nombre y pulse Enviar</p>
<p>
<input type="text" name="nombrePila" />
<input type="submit" value="Enviar" />
</p>
</form>
<%
}
%>
</body>
</html>
Parámetros entre dos páginas JSP
ejemplo06a.jsp — Formulario
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Ejercicios saludos</title>
</head>
<body>
<p>Nos devuelve un saludo con el nombre que le pasemos en el formulario</p>
<form action="ejemplo06b.jsp" method="post">
<input type="text" name="nombre">
<input type="submit" value="enviar">
</form>
</body>
</html>
ejemplo06b.jsp — Procesado
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>Respuesta saludo</title>
</head>
<body>
<%
if (request.getParameter("nombre") != null
&& request.getParameter("nombre") != "") {
%>
Hola <%= request.getParameter("nombre") %>
<%
} else {
%>
Hola Desconocido
<%
}
%><br/>
<a href="ejemplo06a.jsp">Volver</a>
</body>
</html>
Control de errores
velocidad.jsp — Página principal
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Cálculo de velocidad</TITLE>
</HEAD>
<BODY>
<%@ page errorPage="VelocidadError.jsp" %>
<%!
private double toDouble(String value) {
return(Double.valueOf(value).doubleValue());
}
%>
<%
double espacio = toDouble(request.getParameter("espacio"));
double tiempo = toDouble(request.getParameter("tiempo"));
double speed = espacio / tiempo;
%>
<UL>
<LI>Espacio: <%= espacio %>.</LI>
<LI>Tiempo: <%= tiempo %>.</LI>
<LI>Velocidad: <%= speed %>.</LI>
</UL>
</BODY>
</HTML>
VelocidadError.jsp — Página de error
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Página de error</TITLE>
</HEAD>
<BODY>
<%@ page isErrorPage="true" %>
<TABLE BORDER="5" ALIGN="CENTER">
<TR>
<TH CLASS="TITLE">Error al calcular la velocidad</TH>
</TR>
</TABLE>
<P>
Hay un error en la página Velocidad.jsp:
<I><%= exception %></I>.
<PRE><% exception.printStackTrace(new java.io.PrintWriter(out)); %></PRE>
</P>
</BODY>
</HTML>
La directiva <%@ page errorPage="VelocidadError.jsp" %> redirige automáticamente al fichero de error cuando se produce una excepción no controlada. La página de error debe declarar isErrorPage="true" para poder acceder al objeto implícito exception.