Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Spring MVC | Fundamentos de Spring Boot
Spring Boot Backend

bookSpring MVC

Por qué necesitas Spring MVC

Spring MVC ayuda a organizar una aplicación web siguiendo el principio de separación de responsabilidades, lo que facilita el desarrollo, pruebas y mantenimiento del código. Proporciona un marco para crear páginas web y gestionar solicitudes de usuario, así como para integrarse con la lógica de negocio y bases de datos.

En nuestra aplicación, utilizamos una arquitectura de tres capas para separar la lógica en módulos distintos. Disponemos de las capas repository, service y controller. Esta separación facilita el mantenimiento y las pruebas de la aplicación.

Anotaciones clave y su función

Para cada capa, existen anotaciones específicas, que son esenciales para que Spring reconozca y registre automáticamente los componentes en el contexto de la aplicación (esto se explicará más adelante). Esto ayuda a mantener una arquitectura más limpia y mejora la legibilidad del código.

Anotación de la capa Repository

La anotación @Repository se utiliza para indicar una clase que interactúa con la base de datos. Estas clases suelen contener métodos para realizar operaciones CRUD (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy
1234567
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }

En este ejemplo, UserRepository está marcado como un repositorio, lo que permite que Spring gestione las excepciones relacionadas con el acceso a datos e integre automáticamente este componente en la aplicación.

Anotación de la capa de servicio

La anotación @Service se utiliza para designar una clase como componente de la lógica de negocio. Estas clases contienen métodos que implementan las reglas y operaciones de negocio de la aplicación.

UserService.java

UserService.java

copy
1234567
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }

La anotación @Service indica que esta clase contiene la lógica de negocio de la aplicación, lo que facilita su uso en otras partes de la aplicación. Esto simplifica el desarrollo, ya que no es necesario crear instancias de esta clase manualmente — Spring se encarga de ello.

Anotación de la capa Controller

Dado que la capa de controlador sirve como el punto de interacción entre el cliente y nuestra aplicación, es necesario establecer endpoints para que los clientes puedan acceder a ella. Esto implica asociar URLs específicas con cada método, permitiendo que los clientes interactúen directamente con esos métodos.

Para lograr esto, es necesario anotar la clase como @Controller y definir un método que actuará como el manejador de solicitudes.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }

La anotación @RequestMapping se utiliza para vincular solicitudes HTTP a métodos específicos en el controlador. Permite especificar qué patrones de URL y tipos de solicitudes (como GET o POST) debe responder un método. Por ejemplo, en este caso, el método home() responderá a las solicitudes GET realizadas a la URL raíz.

Cuando un usuario visita example.com/, su navegador envía una solicitud HTTP GET al servidor, que llega a la aplicación Spring. El framework Spring encuentra la anotación @RequestMapping correspondiente en el HomeController, llama al método home() para gestionar la solicitud y luego envía de vuelta la respuesta adecuada al navegador del usuario.

Existen anotaciones que proporcionan una asignación más precisa para el tipo de método de solicitud, como @GetMapping, @PostMapping, @DeleteMapping, entre otras. En sus atributos, simplemente se especifica la URL que puede ser utilizada para acceder a ellas.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }

En este ejemplo, si accedemos a la URL /home, seremos redirigidos al método home() ÚNICAMENTE si se trata de una solicitud GET. Si se utiliza un tipo diferente de método de solicitud, el servidor responderá con un error 404 Not Found para esa URL.

@RequestParam

¿Qué son los parámetros de solicitud de URL? Son los parámetros que aparecen después del signo de interrogación en la URL. Por ejemplo, si tenemos la dirección -> example.com/home?name=Alex (clave = name, valor = Alex), podemos recuperar directamente el parámetro (name) en el método welcomeUser().

Main.java

Main.java

copy
12345678
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }

Aquí, el parámetro name se extrae de la URL (/home?name=Alex) y se pasa al método welcomeUser().

