Temario detallado‎ > ‎5: Web Server Side‎ > ‎Java‎ > ‎

Desarrollo Web: Generación de HTML basada en Templates

JSP

Java Server Page es un template: permite intercambiar programación (en java) con parte visual de presentación (html).

Primer ejemplo: saber la hora

Queremos hacer una página con un botón que muestre la hora.

1. La aplicación tiene un punto de entrada raíz: index.jsp, que es el default al que va a apuntar el web server cuando le pidamos que ejecute una aplicación
   
   http://localhost:8080/hora-ui-jsp/

En realidad, no necesitamos que la página sea jsp, podría ser un formulario html puro.

2. En la segunda página, para mostrar la hora se intercala código que ejecuta en el servidor con html que va a parsear el browser.

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ 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>Hora actual</title>
</head>
<body>
<h2><%=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()) %></h2>
<form method="post" action="index.jsp">
<input type="submit" value="Volver">
</form>
</body>
</html>
 
Cosas que se resuelven programáticamente:
  • obtener un nuevo Date
  • formatear ese nuevo Date enviando un mensaje a un SimpleDateFormat
Cosas que se resuelven con HTML:
  • generar un form para volver a la página anterior
  • ubicar la información de la hora en la pantalla (layout / controles), separando las secciones head y body (y form)
  • delegar en un archivo de estilos (css) los formatos de los controles, incluyendo a la página

¿Qué es una JSP?

  • Recordamos que HTML no es un lenguaje de programación. 
  • Si nuestra intención es que nuestra vista tenga cierto comportamiento, una opción es escribir código javascript que se ejecuta en el cliente. 
  • Otra posibilidad es que usemos un lenguaje de scripting para generar una página híbrida que tiene cosas para ejecutar en el servidor y a su vez código HTML que el browser en el cliente puede recibir
    • lo que tiene que ejecutar el servidor se encierra en un tag <% ... %>, llamado scriptlet
    • Dentro del scriptlet se escribe código Java: imports de clases, envío de mensajes a objetos, etc. 
    • El código ejecutado en el servidor puede producir como output código HTML o información para la página
    • El resultado de lo que ejecuta el servidor + los tags HTML es lo que finalmente termina recibiendo el cliente
  • JSP es un lenguaje de scripting que Sun especificó, hay por supuesto otras tecnologías en el mercado: 
    • ASP (propuesta por Microsoft), 
    • PHP (Software Libre)
  • Una página JSP se termina implementando como una clase Java
Algunos links útiles:
Volvemos sobre el primer ejemplo en JSP que muestra la hora. Tenemos dos JSP: 
  • la página principal
  • la segunda que es la que responde al pedido.
Este es el primer approach para resolver pedidos del usuario:
  1. un formulario captura la información que el usuario carga y ofrece un botón submit o un link a otra página...
  2. ... que es la que procesa el pedido en base a la información de la página anterior.
¿Cómo se pasa información de una página a otra?
  1. Vía GET
  2. Vía POST
El que envía la información es el formulario de la página. Recordemos que una página tenía varias secciones:
  • <HEAD>, con el título y datos para el browser/web server
  • <BODY>, el cuerpo principal de la página donde aparece
    • <FORM>, que define un formulario -igual que en HTML- donde van los elementos gráficos, controles o widgets.