Spring GetMapping es una anotación de Spring Framework que aparece con Spring 4.3 y nos permite simplificar el manejo de los diferentes métodos de Spring MVC y los @RequestMappings que a veces se hacen un poco pesados.
A partir de ahora nosotros podemos usar estas anotaciones y simplificar el código. Para ello vamos a construir un ejemplo utilizando Spring Boot y con las dependencias de MVC y Thymeleaf.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.arquitecturajava</groupId> <artifactId>spring</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
El primer paso es ver el código de la aplicación principal:
package com.arquitecturajava.spring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @SpringBootApplication public class Application extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Una vez tenemos esto construido el siguiente paso es dar de alta un controlador:
package com.arquitecturajava.spring; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HolaController { @GetMapping("/hola") @ResponseBody public String hola() { return "has hecho una peticion get"; } @GetMapping("/formulario") public String hola2() { return "formulario"; } @PostMapping("/holapost") @ResponseBody public String holaPost() { return "has hecho una peticion post"; } }
Este controlador hace uso de las nuevas anotaciones de spring @GetMapping ,@PostMapping etc. Como se puede ver si solicitamos la url “/hola” nos devolverá “has hecho una peticion get” . Vamos a arrancar la aplicación de SpringBoot y probarlo.
Funciona perfectamente . Una vez que hemos realizado la primera petición solicitamos la carga del formulario con “/formulario”.
<html> <body> <form action="holapost" method="post"> <input type="submit"/> </form> </body> </html>
Esto nos cargará una página html con un botón que realiza una petición post a la url “holapost”.
Pulsamos el botón y nos mostrará el resultado
Acabamos de usar spring GetMapping y PostMapping para trabajar con Spring MVC y eliminar el uso de @RequestMapping.
Otros artículos relacionados
@GetMapping
(
"/formulario"
)
public
String hola2() {
return
"formulario"
;
}
Me da error.
Circular view pathBuen día,
Necesito realizar lo siguiente:
enviar un texto como link desde el controlador con GetMapping ejemplo:
Bienvenido a la pagina Principal:
. Tranferencias (este seria el link a la pag. tranferencias).
he logrado mandar desde el controlador pero como texto, me gustaria que me puedan ayudar a pasarlo como link.
Muchas gracias.
No te he entendido bien 🙁
Hola Cecilio,y la anotacion @ResponseBody como se usaria en este ejemplo o en todo caso cual es el objetivo de esa anotacion
El objetivo de la anotación es personalizar la respuesta al maximo , por ejemplo un RestController automaticamente responde en JSON
Hola, para retornar una pagina web debo usar siempre @GetMapping??
No tiene porque, ya que una pagina web tambien puede hacer post
Hola, tengo este error, podrian ayudarme?
Access to XMLHttpRequest at ‘http://127.0.0.1:8080/pruebapost?crossDomain=true’ from origin ‘null’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
necesitas activar cors mira este artículo
Buenas , como estas ? me parecen interesantes tus articulos, son muy buenos sobre todo por la parte tecnica que le aporta a principiantes. Una cosa que meparece que sumaria un poco mas es que dejes el enlace a un github con el proyecto andando, para poder debuggearlo y poder probarlo en el caso de ver el codigo andando.
Es una cosa que estoy pensando a futuro , pero este mes me ha tocado remodelar el blog 🙂 , así que poco a poco. Es algo que valoraré para 2018 😉