cadastro.html.<form> com method="post" e campos: nome, email, telefone.required, type="email", pattern para telefone.<!DOCTYPE html>
<html lang="pt-BR">
<head><meta charset="UTF-8"><title>Cadastro</title></head>
<body>
<h1>Cadastro</h1>
<form action="ProcessaCadastro" method="post">
<label for="nome">Nome</label>
<input id="nome" name="nome" type="text" required minlength="3" maxlength="60">
<label for="email">E-mail</label>
<input id="email" name="email" type="email" required>
<label for="telefone">Telefone (formato 11 dígitos)</label>
<input id="telefone" name="telefone" type="text"
pattern="\d{11}" placeholder="DDD + número, ex.: 11987654321" required>
<button type="submit">Enviar</button>
</form>
</body>
</html>
Por que assim? A aula recomenda apresentar os elementos do formulário e validações nativas (type/pattern/required).
cadastro.html em cadastro_get.html.method="get".method="post".<form action="ProcessaCadastro" method="get"> ... </form>
cadastro.html, acrescente senha e confirmarSenha.<form id="formCadastro" action="ProcessaCadastro" method="post" onsubmit="return validarSenha()">
<!-- ...campos anteriores... -->
<label for="senha">Senha</label>
<input id="senha" name="senha" type="password" minlength="8" required>
<label for="confirmarSenha">Confirmar Senha</label>
<input id="confirmarSenha" name="confirmarSenha" type="password" minlength="8" required>
<p id="erro" style="color:red;"></p>
<button type="submit">Enviar</button>
</form>
<script>
function validarSenha() {
const s = document.getElementById('senha').value;
const c = document.getElementById('confirmarSenha').value;
const erro = document.getElementById('erro');
if (s !== c) { erro.textContent = 'As senhas não coincidem.'; return false; }
erro.textContent = '';
return true;
}
</script>
Nota didática: a aula destaca usar validação em camadas: primeiro no cliente (HTML5/JS) e sempre no servidor por segurança.
ProcessaCadastro anotada com @WebServlet("/ProcessaCadastro").request.getParameter(...).sucesso.jsp ou erro.jsp.import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/ProcessaCadastro")
public class ProcessaCadastro extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String nome = request.getParameter("nome");
String email = request.getParameter("email");
String telefone = request.getParameter("telefone");
String senha = request.getParameter("senha");
String confirmar = request.getParameter("confirmarSenha");
// Validações servidor (exemplos)
boolean invalido = false;
if (nome == null || nome.length() < 3) invalido = true;
if (email == null || !email.contains("@")) invalido = true;
if (telefone == null || !telefone.matches("\\d{11}")) invalido = true;
if (senha == null || confirmar == null || !senha.equals(confirmar)) invalido = true;
if (invalido) {
request.setAttribute("msg", "Dados inválidos. Corrija e tente novamente.");
request.getRequestDispatcher("/erro.jsp").forward(request, response);
return;
}
// (Simulação) processar/persistir...
request.setAttribute("usuario", nome);
request.getRequestDispatcher("/sucesso.jsp").forward(request, response);
}
}
Referências da aula: uso degetParameter/getParameterValuespara recuperar dados, e fluxo de resposta/forward.
sucesso.jsp e leia o atributo usuario.<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Sucesso</title></head>
<body>
<h1>Cadastro concluído!</h1>
<p>Bem-vindo, <strong>${usuario}</strong>.</p>
<%
String dataAtual = new java.text.SimpleDateFormat("dd/MM/yyyy")
.format(new java.util.Date());
%>
<p>Data de processamento: <%= dataAtual %></p>
</body>
</html>
Por que JSP? A aula apresenta JSP para páginas dinâmicas e combinar HTML com valores Java quando necessário.
getParameterValues com listas de opções.name="interesses".<p>Interesses:</p>
<label><input type="checkbox" name="interesses" value="esporte"> Esporte</label>
<label><input type="checkbox" name="interesses" value="musica"> Música</label>
<label><input type="checkbox" name="interesses" value="tecnologia"> Tecnologia</label>
String[] interesses = request.getParameterValues("interesses");
if (interesses != null) {
// processar lista; exibir no JSP
request.setAttribute("interesses", String.join(", ", interesses));
}
Observação: o material aponta explicitamente o uso degetParameterValuespara múltiplos valores (ex.: checkboxes).
cadastro_get.html, os parâmetros aparecem na URL; no cadastro.html (POST), não. CEP com pattern="\d{5}-\d{3}" e CPF com regex simples.radio (ex.: tipo de conta) e select (estado/país). Garanta que apenas uma opção de radio seja aceita. (Tipos de campos fazem parte do conteúdo. method="get" (para URL compartilhável) e mantenha cadastro com post.value="<%= request.getAttribute(...)" %>), ou gere campos ocultos com a data/hora de envio.ProcessaCadastro, faça forward para sucesso.jsp com os dados do usuário e liste os interesses selecionados.<form>
</form><form action="/processar-formulario"><form method="post"><label for="nome">Nome:</label>
<input
type="text"
id="nome"
name="nome"
placeholder="Digite seu nome completo"
required
><label for="email">E-mail:</label>
<input
type="email"
id="email"
name="email"
placeholder="seu@email.com"
required
><label for="senha">Senha:</label>
<input
type="password"
id="senha"
name="senha"
minlength="8"
required
><p>Gênero:</p>
<input type="radio" id="masc" name="genero" value="masculino">
<label for="masc">Masculino</label>
<input type="radio" id="fem" name="genero" value="feminino">
<label for="fem">Feminino</label>
<input type="radio" id="outro" name="genero" value="outro">
<label for="outro">Outro</label><p>Interesses:</p>
<input type="checkbox" id="esporte" name="interesses" value="esporte">
<label for="esporte">Esportes</label>
<input type="checkbox" id="musica" name="interesses" value="musica">
<label for="musica">Música</label>
<input type="checkbox" id="tech" name="interesses" value="tecnologia">
<label for="tech">Tecnologia</label><label for="estado">Estado:</label>
<select id="estado" name="estado">
<option value="">Selecione...</option>
<option value="SP">São Paulo</option>
<option value="RJ">Rio de Janeiro</option>
<option value="MG">Minas Gerais</option>
</select><select multiple name="linguagens[]">
<option value="java">Java</option>
<option value="js">JavaScript</option>
</select><label for="idade">Idade:</label>
<input
type="number"
id="idade"
name="idade"
min="18"
max="120"
step="1"
><label for="telefone">Telefone:</label>
<input
type="tel"
id="telefone"
name="telefone"
placeholder="(99) 99999-9999"
pattern="\(\d{2}\) \d{5}-\d{4}"
><!-- Seletor de data -->
<label for="nascimento">Data de nascimento:</label>
<input type="date" id="nascimento" name="nascimento">
<!-- Seletor de hora -->
<label for="reuniao">Horário da reunião:</label>
<input type="time" id="reuniao" name="reuniao">
<!-- Data e hora combinados -->
<label for="entrega">Data e hora da entrega:</label>
<input type="datetime-local" id="entrega" name="entrega"><label for="website">Seu site:</label>
<input
type="url"
id="website"
name="website"
placeholder="https://www.exemplo.com.br"
pattern="https://.*"
><!-- Versão básica -->
<input type="submit" value="Enviar formulário">
<!-- Versão com tag button (mais flexível) -->
<button type="submit">
Enviar dados
</button><form action="/buscar" method="get">
<label for="termo">Termo:</label>
<input type="text" id="termo" name="termo">
<label for="categoria">Categoria:</label>
<select id="categoria" name="categoria">
<option value="cursos">Cursos</option>
<option value="artigos">Artigos</option>
</select>
<button type="submit">Buscar</button>
</form><form action="/login" method="post">
<label for="email">E-mail:</label>
<input type="email" id="email" name="email">
<label for="senha">Senha:</label>
<input type="password" id="senha" name="senha">
<button type="submit">Entrar</button>
</form><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Formulário de Contato</title>
</head>
<body>
<h1>Entre em contato</h1>
<!-- Formulário HTML dentro do JSP -->
<form action="ProcessaContato" method="post">
...campos do formulário...
</form>
</body>
</html><%-- Podemos usar código Java para valores dinâmicos --%>
<%
String dataAtual = new java.text.SimpleDateFormat("dd/MM/yyyy")
.format(new java.util.Date());
%>
<input type="hidden" name="dataEnvio" value="<%= dataAtual %>">import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ProcessaFormulario extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Processamento dos dados aqui
}
}// Recupera valores individuais
String nome = request.getParameter("nome");
String email = request.getParameter("email");
// Para checkboxes (múltiplos valores)
String[] interesses = request.getParameterValues("interesses");
// Verificando se um parâmetro existe
if (request.getParameter("concordo") != null) {
// Usuário marcou o checkbox
}// Configurando a resposta
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// Gerando HTML dinamicamente
out.println("<html><body>");
out.println("<h1>Obrigado, " + nome + "!</h1>");
out.println("<p>Seu cadastro foi realizado com sucesso.</p>");
out.println("</body></html>");
// Ou redirecionando para uma página JSP
request.setAttribute("usuario", nome);
request.getRequestDispatcher("/sucesso.jsp")
.forward(request, response);<!-- Campo obrigatório -->
<input type="text" required>
<!-- Limites de caracteres -->
<input type="text" minlength="3" maxlength="50">
<!-- Padrão personalizado (CEP brasileiro) -->
<input type="text" pattern="\d{5}-\d{3}"
placeholder="12345-678">
<!-- Números com limites -->
<input type="number" min="18" max="100">// HTML
<form id="meuForm" onsubmit="return validarForm()">
<input type="password" id="senha">
<input type="password" id="confirmarSenha">
<div id="erro"></div>
<button type="submit">Enviar</button>
</form>
// JavaScript
function validarForm() {
const senha = document.getElementById("senha").value;
const confirma = document.getElementById("confirmarSenha").value;
const erro = document.getElementById("erro");
if (senha !== confirma) {
erro.textContent = "As senhas não coincidem!";
erro.style.color = "red";
return false; // Impede envio do formulário
}
return true; // Permite envio do formulário
}