2. Agenda
Formulários de dados
Criando e submetendo formulários HTML
Lendo parâmetros individuais de request.
Lendo um conjunto completo de parâmetros
de request.
Tratando dados incompletos e errados
Tratando submissão de formulários
incompletos.
Filtrando caracteres especiais dos parâmetros
de request.
www.jetsoftware.com.br
4. A finalidade de
formulários de dados
URL de exemplo
http://host/path?user=Marcio+Marinho&orige
m=RJ&dest=SP
Parse dos dados ( query ) em CGI tradicional
Ler os dados ( QUERY_STRING ) PARA
requests de GET, outra forma ( standard input
) para requests POST.
Cortar pares, separar os nomes dos
parâmetros ( a esquerda do = ) dos valores
dos parâmetros ( direita do = ).
Decodificação da URL ( “%7E” vira “~”)
Muito simples com servlets
Use request.getParameter para todos os casos
Recebemos o resultado da URL decodificada
www.jetsoftware.com.br
5. Criando formularios
de dados (via GET)
<!DOCTYPE html PUBLIC quot;-//W3C//DTD HTML 4.01 Transitional//ENquot;
quot;http://www.w3.org/TR/html4/loose.dtdquot;>
<html>
<head>
<meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=ISO-8859-1quot;>
<title>Insert title here</title>
</head>
<body>
<form name=quot;meu_formquot; action=“/testeWeb/MeuProgramaquot;>
Nome: <input type=quot;textquot; name=quot;nomequot; value=quot;Marcioquot;/>
<br>
Sobre Nome: <input type=quot;textquot; name=quot;sobreNomequot; value=quot;Marinhoquot;/>
<input type=quot;submitquot; value=quot;enviarquot;/>
</form>
</body>
</html>
www.jetsoftware.com.br
12. Lendo dados dos
formulários dentro do servlet
request.getParameter(“nome”);
Retorna o valor da URL decodificada da primeira ocorrência do
nome na query string.
Funciona igualmente para requests GET e POST.
Retorna null se o parâmetro não for encontrado
request.getParameterValues(“nome”);
Retorna um array de valores da URL decodificada de todas
ocorrências do nome na query string.
Retorna um array de um elemento se o parâmetro não estiver
repetido.
Retorna null se o parâmetro não existir na query string.
request.getParameterNames() ou request.getParameterMap()
Retorna uma Enumeration ou Map dos parâmetros do request.
Geralmente usados para debug
www.jetsoftware.com.br
21. Verificando falta de dados
ou dados errados
Falta de dados
Campo(s) faltando no formulário
getParameter retornará null
Campo em branco quando o formulário é submetido
getParameter retornará uma string vazia (ou pode ser uma string com espaço em
branco)
Devemos checar por null antes de checarmos por string vazias.
String param = request.getParameter(“nome”);
if ( (param==null) || (param.trim().equals(“”))) {
trateValoresFaltando(...);
else
facaOutraCoisa(param);
}
Dados malformados
O valor é uma string não vazia, mas num formato errado.
www.jetsoftware.com.br
22. Verificando falta de dados
ou dados errados
Use valores “default”
Trocar valores faltando por valores padrão específicos da aplicação.
Veja no próximo exemplo.
Exiba o formulário novamente
Exiba o formulário de novo, com os valores faltando em destaque.
Os valores digitados anteriormente devem ser preservados.
Algumas opções para implementar :
Ter o mesmo servlet para apresentar o formulário, processar os dados,
e apresentar o resultado.
Ter um servlet para apresentar o formulário, um segundo servlet para
processar os dados e exibir o resultado
Ter uma página JSP para apresentar o formulário, um servlet ou JSP
para processar os dados e apresentar o resultado.
Ter um JSP para apresentar o formulário, preencher automáticamente
os valores obtidos em um objeto de dados. Ter um servlet ou página
JSP para processar e exibir os resultados.
www.jetsoftware.com.br