Mira la lección en vídeo
Accede al vídeo completo de esta lección y a más contenido exclusivo con el Plan Plus.
Desbloquear Plan PlusMétodos con @PostMapping en controladores MVC
Los métodos POST en Spring Boot se utilizan principalmente para enviar datos al servidor, especialmente cuando necesitamos crear nuevos recursos o procesar información sensible. A diferencia de las peticiones GET que muestran datos, las peticiones POST están diseñadas para modificar el estado del servidor.
La anotación @PostMapping
nos permite mapear métodos de controlador específicamente para peticiones HTTP POST. Esta anotación es una especialización de @RequestMapping
que simplifica la configuración y hace el código más legible.
Sintaxis básica de @PostMapping
Un método con @PostMapping
sigue una estructura similar a los métodos GET, pero está preparado para recibir datos del cliente:
@Controller
public class UsuarioController {
@PostMapping("/usuarios")
public String crearUsuario() {
// Lógica para crear usuario
return "redirect:/usuarios";
}
}
La principal diferencia radica en que los métodos POST suelen procesar información enviada desde formularios o aplicaciones cliente, por lo que necesitan mecanismos para capturar estos datos.
Recepción de datos con @RequestParam
Para capturar datos enviados desde un formulario HTML, utilizamos @RequestParam
. Esta anotación nos permite extraer parámetros individuales de la petición:
@PostMapping("/usuarios/crear")
public String procesarUsuario(
@RequestParam String nombre,
@RequestParam String email,
@RequestParam int edad) {
// Procesar los datos recibidos
System.out.println("Usuario: " + nombre + ", Email: " + email);
return "redirect:/usuarios";
}
También podemos hacer parámetros opcionales y establecer valores por defecto:
@PostMapping("/productos")
public String crearProducto(
@RequestParam String nombre,
@RequestParam(defaultValue = "0") double precio,
@RequestParam(required = false) String descripcion) {
// La descripción puede ser null si no se envía
if (descripcion == null) {
descripcion = "Sin descripción";
}
return "productos/confirmacion";
}
Trabajo con objetos de modelo
En lugar de capturar parámetros individuales, Spring Boot puede mapear automáticamente los datos del formulario a objetos Java. Esto se conoce como binding de datos:
public class Usuario {
private String nombre;
private String email;
private int edad;
// Constructores, getters y setters
public Usuario() {}
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public int getEdad() { return edad; }
public void setEdad(int edad) { this.edad = edad; }
}
El controlador puede recibir directamente el objeto mapeado:
@PostMapping("/usuarios/registro")
public String registrarUsuario(Usuario usuario, Model model) {
// Spring mapea automáticamente los campos del formulario
System.out.println("Registrando: " + usuario.getNombre());
// Agregar el usuario al modelo para la vista
model.addAttribute("usuarioCreado", usuario);
return "usuarios/exito";
}
Redirecciones después de POST
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
Una buena práctica en aplicaciones web es redirigir después de procesar una petición POST. Esto evita que el usuario pueda reenviar accidentalmente el formulario al actualizar la página:
@PostMapping("/tareas")
public String crearTarea(@RequestParam String titulo,
@RequestParam String descripcion) {
// Procesar la nueva tarea
System.out.println("Nueva tarea: " + titulo);
// Redirigir a la lista de tareas
return "redirect:/tareas";
}
También podemos redirigir con parámetros para mostrar mensajes de confirmación:
@PostMapping("/contacto")
public String enviarMensaje(@RequestParam String nombre,
@RequestParam String mensaje,
RedirectAttributes redirectAttributes) {
// Procesar el mensaje
System.out.println("Mensaje de " + nombre + ": " + mensaje);
// Agregar mensaje flash para la siguiente vista
redirectAttributes.addFlashAttribute("exito",
"Mensaje enviado correctamente");
return "redirect:/contacto";
}
Manejo de errores básico
Los métodos POST deben estar preparados para manejar errores de validación o procesamiento:
@PostMapping("/login")
public String procesarLogin(@RequestParam String usuario,
@RequestParam String password,
Model model) {
// Validación simple
if (usuario.isEmpty() || password.isEmpty()) {
model.addAttribute("error", "Usuario y contraseña son obligatorios");
return "login"; // Volver al formulario
}
// Simular validación de credenciales
if (!"admin".equals(usuario) || !"123".equals(password)) {
model.addAttribute("error", "Credenciales incorrectas");
return "login";
}
// Login exitoso
return "redirect:/dashboard";
}
Esta aproximación permite mostrar mensajes de error directamente en el formulario, manteniendo una experiencia de usuario fluida y proporcionando retroalimentación clara sobre los problemas encontrados.
Aprendizajes de esta lección de SpringBoot
- Comprender el propósito y uso de los métodos POST en aplicaciones web MVC.
- Aprender a utilizar la anotación @PostMapping para mapear peticiones POST en controladores.
- Capturar datos enviados desde formularios mediante @RequestParam y gestionar parámetros opcionales.
- Realizar binding de datos a objetos Java para simplificar la recepción de información.
- Implementar redirecciones y manejo básico de errores tras procesar peticiones POST.
Completa este curso de SpringBoot y certifícate
Únete a nuestra plataforma de cursos de programación y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs