Spring Boot

SpringBoot

Tutorial SpringBoot: Controladores Spring MVC

Spring Boot controladores MVC: uso. Domina el uso de controladores MVC en Spring Boot con ejemplos prácticos y detallados.

Spring MVC es un módulo del ampliamente conocido framework Spring que se utiliza para desarrollar aplicaciones web siguiendo el patrón de diseño Modelo-Vista-Controlador (Model-View-Controller, MVC).

El patrón MVC separa la lógica de una aplicación en tres componentes clave:

  • Modelo: este componente encapsula la lógica del negocio y los datos. Esencialmente, se trata de todos los datos y las reglas que gestionan los datos en la aplicación. Por ejemplo, si la aplicación es un sistema de gestión de empleados, los datos podrían incluir la información del empleado, mientras que las reglas podrían involucrar cómo se añade, se actualiza o se borra esa información.

  • Vista: este componente se encarga de presentar los datos al usuario, es decir, es la interfaz de usuario. En el caso de una aplicación web, la vista normalmente está compuesta por páginas HTML, pero también puede estar compuesta por otros tipos de interfaz de usuario.

  • Controlador: este componente actúa como intermediario entre el modelo y la vista. Gestiona las solicitudes del usuario, interactúa con el modelo para obtener o manipular datos, y luego actualiza la vista para reflejar los cambios en los datos o el estado de la aplicación.

En Spring MVC, se implementa el patrón MVC utilizando la anotación @Controller para indicar las clases que actuarán como controladores. Dentro de estas clases, se usan métodos anotados con @GetMapping, @PostMapping para manejar diferentes tipos de solicitudes HTTP (como GET, POST, etc.).

Un ejemplo sencillo de un controlador en Spring MVC podría ser:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloWorldController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, world!");
        return "helloWorld";
    }
}

En este ejemplo, la función sayHello se encarga de manejar las solicitudes a la ruta /hello. Añade un atributo llamado message al modelo con el valor "Hello, world!", y luego devuelve el nombre de la vista helloWorld que se utilizará para presentar la respuesta.

Las anotaciones @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, etc., son especializaciones de la anotación @RequestMapping. Estas anotaciones son una forma más específica y expresiva de definir el mapeo de solicitudes HTTP.

Este módulo de Spring es altamente configurable y permite una gran flexibilidad en su implementación, ofreciendo múltiples formas de gestionar la lógica de presentación y negocio de una aplicación web. Con Spring MVC, puedes crear aplicaciones web robustas y mantenibles que siguen buenas prácticas de diseño y desarrollo de software.

Configuración

La configuración en Spring Boot es más simple que en proyectos Spring tradicionales debido a la característica de "auto-configuración". Esto significa que Spring Boot configura automáticamente la aplicación basándose en las dependencias que se han añadido al proyecto.

Sin embargo, Spring Boot no restringe la personalización de la configuración, lo que significa que la configuración automática puede ser ajustada y adaptada a las necesidades específicas del proyecto. La personalización de la configuración puede realizarse mediante el uso de archivos de propiedades, archivos YAML, variables de entorno, entre otros.

Por ejemplo, en Spring Boot puedes especificar propiedades de la aplicación en un archivo application.properties o application.yml que se encuentra en el directorio src/main/resources. Estas propiedades podrían incluir la configuración de la base de datos, la configuración del servidor, la configuración de Spring MVC, entre otros.

Aquí tienes un ejemplo de cómo se vería un archivo application.properties:

# Configuración del servidor
server.port=8081

# Configuración de la base de datos
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=update

# Configuración de Spring MVC
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

En este archivo de propiedades, el servidor se configura para ejecutarse en el puerto 8081. También se proporciona la configuración para una base de datos MySQL, incluyendo la URL de la base de datos, el nombre de usuario y la contraseña, y la estrategia para la generación del esquema de la base de datos. Por último, se configura Spring MVC para buscar las vistas en el directorio /WEB-INF/views/ y asumir que las vistas son archivos JSP. También es posible configurarlo con Thymeleaf.