También es posible extraer más de un parámetro, no solo uno individual. Todos los parámetros en la URL deben estar separados por el símbolo &. Por ejemplo: example.com/home?name=Alex&age=20.

Main.java

Main.java

copy
12345
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }

En este ejemplo, el endpoint /home puede ser accedido mediante una URL como example.com/home?name=Alex&age=20, donde name y age son los parámetros pasados al método.

@PathVariable

En Spring MVC, la anotación @PathVariable se utiliza para vincular una variable en la URL directamente a un parámetro de método. Permite capturar valores dinámicos de la URL y utilizarlos dentro del método.

Si necesita establecer dinámicamente una URL, es decir, pasar un valor directamente dentro de la URL, puede utilizar la anotación @PathVariable.

Por ejemplo, si tiene un patrón de URL como /users/{id}, puede utilizar @PathVariable para acceder a la parte {id} de la URL y pasarla como un parámetro a su método.

Main.java

Main.java

copy
12345678
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }

En este ejemplo, id se extrae de la URL (/user/123) y se pasa al método getUser(), donde el valor 123 se asigna al parámetro userId.

Estas anotaciones ayudan a los desarrolladores a configurar fácilmente el manejo de solicitudes HTTP, vincular datos a objetos y gestionar respuestas, mejorando la legibilidad y mantenibilidad del código.

Resumen

Spring MVC simplifica el desarrollo de aplicaciones web al separar el manejo de solicitudes, la lógica de la aplicación y el renderizado de vistas. Los controladores, marcados con la anotación @Controller o @RestController, gestionan las solicitudes y devuelven datos para mostrar.

1. ¿Qué hace la anotación @Controller en Spring MVC?

2. ¿Qué anotación se utiliza para manejar GET requests en Spring MVC?

question mark

¿Qué hace la anotación @Controller en Spring MVC?

Select the correct answer

question mark

¿Qué anotación se utiliza para manejar GET requests en Spring MVC?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

What is the difference between @RequestParam and @PathVariable?

Can you explain more about the three-tier architecture in Spring MVC?

How does Spring automatically create instances of annotated classes?

Awesome!

Completion rate improved to 3.45

bookSpring MVC

Desliza para mostrar el menú

Por qué necesitas Spring MVC

Spring MVC ayuda a organizar una aplicación web siguiendo el principio de separación de responsabilidades, lo que facilita el desarrollo, pruebas y mantenimiento del código. Proporciona un marco para crear páginas web y gestionar solicitudes de usuario, así como para integrarse con la lógica de negocio y bases de datos.

En nuestra aplicación, utilizamos una arquitectura de tres capas para separar la lógica en módulos distintos. Disponemos de las capas repository, service y controller. Esta separación facilita el mantenimiento y las pruebas de la aplicación.

Anotaciones clave y su función

Para cada capa, existen anotaciones específicas, que son esenciales para que Spring reconozca y registre automáticamente los componentes en el contexto de la aplicación (esto se explicará más adelante). Esto ayuda a mantener una arquitectura más limpia y mejora la legibilidad del código.

Anotación de la capa Repository

La anotación @Repository se utiliza para indicar una clase que interactúa con la base de datos. Estas clases suelen contener métodos para realizar operaciones CRUD (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy
1234567
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }

En este ejemplo, UserRepository está marcado como un repositorio, lo que permite que Spring gestione las excepciones relacionadas con el acceso a datos e integre automáticamente este componente en la aplicación.

Anotación de la capa de servicio

La anotación @Service se utiliza para designar una clase como componente de la lógica de negocio. Estas clases contienen métodos que implementan las reglas y operaciones de negocio de la aplicación.

UserService.java

UserService.java

copy
1234567
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }

La anotación @Service indica que esta clase contiene la lógica de negocio de la aplicación, lo que facilita su uso en otras partes de la aplicación. Esto simplifica el desarrollo, ya que no es necesario crear instancias de esta clase manualmente — Spring se encarga de ello.

Anotación de la capa Controller

