11. Aplicativo web MVC [personne] – versão 6
11.1. Introduction
Nesta versão, realizamos a seguinte alteração:
A versão anterior não utilizava a sessão para armazenar elementos entre duas trocas cliente/servidor. Ela utilizava a técnica dos cookies, na qual os elementos a serem armazenados são enviados ao cliente pelo servidor para que este os reenvie na próxima troca. Nesta nova versão, utilizamos uma técnica semelhante: os campos ocultos nos formulários. Existem diferenças entre essas duas técnicas:
Cookies | Campos ocultos |
- o servidor coloca os elementos a serem memorizados no fluxo HTTP, que precede o documento HTML. | - o servidor coloca os elementos a serem memorizados no documento HTML. |
- a técnica exige que o navegador aceite cookies para que ele os reenvie ao servidor durante suas solicitações GET ou POST. | - a técnica requer que todas as chamadas do cliente ao servidor sejam do tipo POST, para que os campos ocultos sejam enviados ao servidor. |
- O usuário tem acesso aos elementos armazenados exibindo os cookies recebidos pelo seu navegador. A maioria dos navegadores oferece essa opção. | - O usuário tem acesso aos elementos armazenados exibindo o código-fonte do documento HTML recebido. |
A técnica dos campos ocultos pode ser utilizada aqui, pois todas as chamadas do cliente são do tipo POST.
11.2. O projeto Eclipse
Para criar o projeto Eclipse [mvc-personne-06] do aplicativo web [/personne6], duplicaremos o projeto [mvc-personne-05] seguindo o procedimento descrito no parágrafo 6.2.
![]() | ![]() |
11.3. Configuração da aplicação web [personne6]
O arquivo web.xml do aplicativo /personne6 é o seguinte:
<?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 arquivo é idêntico ao da versão anterior, com exceção de alguns detalhes:
- linha 6: o nome de exibição do aplicativo web mudou para [mvc-personne-06]
A página inicial [index.jsp] é idêntica à da aplicação [/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. O código das visualizações
Apenas as visualizações [réponse, erreurs] foram alteradas. Agora, elas possuem campos ocultos em seus respectivos formulários, enquanto na versão anterior esses formulários não enviavam nenhum 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>
- linhas 6-9: o formulário que será enviado ao servidor ao clicar no link das linhas 10-12
- linha 6: o destino do POST será o [/do/retourFormulaire]
- linhas 7-8: os campos ocultos [nom] e [age] serão enviados. Seus valores ${nom} e ${age} serão definidos pelo controlador que exibirá [réponse.jsp]. Esses serão os valores inseridos no formulário.
[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>
As alterações e explicações são as mesmas da visualização [réponse.jsp]. Observe-se que o modelo da visualização [erreurs] é complementado por dois novos elementos, [nom, age], que se somam aos dois já existentes: [erreurs, lienRetourFormulaire].
O leitor é convidado a testar essas novas visualizações seguindo o princípio apresentado nas versões anteriores.
11.5. O controlador [ServletPersonne]
O controlador [ServletPersonne] do aplicativo web [/personne6] é muito semelhante ao da versão anterior. As alterações decorrem do fato de que o modelo da visualização [erreurs] foi alterado. É necessário inserir dois elementos adicionais: [nom, age]. Apenas os métodos que exibem essa vista são afetados. Trata-se dos métodos [doGet] e [doValidationFormulaire].
11.5.1. O método [doGet]
O código de [doGet] é o seguinte:
Na verdade, esse código permanece idêntico ao que era. Na versão anterior, os elementos [nom, age] não eram inseridos no modelo da visualização [erreurs]. Se continuarmos a não incluí-los, as variáveis ${nom} e ${age} de [erreurs.jsp] serão substituídas pela string vazia. Isso nos convém, pois, nesse caso específico, o link [Retour au formulaire] não é exibido ao usuário. De fato, também não incluímos o elemento [lienRetourFormulaire] no modelo. A variável ${lienRetourFormulaire} de [erreurs.jsp] será substituída pela string vazia. Portanto, não haverá link e, consequentemente, não será possível enviar os campos ocultos [nom, age] do formulário [erreurs.jsp]. O valor desses campos pode, portanto, ser a string vazia.
11.5.2. O método [doValidationFormulaire]
Seu código é o seguinte:
Nas linhas 8 a 10, inserimos no modelo os elementos [nom, age, lienRetourFormulaire]. Sabemos que o método exibe uma das visualizações [réponse] ou [erreurs]. Portanto, esta última terá os elementos [nom,age] em seu modelo.
11.6. Tests
Inicie ou reinicie o Tomcat após integrar nele o projeto Eclipse [personne-mvc-06] e, em seguida, acesse a URL [http://localhost:8080/personne6].

