¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrollo informático
  3. Servlet
Extrait - Desarrollo informático Aprenda a diseñar antes de programar
Extractos del libro
Desarrollo informático Aprenda a diseñar antes de programar Volver a la página de compra del libro

Servlet - JSP complementos

Transmisión de datos entre Servlet y JSP: proyecto ServletJsp2

1. Pantallas del proyecto ServletJsp2

  • Pantalla de inicio:

images/05_304.png
  • En caso de entrada de datos correcta, se muestra una pantalla de entrada de información adicional:

images/6_304.png
  • A continuación, se muestra un resumen después de la validación del formulario:

images/7_304.png

En la pantalla resumen, se muestran los datos introducidos en la pantalla de inicio y en la pantalla de información adicional.

2. Encadenamiento de los programas y de las pantallas del proyecto ServletJsp2

images/1_304.png
  • En la pantalla de inicio, el cliente introduce su nombre y su contraseña.

  • Cuando el cliente valida, ServletValidacion recibe estos dos datos como argumentos de la consulta.

  • Si el cliente se valida, ServletValidacion lanza el programa informacion.html, que muestra una pantalla de introducción de datos de tres datos adicionales.

  • Cuando el cliente valida, ServletRecap recibe estos tres datos, que transmite para su visualización a la JSP resumen.jsp con el objeto. En contraposición, no puede transmitirle el nombre del usuario que no recibe.

  • La JSP resumen.jsp muestra un resumen de los datos introducidos en las dos pantallas: los tres datos de la pantalla de información adicional y el nombre del usuario introducido en la pantalla de inicio. Para esto último, es necesario que el Servlet ServletValidacion lo transmita. ServletValidacion dispone para ello de tres medios: las sesiones (HttpSession), el objeto ServletContext y las cookies (Cookie).

3. Transmisión de datos entre Servlet y JSP por sesión

a. Interfaz HttpSession

images/03041e.png

Una sesión es accesible a partir de un objeto HttpServletRequest.

La llamada al método getSession() de HttpServletRequest permite recuperar el objeto sesión. Si todavía no existe, se crea.

Una sesión permanece accesible de una consulta a la otra, a lo largo de un mismo diálogo.

b. Clase ServletValidacion

El método setAttribute() del objeto HttpSession permite escribir un atributo en la sesión. Este atributo se forma por una pareja nombre/valor. El valor puede ser un objeto.

public class ServletValidacion extends HttpServlet  
{  
  
   protected void processRequest(HttpServletRequest request,  
                                 HttpServletResponse response)  ...

La reentrada

Las sesiones ¿son una garantía contra la mezcla de datos entre dos clientes?

No totalmente, porque un Servlet solo se instancia una vez y se utiliza por todos los clientes. Por lo tanto, sus propiedades son comunes a todos los clientes.

No habrá que poner los datos propios de cada cliente.

1. Proyecto Reentrada

Este proyecto retoma ServletJsp2: transmisión de datos entre Servlet y JSP por Session.

Los siguientes programas se modifican:

  • web.xml

  • ServletValidacion.java

a. web.xml

Un argumento del Servlet ServletValidacion, llamado temporizacion, con valor 10000, se declara en el archivo web.xml:

<?xml version="1.0" encoding="UTF-8"?>  
   . . .  
   <servlet>  
       <servlet-name>ServletValidacion</servlet-name>  
       <servlet-class>ServletValidacion</servlet-class>  
       <init-param>  
           <param-name>temporizacion</param-name>  
           <param-value>10000</param-value>  
       </init-param>  
   </servlet>  
   . . . 

b. Clase ServletValidacion

Las variables miHerram y contraseniaHerram, que recepcionan las zonas correspondientes de la pantalla...

El MVC2

1. Definición

  • La aplicación ServletJsp2 respeta el modelo MVC:

  • Todas las consultas HTTP de los clientes se envían a un Servlet.

  • Un Servlet, después de consultar el modelo, llama a una JSP para responder al cliente.

  • La utilización de las sesiones es coherente con el modelo MVC:

  • Una JSP no escribe en una sesión. Se limita a leer los datos necesarios para la visualización.

