11. Webapplicatie MVC [personne] – versie 6
11.1. Introduction
In deze versie hebben we de volgende wijziging aangebracht:
In de vorige versie werd geen gebruik gemaakt van een sessie om gegevens tussen twee uitwisselingen tussen client en server op te slaan. Er werd gebruik gemaakt van cookies, waarbij de op te slaan gegevens door de server naar de client worden verzonden, zodat deze ze bij de volgende uitwisseling terugstuurt. In deze nieuwe versie gebruiken we een vergelijkbare techniek, namelijk verborgen velden in formulieren. Er zijn verschillen tussen deze twee technieken:
Cookies | Verborgen velden |
- de server plaatst de te onthouden gegevens in de stream HTTP die voorafgaat aan het document HTML. | - de server plaatst de te onthouden elementen in het document HTML. |
- Deze techniek vereist dat de browser cookies accepteert, zodat deze ze bij zijn verzoeken GET of POST naar de server terugstuurt. | - Deze techniek vereist dat alle verzoeken van de client aan de server van het type POST zijn, zodat de verborgen velden naar de server worden verzonden. |
- De gebruiker heeft toegang tot de opgeslagen gegevens door de cookies die zijn browser heeft ontvangen weer te geven. De meeste browsers bieden deze optie aan. | - De gebruiker heeft toegang tot de opgeslagen gegevens door de broncode van het ontvangen document HTML weer te geven. |
De techniek van verborgen velden is hier toepasbaar omdat alle verzoeken van de client van het type POST zijn.
11.2. Het Eclipse-project
Om het Eclipse-project [mvc-personne-06] van de webapplicatie [/personne6] aan te maken, dupliceren we het project [mvc-personne-05] volgens de procedure beschreven in paragraaf 6.2.
![]() | ![]() |
11.3. Configuratie van de webapplicatie [personne6]
Het bestand web.xml van de applicatie /personne6 ziet er als volgt uit:
<?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>
...
Dit bestand is identiek aan dat van de vorige versie, op enkele details na:
- regel 6: de weergavenaam van de webapplicatie is gewijzigd in [mvc-personne-06]
De startpagina [index.jsp] is identiek aan die van de applicatie [/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. De code van de weergaven
Alleen de weergaven [réponse, erreurs] zijn gewijzigd. Deze bevatten nu verborgen velden in de bijbehorende formulieren, terwijl deze formulieren in de vorige versie geen parameters verstuurden.
[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>
- regels 6-9: het formulier dat naar de server wordt verzonden wanneer op de link in de regels 10-12 wordt geklikt
- regel 6: het doel van POST is [/do/retourFormulaire]
- regels 7-8: de verborgen velden [nom] en [age] worden verzonden. Hun waarden ${naam} en ${leeftijd} worden bepaald door de controller die [réponse.jsp] weergeeft. Dit zijn de waarden die in het formulier zijn ingevoerd.
[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>
De wijzigingen en toelichtingen zijn dezelfde als voor de weergave [réponse.jsp]. Opgemerkt moet worden dat het sjabloon van de weergave [erreurs] is uitgebreid met twee nieuwe elementen, [nom, age], die worden toegevoegd aan de twee andere die al bestonden: [erreurs, lienRetourFormulaire].
De lezer wordt uitgenodigd om deze nieuwe weergaven te testen volgens het principe dat in de vorige versies is behandeld.
11.5. De controller [ServletPersonne]
De controller [ServletPersonne] van de webapplicatie [/personne6] lijkt sterk op die van de vorige versie. De wijzigingen vloeien voort uit het feit dat het model van de weergave [erreurs] is gewijzigd. Er moeten twee extra elementen worden toegevoegd: [nom, age]. Dit geldt alleen voor de methoden die deze weergave weergeven. Het gaat om de methoden [doGet] en [doValidationFormulaire].
11.5.1. De methode [doGet]
De code van [doGet] is als volgt:
In feite is deze code nog steeds dezelfde als voorheen. In de vorige versie werden de elementen van [nom, age] niet in het sjabloon van de weergave [erreurs] opgenomen. Als we deze elementen daar ook nu niet opnemen, worden de variabelen ${nom} en ${age} van [erreurs.jsp] vervangen door de lege tekenreeks. Dat is prima, want in dit specifieke geval wordt de link [Retour au formulaire] niet aan de gebruiker getoond. We nemen het element [lienRetourFormulaire] namelijk ook niet op in het sjabloon. De variabele ${lienRetourFormulaire} van [erreurs.jsp] wordt vervangen door de lege tekenreeks. Er zal dus geen koppeling zijn, waardoor het niet mogelijk is om de verborgen velden [nom, age] van het formulier [erreurs.jsp] te verzenden. De waarde van deze velden kan dus de lege tekenreeks zijn.
11.5.2. De methode [doValidationFormulaire]
De code ervan is als volgt:
In de regels 8-10 voegen we de elementen [nom, age, lienRetourFormulaire] toe aan het sjabloon. We weten dat de methode een van de weergaven [réponse] of [erreurs] weergeeft. Deze laatste zal dus de elementen [nom,age] in haar sjabloon hebben.
11.6. Tests
Start Tomcat op of herstart het nadat u het Eclipse-project [personne-mvc-06] erin hebt geïntegreerd, en vraag vervolgens de URL [http://localhost:8080/personne6] op.

