Tutorial: Cómo capturar datos en Spring Boot MVC
Objetivo:
Entender cómo el servidor (Spring Boot) recibe datos desde:
• URL
• Formularios HTML
• Parámetros
• JSON (APIs)
1. IDEA CLAVE (ANTES DE CODIFICAR).
Cuando un usuario interactúa con una web:
Usuario → Navegador → HTTP Request → Controlador (Spring)
Todo lo que el usuario envía llega en la petición HTTP
Formas en que viajan los datos:
Forma Ejemplo
URL /mascota/1
Query Params /buscar?nombre=Firulais
Formulario <form method="POST">
JSON { "nombre": "Firulais" }
2. FORMA 1: @PathVariable (DATOS EN LA URL)
Concepto
Se usa cuando los datos vienen dentro de la ruta.
Ejemplo real:
/mascota/10
Ejemplo práctico
@GetMapping("/mascota/{id}")
public String obtenerMascota(@PathVariable String id){
[Link]("ID: " + id);
return "detalle";
}
¿Qué pasó?
• {id} en la URL → se convierte en variable Java
• Spring hace el mapeo automáticamente
Cuándo usarlo
✔ Identificadores únicos
✔ Rutas REST
3. FORMA 2: @RequestParam (PARÁMETROS
DE CONSULTA)
Concepto
Captura datos que vienen en la URL así:
/buscar?nombre=Firulais
Ejemplo
@GetMapping("/buscar")
public String buscar(@RequestParam String nombre){
[Link]("Nombre: " + nombre);
return "resultado";
}
¿Por qué es importante?
Es muy usado en:
• Filtros
• Búsquedas
• Formularios GET
Variante opcional
@RequestParam(required = false)
Permite que el parámetro no sea obligatorio
4. FORMA 3: @ModelAttribute
(FORMULARIOS HTML)
Concepto
Convierte automáticamente un formulario HTML en un objeto Java.
Ejemplo completo
HTML
<form action="/guardar" method="POST">
<input type="text" name="nombre">
<input type="text" name="raza">
<button type="submit">Guardar</button>
</form>
Clase Java
public class Mascota {
private String nombre;
private String raza;
}
Controlador
@PostMapping("/guardar")
public String guardar(@ModelAttribute Mascota mascota){
[Link]([Link]());
return "ok";
}
¿Qué hizo Spring?
Automáticamente:
name="nombre" → [Link]
name="raza" → [Link]
Cuándo usarlo
✔ Formularios HTML
✔ CRUD tradicionales
5. FORMA 4: @RequestBody (DATOS JSON -
APIs REST)
Concepto
Captura datos enviados en formato JSON.
Ejemplo
JSON enviado
{
"nombre": "Firulais",
"raza": "Labrador"
}
Controlador
@PostMapping("/api/mascota")
public String guardar(@RequestBody Mascota mascota){
[Link]([Link]());
return "ok";
}
¿Qué pasa aquí?
Spring usa Jackson para convertir:
JSON → Objeto Java
Importante
✔ Se usa en APIs
✔ No funciona con formularios HTML normales
6. FORMA 5: HttpServletRequest (FORMA
BAJO NIVEL)
Concepto
Acceso directo a la petición HTTP.
Ejemplo
@GetMapping("/request")
public String capturar(HttpServletRequest request){
String nombre = [Link]("nombre");
[Link](nombre);
return "ok";
}
¿Por qué existe?
Es la forma más básica (Java puro)
Desventaja
• Más código
• Menos elegante
Cuándo usarlo
✔ Casos especiales
✔ Debugging
7. FORMA 6: @RequestHeader (CABECERAS
HTTP)
Concepto
Captura información del encabezado HTTP.
Ejemplo
@GetMapping("/header")
public String header(@RequestHeader("User-Agent") String agente){
[Link](agente);
return "ok";
}
¿Para qué sirve?
Saber:
• Navegador
• Tokens
• Autenticación
8. FORMA 7: @CookieValue (COOKIES)
Concepto
Captura datos almacenados en cookies.
Ejemplo
@GetMapping("/cookie")
public String cookie(@CookieValue("miCookie") String valor){
[Link](valor);
return "ok";
}
Uso real
Sesiones, preferencias
RESUMEN GENERAL
Método De dónde vienen los datos Uso típico
@PathVariable URL IDs
@RequestParam Query string Filtros
@ModelAttribute Formularios CRUD
@RequestBody JSON APIs
HttpServletRequest HTTP raw Bajo nivel
@RequestHeader Headers Seguridad
@CookieValue Cookies Sesión
IDEA FINAL (LA MÁS
IMPORTANTE)
Todos estos métodos responden a una sola pregunta:
¿Dónde vienen los datos?
Flujo mental correcto
Cliente → HTTP → Spring → Anotación → Variable Java