Además de los archivos de propiedades y YAML, también puedes personalizar la configuración utilizando clases de configuración de Java anotadas con @Configuration. Estas clases pueden contener métodos anotados con @Bean que producen objetos que se gestionan como beans dentro del contexto de la aplicación de Spring. Estas clases de configuración de Java son muy potentes y flexibles, y se pueden utilizar para personalizar casi cualquier aspecto de la configuración de Spring Boot.

Así que, en resumen, aunque Spring Boot proporciona una configuración automática que puede funcionar para la mayoría de las aplicaciones, también proporciona una amplia gama de opciones para personalizar esta configuración de acuerdo a las necesidades de tu aplicación.

Controladores y Vistas

En Spring MVC, los Controladores y Vistas juegan un papel crucial en el manejo de las solicitudes de los usuarios y en la generación de las respuestas.

Controladores

Los controladores en Spring MVC son clases simples de Java que están anotadas con @Controller. La responsabilidad de un controlador es tomar una solicitud entrante, manejarla y devolver una respuesta.

La anotación @GetMapping se usa para mapear las solicitudes HTTP por método GET a métodos específicos en los controladores. Por ejemplo, una solicitud GET a "/home" podría mapearse a un método llamado home(). Este método puede procesar la solicitud, interactuar con la lógica de negocio y/o los datos de la aplicación (el Modelo), y finalmente preparar y devolver la respuesta.

Aquí tienes un ejemplo de cómo se ve un controlador:

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        // ... lógica del método ...
        return "homeView";
    }
}

En este caso, cuando un usuario realiza una solicitud GET a "/home", se llama al método home(). Este método devolverá el nombre de la vista que se debe renderizar como respuesta (en este caso, "homeView").

Vistas

Las Vistas en Spring MVC son responsables de generar la respuesta que se enviará al usuario. Esto generalmente implica tomar los datos del Modelo y renderizarlos en una forma que el usuario pueda entender (como una página HTML).

Spring MVC es agnóstico con respecto a la tecnología de las vistas. Podrías usar JSP, Thymeleaf, FreeMarker, o cualquier otra tecnología de vistas que prefieras.

Por ejemplo, si estás usando Thymeleaf, una vista podría ser un archivo HTML que utiliza sintaxis de Thymeleaf para incorporar datos del Modelo en la página. Aquí tienes un ejemplo simple de cómo podría verse esto:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home</title>
</head>
<body>
    <h1 th:text="${message}">Hello, World!</h1>
</body>
</html>

En este ejemplo, la vista es una página HTML simple con un encabezado. El valor del encabezado se establece con el atributo th:text, que es una expresión de Thymeleaf que se evalúa para obtener el valor del atributo "message" del Modelo del controlador HelloWorldController visto anteriormente.

Certifícate en SpringBoot con CertiDevs PLUS

Ejercicios de esta lección Controladores Spring MVC

Evalúa tus conocimientos de esta lección Controladores Spring MVC con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Web y Test Starters

Spring Boot
Puzzle

Entidades JPA

Spring Boot
Test

Repositorios reactivos

Spring Boot
Test

Inserción de datos

Spring Boot
Test

Borrar datos de base de datos

Spring Boot
Test

Controladores Spring MVC

Spring Boot
Código

Backend API REST con Spring Boot

Spring Boot
Proyecto

Operadores Reactivos

Spring Boot
Puzzle

Controladores Spring REST

Spring Boot
Código

Uso de Spring con Thymeleaf

Spring Boot
Puzzle

Crear entidades JPA

Spring Boot
Código

Registro de usuarios

Spring Boot
Test

CRUD y JPA Repository

Spring Boot
Puzzle

Anotaciones y mapeo en JPA

Spring Boot
Puzzle

Integración con Vue

Spring Boot
Test

Consultas JPQL con @Query en Spring Data JPA

Spring Boot
Test

Open API y cómo agregarlo en Spring Boot

Spring Boot
Puzzle

Uso de Controladores REST

