11. Веб-додаток MVC [personne] — версія 6
11.1. Introduction
У цій версії ми внесли таку зміну:
У попередній версії не використовувалася сесія для збереження даних між двома обмінами даними між клієнтом і сервером. Замість цього застосовувалася технологія файлів cookie, завдяки якій дані, що підлягають збереженню, надсилаються сервером клієнту, щоб той повернув їх під час наступного обміну. У цій новій версії ми використовуємо схожу технологію — приховані поля у формах. Між цими двома технологіями існують такі відмінності:
Файли cookie | Приховані поля |
- сервер розміщує елементи, які потрібно зберегти, у потоці HTTP, що передує документу HTML. | - сервер розміщує елементи, які потрібно запам’ятати, у документі HTML. |
- ця техніка вимагає, щоб браузер приймав файли cookie, щоб він міг надсилати їх серверу під час запитів GET або POST. | - ця техніка вимагає, щоб усі запити клієнта до сервера були у форматі POST, щоб приховані поля надсилалися на сервер. |
- Користувач має доступ до збережених даних, переглянувши файли cookie, отримані його браузером. Більшість браузерів пропонують цю опцію. | - Користувач має доступ до збережених елементів, переглянувши вихідний код отриманого документа HTML. |
Техніка прихованих полів може бути використана в цьому випадку, оскільки всі запити клієнта мають тип POST.
11.2. Проєкт Eclipse
Щоб створити проект Eclipse [mvc-personne-06] для веб-додатку [/personne6], потрібно продублювати проект [mvc-personne-05], дотримуючись процедури, описаної в розділі 6.2.
![]() | ![]() |
11.3. Налаштування веб-додатку [personne6]
Файл web.xml додатка /personne6 має такий вигляд:
<?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>
...
Цей файл ідентичний файлу попередньої версії, за винятком кількох дрібниць:
- рядок 6: ім'я для відображення веб-додатку змінилося на [mvc-personne-06]
Головна сторінка [index.jsp] ідентична головній сторінці додатка [/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. Код переглядів
Змінилися лише подання [réponse, erreurs]. Тепер у відповідних формах є приховані поля, тоді як у попередній версії ці форми не надсилали жодних параметрів.
[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>
- рядки 6–9: форма, яка буде відправлена на сервер при натисканні на посилання в рядках 10–12
- рядок 6: ціллю POST буде [/do/retourFormulaire]
- рядки 7–8: приховані поля [nom] та [age] будуть відправлені. Їхні значення ${nom} та ${age} будуть визначені контролером, який відображатиме [réponse.jsp]. Це будуть значення, введені у форму.
[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>
Зміни та пояснення такі самі, як і для подання [réponse.jsp]. Слід зазначити, що шаблон подання [erreurs] доповнюється двома новими елементами [nom, age], які додаються до двох інших, що вже існували: [erreurs, lienRetourFormulaire].
Читачеві пропонується протестувати ці нові види за принципом, розглянутим у попередніх версіях.
11.5. Контролер [ServletPersonne]
Контролер [ServletPersonne] веб-додатку [/personne6] дуже схожий на контролер попередньої версії. Зміни пов’язані з тим, що змінилася модель подання [erreurs]. У нього потрібно додати два додаткові елементи: [nom, age]. Це стосується лише методів, які відповідають за відображення цього виду. Йдеться про методи [doGet] та [doValidationFormulaire].
11.5.1. Метод [doGet]
Код [doGet] такий:
Насправді цей код залишився таким самим, як і раніше. У попередній версії елементи [nom, age] не вставлялися в шаблон подання [erreurs]. Якщо й надалі не додавати їх туди, змінні ${nom} та ${age} з [erreurs.jsp] будуть замінені порожнім рядком. Це нас влаштовує, оскільки в цьому конкретному випадку посилання [Retour au formulaire] не відображається користувачеві. Дійсно, ми також не вставляємо елемент [lienRetourFormulaire] у шаблон. Змінна ${lienRetourFormulaire} з [erreurs.jsp] буде замінена порожнім рядком. Отже, посилання не буде, а отже, не буде можливості відправити приховані поля [nom, age] з форми [erreurs.jsp]. Тому значенням цих полів може бути порожній рядок.
11.5.2. Метод [doValidationFormulaire]
Його код такий:
У рядках 8–10 у шаблон вставляються елементи [nom, age, lienRetourFormulaire]. Відомо, що метод відображає один із видів [réponse] або [erreurs]. Отже, останній матиме у своїй моделі елементи [nom,age].
11.6. Tests
Запустіть або перезапустіть Tomcat після інтеграції в нього проекту Eclipse [personne-mvc-06], а потім введіть URL-адресу [http://localhost:8080/personne6].

