11. Aplicación web MVC [personne] – versión 6
11.1. Introducción
En esta versión, introducimos 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, por la que el servidor envía al cliente los elementos que deben memorizarse 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 deben memorizarse en el flujo HTTP, que precede al documento HTML. | - El servidor coloca los elementos que deben memorizarse en el documento HTML. |
- Esta técnica requiere que el navegador acepte las cookies para que este las reenvíe al servidor en sus solicitudes GET o POST. | - La técnica requiere que todas las peticiones del cliente al servidor sean del tipo POST para que los campos ocultos se envíen al servidor. |
- El usuario puede acceder a los datos almacenados visualizando las cookies recibidas por su navegador. La mayoría de los navegadores ofrecen esta opción. | - El usuario puede acceder a los elementos almacenados visualizando el código fuente del documento HTML recibido. |
La técnica de los campos ocultos se puede utilizar aquí, ya que 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 apartado 6.2.
![]() | ![]() |
11.3. Configuración de la aplicación web [personne6]
El archivo web.xml de la aplicación /personne6 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 estos 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 introducidos 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 ha variado el modelo de la vista [erreurs]. Hay que añadir 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] se sustituirán por la cadena vacía. Esto nos conviene, ya que en este caso concreto, 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] se sustituirá 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 tanto, la cadena vacía.
11.5.2. El método [doValidationFormulaire]
Su código es el siguiente:
En las líneas 8-10, se introducen 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. Pruebas
Iniciar o reiniciar Tomcat tras haber integrado en él el proyecto de Eclipse [personne-mvc-06] y, a continuación, solicitar la URL [http://localhost:8080/personne6].

