SpringBoot
Tutorial SpringBoot: Métodos POST en controladores MVC
Aprende a usar métodos POST en controladores MVC con Spring Boot para procesar datos y manejar formularios eficazmente.
Aprende SpringBoot y certifícateMé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
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.
Otras lecciones de SpringBoot
Accede a todas las lecciones de SpringBoot y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Spring Boot
Introducción Y Entorno
Spring Boot Starters
Introducción Y Entorno
Inyección De Dependencias
Introducción Y Entorno
Crear Proyecto Con Spring Initializr
Introducción Y Entorno
Crear Proyecto Desde Visual Studio Code
Introducción Y Entorno
Controladores Spring Mvc
Spring Mvc Con Thymeleaf
Vista En Spring Mvc Con Thymeleaf
Spring Mvc Con Thymeleaf
Controladores Spring Rest
Spring Mvc Con Thymeleaf
Open Api Y Cómo Agregarlo En Spring Boot
Spring Mvc Con Thymeleaf
Servicios En Spring
Spring Mvc Con Thymeleaf
Clientes Resttemplate Y Restclient
Spring Mvc Con Thymeleaf
Rxjava En Spring Web
Spring Mvc Con Thymeleaf
Métodos Post En Controladores Mvc
Spring Mvc Con Thymeleaf
Métodos Get En Controladores Mvc
Spring Mvc Con Thymeleaf
Formularios En Spring Mvc
Spring Mvc Con Thymeleaf
Crear Proyecto Con Intellij Idea
Spring Mvc Con Thymeleaf
Introducción A Los Modelos Mvc
Spring Mvc Con Thymeleaf
Layouts Y Fragmentos En Thymeleaf
Spring Mvc Con Thymeleaf
Estilización Con Bootstrap Css
Spring Mvc Con Thymeleaf
Gestión De Errores Controlleradvice
Spring Mvc Con Thymeleaf
Estilización Con Tailwind Css
Spring Mvc Con Thymeleaf
Introducción A Controladores Rest
Spring Rest
Métodos Get En Controladores Rest
Spring Rest
Métodos Post En Controladores Rest
Spring Rest
Métodos Delete En Controladores Rest
Spring Rest
Métodos Put Y Patch En Controladores Rest
Spring Rest
Gestión De Errores Restcontrolleradvice
Spring Rest
Creación De Entidades Jpa
Spring Data Jpa
Asociaciones De Entidades Jpa
Spring Data Jpa
Repositorios Spring Data
Spring Data Jpa
Métodos Find En Repositorios
Spring Data Jpa
Inserción De Datos
Spring Data Jpa
Actualizar Datos De Base De Datos
Spring Data Jpa
Borrar Datos De Base De Datos
Spring Data Jpa
Consultas Jpql Con @Query En Spring Data Jpa
Spring Data Jpa
Api Query By Example (Qbe)
Spring Data Jpa
Api Specification
Spring Data Jpa
Repositorios Reactivos
Spring Data Jpa
Configuración Base De Datos Postgresql
Spring Data Jpa
Configuración Base De Datos Mysql
Spring Data Jpa
Introducción A Jpa Y Spring Data Jpa
Spring Data Jpa
Configuración Base De Datos H2
Spring Data Jpa
Testing Unitario De Componentes Y Servicios
Testing Con Spring Test
Testing De Repositorios Spring Data Jpa
Testing Con Spring Test
Testing Controladores Spring Mvc Con Thymeleaf
Testing Con Spring Test
Testing Controladores Rest Con Json
Testing Con Spring Test
Testing De Aplicaciones Reactivas Webflux
Testing Con Spring Test
Testing De Seguridad Spring Security
Testing Con Spring Test
Testing Con Apache Kafka
Testing Con Spring Test
Introducción Al Testing
Testing Con Spring Test
Introducción A Spring Security
Seguridad Con Spring Security
Seguridad Basada En Formulario
Seguridad Con Spring Security
Registro De Usuarios En Api Rest
Seguridad Con Spring Security
Login De Usuarios En Api Rest
Seguridad Con Spring Security
Validación Jwt En Api Rest
Seguridad Con Spring Security
Autenticación Jwt Completa En Api Rest
Seguridad Con Spring Security
Seguridad Jwt En Api Rest Reactiva Spring Webflux
Seguridad Con Spring Security
Autenticación Y Autorización Con Anotaciones
Seguridad Con Spring Security
Fundamentos De Autenticación Oauth
Seguridad Con Spring Security
Autenticación Oauth Con Github
Seguridad Con Spring Security
Testing Con Spring Security Test
Seguridad Con Spring Security
Autenticación Oauth En Api Rest
Seguridad Con Spring Security
Introducción A Spring Webflux
Reactividad Webflux
Spring Data R2dbc
Reactividad Webflux
Controlador Reactivo Basado En Anotaciones
Reactividad Webflux
Controlador Reactivo Basado En Funciones
Reactividad Webflux
Operadores Reactivos Básicos
Reactividad Webflux
Operadores Reactivos Avanzados
Reactividad Webflux
Cliente Reactivo Webclient
Reactividad Webflux
Introducción E Instalación De Apache Kafka
Mensajería Asíncrona
Crear Proyecto Con Apache Kafka
Mensajería Asíncrona
Creación De Producers
Mensajería Asíncrona
Creación De Consumers
Mensajería Asíncrona
Kafka Streams En Spring Boot
Mensajería Asíncrona
Integración Con Angular
Integración Frontend
Integración Con React
Integración Frontend
Integración Con Vue
Integración Frontend
Ejercicios de programación de SpringBoot
Evalúa tus conocimientos de esta lección Métodos POST en controladores MVC con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Crear entidades JPA
Controladores Spring MVC
Asociaciones de entidades JPA
Creación de entidades
Reto servicio PedidoService
Reto controlador REST
Consultas JPQL
Reto test controlador REST
Anotaciones JPA
Relación ManyToOne con Tarea y Proyecto
CRUD Customers Spring MVC + Spring Data JPA
Backend API REST con Spring Boot
Filtrar categorías por nombre
Reto controlador MVC Categoría
Entidad y repositorio
Métodos derivados y consultas JPQL en repositorios
En esta lección
Objetivos de aprendizaje de esta lección
- 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.