11. Webanwendung MVC [personne] – Version 6
11.1. Einleitung
In dieser Version nehmen wir folgende Änderung vor:
In der vorherigen Version wurde keine Sitzung verwendet, um Elemente zwischen zwei Client-Server-Wechseln zu speichern. Stattdessen kam die Cookie-Technik zum Einsatz, bei der die zu speichernden Elemente vom Server an den Client gesendet werden, damit dieser sie beim nächsten Wechsel zurücksendet. In dieser neuen Version verwenden wir eine ähnliche Technik, nämlich versteckte Felder in Formularen. Es gibt Unterschiede zwischen diesen beiden Techniken:
Cookies | Versteckte Felder |
- Der Server fügt die zu speichernden Elemente in den Datenstrom HTTP ein, der dem Dokument HTML vorausgeht. | - Der Server speichert die zu merkenden Elemente im Dokument HTML. |
- Diese Technik setzt voraus, dass der Browser Cookies akzeptiert, damit er diese bei seinen Anfragen GET oder POST an den Server zurücksendet. | - Die Technik setzt voraus, dass alle Aufrufe des Clients an den Server als POST erfolgen, damit die versteckten Felder an den Server gesendet werden. |
- Der Nutzer hat Zugriff auf die gespeicherten Elemente, indem er die von seinem Browser empfangenen Cookies anzeigen lässt. Die meisten Browser bieten diese Option an. | - Der Benutzer hat Zugriff auf die gespeicherten Elemente, indem er den Quellcode des empfangenen Dokuments HTML anzeigt. |
Die Technik der versteckten Felder kann hier verwendet werden, da alle Client-Aufrufe vom Typ POST sind.
11.2. Das Eclipse-Projekt
Um das Eclipse-Projekt [mvc-personne-06] für die Webanwendung [/personne6] zu erstellen, duplizieren wir das Projekt [mvc-personne-05] gemäß der in Abschnitt 6.2 beschriebenen Vorgehensweise.
![]() | ![]() |
11.3. Konfiguration der Webanwendung [personne6]
Die Datei web.xml der Anwendung /personne6 lautet wie folgt:
<?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>
...
Diese Datei ist bis auf einige Details identisch mit der der vorherigen Version:
- Zeile 6: Der Anzeigename der Webanwendung hat sich in [mvc-personne-06] geändert
Die Startseite [index.jsp] ist identisch mit der der Anwendung [/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. Der Code der Ansichten
Nur die Ansichten [réponse, erreurs] haben sich geändert. Sie enthalten nun versteckte Felder in ihren jeweiligen Formularen, während diese Formulare in der vorherigen Version keine Parameter übermittelten.
[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>
- Zeilen 6–9: Das Formular, das beim Klicken auf den Link in den Zeilen 10–12 an den Server gesendet wird
- Zeile 6: Das Ziel von POST ist [/do/retourFormulaire]
- Zeilen 7–8: Die versteckten Felder [nom] und [age] werden gesendet. Ihre Werte ${nom} und ${age} werden von dem Controller festgelegt, der [réponse.jsp] anzeigt. Dies sind die im Formular eingegebenen Werte.
[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>
Die Änderungen und Erläuterungen entsprechen denen der Ansicht [réponse.jsp]. Es ist zu beachten, dass die Vorlage der Ansicht [erreurs] um zwei neue Elemente [nom, age] erweitert wird, die zu den beiden bereits vorhandenen Elementen [erreurs, lienRetourFormulaire] hinzukommen.
Der Leser ist eingeladen, diese neuen Ansichten nach dem in den vorherigen Versionen beschriebenen Prinzip zu testen.
11.5. Der Controller [ServletPersonne]
Der Controller [ServletPersonne] der Webanwendung [/personne6] ähnelt stark dem der vorherigen Version. Die Änderungen ergeben sich daraus, dass sich das Modell der Ansicht [erreurs] geändert hat. Dort müssen zwei zusätzliche Elemente eingefügt werden: [nom, age]. Betroffen sind nur die Methoden, die diese Ansicht anzeigen. Es handelt sich um die Methoden [doGet] und [doValidationFormulaire].
11.5.1. Die Methode [doGet]
Der Code für [doGet] lautet wie folgt:
Tatsächlich bleibt dieser Code unverändert. In der vorherigen Version wurden die Elemente von [nom, age] nicht in die Vorlage der Ansicht [erreurs] eingefügt. Wenn wir sie weiterhin nicht einfügen, werden die Variablen ${nom} und ${age} aus [erreurs.jsp] durch die leere Zeichenfolge ersetzt. Das ist für uns in Ordnung, da in diesem speziellen Fall der Link [Retour au formulaire] dem Benutzer nicht angezeigt wird. Tatsächlich fügen wir auch das Element [lienRetourFormulaire] nicht in die Vorlage ein. Die Variable ${lienRetourFormulaire} aus [erreurs.jsp] wird durch die leere Zeichenfolge ersetzt. Es wird also keinen Link geben, sodass die versteckten Felder [nom, age] des Formulars [erreurs.jsp] nicht übermittelt werden können. Der Wert dieser Felder kann daher die leere Zeichenfolge sein.
11.5.2. Die Methode [doValidationFormulaire]
Der Code lautet wie folgt:
In den Zeilen 8–10 werden die Elemente [nom, age, lienRetourFormulaire] in die Vorlage eingefügt. Es ist bekannt, dass die Methode eine der Ansichten [réponse] oder [erreurs] anzeigt. Letztere enthält daher die Elemente [nom,age] in ihrer Vorlage.
11.6. Tests
Starten oder starten Sie Tomcat neu, nachdem Sie das Eclipse-Projekt [personne-mvc-06] integriert haben, und rufen Sie anschließend die URL [http://localhost:8080/personne6] auf.

