Métodos POST en controladores MVC

Intermedio
SpringBoot
SpringBoot
Actualizado: 12/06/2025

¡Desbloquea el curso de SpringBoot completo!

IA
Ejercicios
Certificado
Entrar

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 Plus

Mé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.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

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

⭐⭐⭐⭐⭐
4.9/5 valoración