  • Es el Servlet o una clase del modelo quien escribe en la sesión.

El modelo MVC2 obliga a tener solo un Servlet para controlar todas las pantallas de la aplicación.

2. Aplicación al proyecto ServletJsp2: proyecto ServletJsp2MVC2

a. Encadenamiento de los programas y las pantallas

  • El Servlet único, que sustituye ServletValidacion y ServletRecap, se llama ServletControlador.

  • En la aplicación ServletJsp2, el programa index.html muestra la pantalla de inicio. Sin embargo, es responsabilidad del Servlet controlar esta visualización. index.html se sustituye por una JSP: index.jsp, que se limita a transmitir el control a la ejecución del Servlet único: ServletControlador.

  • Se añade a las pantallas sin formulario (usuario desconocido, contraseña incorrecta, resumen) un enlace aServletControlador.

images/2_304.png
  • Para tratar una consulta, ServletControlador necesita saber de qué pantalla proviene. Para esto, cada JSP se identifica con un número:

  • 0 para indice.jsp

  • 1 para inicio (inicio.jsp)

  • 2 para usuario desconocido (resultado0.jsp)

  • 3 para contraseña desconocida (resultado1.jsp)

  • 4 para información adicional (informacion.html)

  • 5 para resumen (resumen.jsp)

  • Estos números se indican en el argumento accion de un formulario o en el argumento href de una etiqueta <a>. Ejemplos:

<form action="ServletControlador?idPantalla=1" method="post">  
 
<a href="ServletControlador?idPantalla=3">Retorno a la pantalla de inicio</a> 

b. indice.jsp

Transmite el control de la ejecución a ServletControlador, pasándole el argumento idPantalla inicializado a 0.

<%@page contentType="text/html" pageEncoding="UTF-8"%>  
<jsp:forward...

Trabajo práctico: proyecto GestionContactoMVC2

1. Objetivos

  • Utilizar los Servlets y los JSP para desarrollar una aplicación 3 tiers web que acceda a una base de datos.

  • Respetar el modelo MVC 2.

2. Tema

a. Para realizar

La aplicación GestionContactoMVC2 retoma la aplicación cliente pesado GestionContactoJdbc

Permite a un usuario realizar las operaciones básicas sobre las tablas de los contactos de la base de datos: Creación, Lectura, Modificación y Eliminación.

Se programa para empezar la lista de los contactos y la modificación de un contacto. Estas dos operaciones son suficientes para aplicar todas las competencias.

b. Piezas de software

Las piezas de software que se van a desarrollar están en blanco (Ventanas WEB y Controlador). Aquellas que se van a utilizar sin modificación están en gris.

images/3_304.png

c. Documentos proporcionados

  • Las copias de las pantallas de la aplicación.

  • El encadenamiento de los programas y de las pantallas que se van a desarrollar.

  • Un diagrama de secuencia de la aplicación (Lista de los contactos).

d. Pantallas de la aplicación

Pantalla de inicio

Esta pantalla contiene tres zonas variables:

  • Una zona de entrada de texto (Número de contacto).

  • Un grupo de botones de radio, que permiten elegir la operación que se va a realizar.

  • Una zona de mensaje que permite mostrar los mensajes de error.

images/20_304.png

Pantalla lista

Esta pantalla contiene un enlace a la página de inicio.

images/21_304.png

Pantalla de modificación

Esta pantalla contiene cinco zonas de entrada de texto y dos botones.

  • El botón Cancelar lleva a la página de inicio.

  • El botón Guardar lleva a la página de resumen.

Una zona de mensaje permite mostrar los mensajes de error.

images/22_304.png

Pantalla de resumen

Esta pantalla contiene un enlace a la página de inicio.

images/23_304.png

e. Elemento de diseño

Se envía sistemáticamente a cada JSP los datos que se han de mostrar en todas las zonas variables. Esta información se almacena en la sesión y se lee al inicio de la JSP.

f. Encadenamiento de los programas y de las pantallas

images/4_304.png

g. Diagrama de secuencia

Este diagrama solo representa la secuencia de llamadas de métodos, correspondiente a las opciones de la lista de contactos:

images/Esquema9.png

El valor de retorno del método tratamientoLista() de la clase TratamientoInicio es un String que contiene la dirección de la JSP que ServletControlador debe...