Dado que la capa de controlador sirve como el punto de interacción entre el cliente y nuestra aplicación, es necesario establecer endpoints para que los clientes puedan acceder a ella. Esto implica asociar URLs específicas con cada método, permitiendo que los clientes interactúen directamente con esos métodos.

Para lograr esto, es necesario anotar la clase como @Controller y definir un método que actuará como el manejador de solicitudes.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }

La anotación @RequestMapping se utiliza para vincular solicitudes HTTP a métodos específicos en el controlador. Permite especificar qué patrones de URL y tipos de solicitudes (como GET o POST) debe responder un método. Por ejemplo, en este caso, el método home() responderá a las solicitudes GET realizadas a la URL raíz.

Cuando un usuario visita example.com/, su navegador envía una solicitud HTTP GET al servidor, que llega a la aplicación Spring. El framework Spring encuentra la anotación @RequestMapping correspondiente en el HomeController, llama al método home() para gestionar la solicitud y luego envía de vuelta la respuesta adecuada al navegador del usuario.

Existen anotaciones que proporcionan una asignación más precisa para el tipo de método de solicitud, como @GetMapping, @PostMapping, @DeleteMapping, entre otras. En sus atributos, simplemente se especifica la URL que puede ser utilizada para acceder a ellas.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }

En este ejemplo, si accedemos a la URL /home, seremos redirigidos al método home() ÚNICAMENTE si se trata de una solicitud GET. Si se utiliza un tipo diferente de método de solicitud, el servidor responderá con un error 404 Not Found para esa URL.

@RequestParam

¿Qué son los parámetros de solicitud de URL? Son los parámetros que aparecen después del signo de interrogación en la URL. Por ejemplo, si tenemos la dirección -> example.com/home?name=Alex (clave = name, valor = Alex), podemos recuperar directamente el parámetro (name) en el método welcomeUser().

Main.java

Main.java

copy
12345678
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }

Aquí, el parámetro name se extrae de la URL (/home?name=Alex) y se pasa al método welcomeUser().

También es posible extraer más de un parámetro, no solo uno individual. Todos los parámetros en la URL deben estar separados por el símbolo &. Por ejemplo: example.com/home?name=Alex&age=20.

Main.java

Main.java

copy
12345
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }

En este ejemplo, el endpoint /home puede ser accedido mediante una URL como example.com/home?name=Alex&age=20, donde name y age son los parámetros pasados al método.

@PathVariable

En Spring MVC, la anotación @PathVariable se utiliza para vincular una variable en la URL directamente a un parámetro de método. Permite capturar valores dinámicos de la URL y utilizarlos dentro del método.

Si necesita establecer dinámicamente una URL, es decir, pasar un valor directamente dentro de la URL, puede utilizar la anotación @PathVariable.

Por ejemplo, si tiene un patrón de URL como /users/{id}, puede utilizar @PathVariable para acceder a la parte {id} de la URL y pasarla como un parámetro a su método.

Main.java

Main.java

copy
12345678
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }

En este ejemplo, id se extrae de la URL (/user/123) y se pasa al método getUser(), donde el valor 123 se asigna al parámetro userId.

Estas anotaciones ayudan a los desarrolladores a configurar fácilmente el manejo de solicitudes HTTP, vincular datos a objetos y gestionar respuestas, mejorando la legibilidad y mantenibilidad del código.

Resumen

Spring MVC simplifica el desarrollo de aplicaciones web al separar el manejo de solicitudes, la lógica de la aplicación y el renderizado de vistas. Los controladores, marcados con la anotación @Controller o @RestController, gestionan las solicitudes y devuelven datos para mostrar.

1. ¿Qué hace la anotación @Controller en Spring MVC?

2. ¿Qué anotación se utiliza para manejar GET requests en Spring MVC?

question mark

¿Qué hace la anotación @Controller en Spring MVC?

Select the correct answer

question mark

¿Qué anotación se utiliza para manejar GET requests en Spring MVC?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 3
some-alt