Primer formulario con Servlet - eliizquierdo/material_programacion_avanzada2026 GitHub Wiki
📦 Proyecto:
primer-formulario-servlet— ⬇️ Descargar · ☁️ Abrir en Codespace
Antes de encarar el Mini-CRUD completo, vamos a hacer el ejemplo más simple posible: un formulario que recibe un nombre y lo muestra de vuelta en pantalla.
Este ejemplo usa solo 2 archivos y no necesita base de datos.
src/
└── main/
├── java/com/escuela/
│ └── HolaMundoServlet.java
└── webapp/
├── formulario.jsp ← el formulario
└── saludo.jsp ← la respuesta
<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi primer formulario</title>
</head>
<body>
<h1>¿Cuál es tu nombre?</h1>
<form action="saludo" method="post">
<label>Nombre:
<input type="text" name="nombre" required>
</label>
<button type="submit">Saludar</button>
</form>
</body>
</html>📌
action="saludo"indica qué URL maneja el formulario.
📌method="post"porque estamos enviando datos.
package com.escuela;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/saludo") // ← responde a la URL /saludo
public class HolaMundoServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 1. Obtener el dato que envió el formulario
String nombre = req.getParameter("nombre");
// 2. Guardarlo como atributo para que el JSP lo use
req.setAttribute("nombre", nombre);
// 3. Pasar el control al JSP que muestra el saludo
req.getRequestDispatcher("/saludo.jsp")
.forward(req, resp);
}
}📌
@WebServlet("/saludo")registra el Servlet en la URL/saludo.
📌req.getParameter("nombre")lee el campo del formulario cuyonamees"nombre".
📌req.setAttribute(...)es como poner un dato "en un cajón" para que el JSP lo lea.
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="fn" uri="jakarta.tags.functions" %>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Saludo</title>
</head>
<body>
<h1>¡Hola, ${nombre}!</h1>
<p>Tu nombre tiene ${fn:length(nombre)} letras.</p>
<a href="formulario.jsp">← Volver</a>
</body>
</html>📌
${nombre}lee el atributo que el Servlet guardó consetAttribute. Esto es Expression Language (EL) — una forma simple de mostrar datos en JSP sin escribir código Java.
📌 La línea
<%@ taglib prefix="fn" uri="jakarta.tags.functions" %>habilita las funciones JSTL comofn:length(...)— sin ella, esa expresión no funciona.
[formulario.jsp] → POST /saludo → [HolaMundoServlet] → forward → [saludo.jsp]
HTML puro HTTP Request Java: lee param, → HTML con dato
guarda atributo
| Concepto | Dónde aparece |
|---|---|
<form action method> |
formulario.jsp |
@WebServlet |
HolaMundoServlet.java |
doPost() |
HolaMundoServlet.java |
getParameter() |
HolaMundoServlet.java |
setAttribute() |
HolaMundoServlet.java |
forward() |
HolaMundoServlet.java |
${variable} (EL) |
saludo.jsp |
Todos estos conceptos van a volver a aparecer en el Mini-CRUD, pero aplicados a personas y con base de datos.
Modifica el ejemplo para que el formulario pida también la edad y el JSP muestre:
"Hola Ana, tienes 20 años. En 10 años vas a tener 30."
formulario · Servlet · doPost · getParameter · setAttribute · forward · @WebServlet · Expression Language · method POST · action · JSP · request · response
