11. Aplicación web MVC [personne] – versión 6
11.1. Introduction
En esta versión, incorporamos la siguiente modificación:
La versión anterior no utilizaba la sesión para almacenar elementos entre dos intercambios cliente/servidor. Utilizaba la técnica de las cookies, mediante la cual el servidor envía al cliente los elementos que deben almacenarse para que este los devuelva en el siguiente intercambio. En esta nueva versión, utilizamos una técnica similar: los campos ocultos en los formularios. Existen diferencias entre estas dos técnicas:
Cookies | Campos ocultos |
- El servidor coloca los elementos que se deben memorizar en el flujo HTTP, que precede al documento HTML. | - El servidor coloca los elementos que se deben memorizar en el documento HTML. |
- Esta técnica requiere que el navegador acepte las cookies para que este las reenvíe al servidor durante sus solicitudes GET o POST. | - La técnica requiere que todas las solicitudes del cliente al servidor sean del tipo POST para que los campos ocultos se envíen al servidor. |
- El usuario tiene acceso a los elementos almacenados al visualizar las cookies recibidas por su navegador. La mayoría de los navegadores ofrecen esta opción. | - El usuario tiene acceso a los datos almacenados al visualizar el código fuente del documento HTML recibido. |
La técnica de los campos ocultos se puede utilizar aquí porque todas las llamadas del cliente son del tipo POST.
11.2. El proyecto Eclipse
Para crear el proyecto Eclipse [mvc-personne-06] de la aplicación web [/personne6], se duplicará el proyecto [mvc-personne-05] siguiendo el procedimiento descrito en el párrafo 6.2.
![]() | ![]() |
11.3. Configuración de la aplicación web [personne6]
El archivo web.xml de la aplicación /persona6 es el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>mvc-personne-06</display-name>
...
Este archivo es idéntico al de la versión anterior, salvo por algunos detalles:
- línea 6: el nombre de visualización de la aplicación web ha cambiado a [mvc-personne-06]
La página de inicio [index.jsp] es idéntica a la de la aplicación [/personne5]:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<c:redirect url="/do/formulaire"/>
11.4. El código de las vistas
Solo cambian las vistas [réponse, erreurs]. Ahora tienen campos ocultos en sus respectivos formularios, mientras que en la versión anterior esos formularios no enviaban ningún parámetro.
[réponse.jsp]:
...
<html>
...
<body>
...
<form name="frmPersonne" action="retourFormulaire" method="post">
<input type="hidden" name="nom" value="${nom}">
<input type="hidden" name="age" value="${age}">
</form>
<a href="javascript:document.frmPersonne.submit();">
${lienRetourFormulaire}
</a>
</body>
</html>
- líneas 6-9: el formulario que se enviará al servidor al hacer clic en el enlace de las líneas 10-12
- línea 6: el destino de POST será [/do/retourFormulaire]
- líneas 7-8: se enviarán los campos ocultos [nom] y [age]. Sus valores ${nombre} y ${edad} serán establecidos por el controlador que mostrará [réponse.jsp]. Estos serán los valores ingresados en el formulario.
[erreurs.jsp]:
...
<html>
...
<body>
...
<form name="frmPersonne" action="retourFormulaire" method="post">
<input type="hidden" name="nom" value="${nom}">
<input type="hidden" name="age" value="${age}">
</form>
<a href="javascript:document.frmPersonne.submit();">
${lienRetourFormulaire}
</a>
</body>
</html>
Las modificaciones y explicaciones son las mismas que para la vista [réponse.jsp]. Cabe señalar que la plantilla de la vista [erreurs] se amplía con dos nuevos elementos, [nom, age], que se suman a los otros dos que ya existían: [erreurs, lienRetourFormulaire].
Se invita al lector a probar estas nuevas vistas siguiendo el principio visto en las versiones anteriores.
11.5. El controlador [ServletPersonne]
El controlador [ServletPersonne] de la aplicación web [/personne6] es muy similar al de la versión anterior. Los cambios se deben a que se modificó el modelo de la vista [erreurs]. Es necesario agregar dos elementos adicionales: [nom, age]. Solo se ven afectados los métodos que muestran esta vista. Se trata de los métodos [doGet] y [doValidationFormulaire].
11.5.1. El método [doGet]
El código de [doGet] es el siguiente:
De hecho, este código sigue siendo el mismo que antes. En la versión anterior, los elementos [nom, age] no se incluían en la plantilla de la vista [erreurs]. Si seguimos sin incluirlas, las variables ${nombre} y ${edad} de [erreurs.jsp] serán reemplazadas por la cadena vacía. Esto nos conviene, ya que en este caso específico, el enlace [Retour au formulaire] no se muestra al usuario. De hecho, tampoco incluimos el elemento [lienRetourFormulaire] en la plantilla. La variable ${lienRetourFormulaire} de [erreurs.jsp] será reemplazada por la cadena vacía. Por lo tanto, no habrá ningún enlace, por lo que no será posible enviar los campos ocultos [nom, age] del formulario de [erreurs.jsp]. El valor de estos campos puede ser, por lo tanto, la cadena vacía.
11.5.2. El método [doValidationFormulaire]
Su código es el siguiente:
En las líneas 8 a 10, se insertan en la plantilla los elementos [nom, age, lienRetourFormulaire]. Sabemos que el método muestra una de las vistas [réponse] o [erreurs]. Por lo tanto, esta última tendrá los elementos [nom,age] en su modelo.
11.6. Tests
Inicie o reinicie Tomcat después de haber integrado en él el proyecto de Eclipse [personne-mvc-06] y, a continuación, solicite la URL [http://localhost:8080/personne6].