Spring Boot
Puzzle

API Specification

Spring Boot
Puzzle

Inyección de dependencias

Spring Boot
Test

Introducción a Spring Boot

Spring Boot
Test

Consultas JPQL con @Query en Spring Data JPA

Spring Boot
Puzzle

API Query By Example (QBE)

Spring Boot
Puzzle

Inyección de dependencias

Spring Boot
Código

Vista en Spring MVC con Thymeleaf

Spring Boot
Test

Servicios en Spring

Spring Boot
Código

Configuración de Vue

Spring Boot
Puzzle

Integración con Angular

Spring Boot
Test

API Query By Example (QBE)

Spring Boot
Test

API Specification

Spring Boot
Test

Controladores MVC

Spring Boot
Test

Métodos find en repositorios

Spring Boot
Test

Repositorios Spring Data

Spring Boot
Test

Inyección de dependencias

Spring Boot
Puzzle

Data JPA y Mail Starters

Spring Boot
Test

Configuración de Angular

Spring Boot
Puzzle

Controladores Spring REST

Spring Boot
Test

Configuración de Controladores MVC

Spring Boot
Puzzle

Asociaciones de entidades JPA

Spring Boot
Código

Actualizar datos de base de datos

Spring Boot
Test

Identificadores y relaciones JPA

Spring Boot
Puzzle

Verificar token JWT en peticiones

Spring Boot
Test

Login de usuarios

Spring Boot
Test

Integración con React

Spring Boot
Test

Configuración de React

Spring Boot
Puzzle

Asociaciones en JPA

Spring Boot
Test

Consultas JPQL

Spring Boot
Código

Todas las 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

Spring Boot

Introducción Y Entorno

Spring Boot Starters

Spring Boot

Introducción Y Entorno

Inyección De Dependencias

Spring Boot

Introducción Y Entorno

Controladores Spring Mvc

Spring Boot

Spring Web

Vista En Spring Mvc Con Thymeleaf

Spring Boot

Spring Web

Controladores Spring Rest

Spring Boot

Spring Web

Open Api Y Cómo Agregarlo En Spring Boot

Spring Boot

Spring Web

Servicios En Spring

Spring Boot

Spring Web

Crear Entidades Jpa

Spring Boot

Persistencia Con Spring Data

Asociaciones De Entidades Jpa

Spring Boot

Persistencia Con Spring Data

Repositorios Spring Data

Spring Boot

Persistencia Con Spring Data

Métodos Find En Repositorios

Spring Boot

Persistencia Con Spring Data

Inserción De Datos

Spring Boot

Persistencia Con Spring Data

Actualizar Datos De Base De Datos

Spring Boot

Persistencia Con Spring Data

Borrar Datos De Base De Datos

Spring Boot

Persistencia Con Spring Data

Consultas Jpql Con @Query En Spring Data Jpa

Spring Boot

Persistencia Con Spring Data

Api Query By Example (Qbe)

Spring Boot

Persistencia Con Spring Data

Repositorios Reactivos

Spring Boot

Persistencia Con Spring Data

Api Specification

Spring Boot

Persistencia Con Spring Data

Integración Con React

Spring Boot

Integración Frontend

Integración Con Vue

Spring Boot

Integración Frontend

Integración Con Angular

Spring Boot

Integración Frontend

Registro De Usuarios

Spring Boot

Seguridad Con Spring Security

Login De Usuarios

Spring Boot

Seguridad Con Spring Security

Verificar Token Jwt En Peticiones

Spring Boot

Seguridad Con Spring Security

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el patrón de diseño MVC y cómo se implementa en Spring MVC.
  2. Aprender cómo se configuran y utilizan los Controladores y Vistas en Spring MVC.
  3. Entender la auto-configuración en Spring Boot y cómo personalizarla según las necesidades.
  4. Familiarizarse con el punto de entrada de una aplicación Spring Boot y su propósito.
  5. Ser capaz de sintetizar y aplicar estos conceptos en el desarrollo de aplicaciones web con Spring Boot.