martes, 1 de diciembre de 2015

Ejemplos de RequestMapping en Spring MVC

En este artículo vamos a profundizar en el uso de los controladores en Spring MVC. En el ejemplo anterior donde configurábamos Spring mediante Java, vimos un controlador lo más sencillo posible, ahora vamos a ver una serie de ejemplos de uso de los controladores.


Como ya habrás adivinado, la anotación @Controller define un Controlador y no es necesario implementar ningún interface o extender de una clase como en otros frameworks. El DispatcherServlet se encarga de delegar las peticiones HTTP en nuestros controladores, y según la petición ejecutar una funcionalidad.



Lo más interesante es cómo mapear estas peticiones y generar una respuesta, para ello utilizamos la anotación @RequestMapping.



La anotación @RequestMapping la podemos utilizar a nivel de clase:


@Controller
@RequestMapping(value="/")
public class HomeController {
...
}


y a nivel de método:

@RequestMapping(value="/", method =RequestMethod.GET)
    public String home() {
        return "home";
    }


Si definimos a nivel de clase,  por ejemplo @RequestMapping(value="/home") las anotaciones de los métodos utilizarán el valor de la anotación de la clase como base o prefijo, es decir si anotamos un método con @RequestMapping(value="/welcome")  estaríamos mapeando /home/welcome

@Controller
@RequestMapping(value="/home")
public class HomeController {
    
    @RequestMapping
    public String home() {
        return "home";
    }
    
    @RequestMapping(value="/welcome", method =RequestMethod.GET)
    public String welcome() {
        return "welcome";
    }
}

Observa en el ejemplo que no he añadido un valor a la anotación del método home() por lo que se utilizará por defecto, otro detalle importante es que especifico en el método welcome() el tipo de petición HTTP que va a recibir mediante el parámetro method =RequestMethod.GET.

Es posible mapear varias URL en el mismo método de la siguiente forma:
@RequestMapping(value={"/welcome","/bienvenida"}, method =RequestMethod.GET)

También es posible utilizar el * como comodín, lo que quiere decir que aceptará cualquier URL:


@Controller
@RequestMapping(value="/home")
public class HomeController {
    
    //...
    
    @RequestMapping(value="/welcome/*", method =RequestMethod.GET)
    public String welcome3() {
        return "welcome";
    }
}

Lo que aceptaría urls como /home/welcome/loquesea que mostraría home.jsp.

Y por último también podríamos obtener qué parámetro nos pasan por la URL :


@RequestMapping(value="{id}", method =RequestMethod.GET)
    public String home2(@PathVariable("id")String param) {
        System.out.println("Parámetro Recibido:" + param);
        return "home";
    }

donde {id} en nuestro ejemplo representa /home/{id} y el método recibe como parámetro la variable: @PathVariable("id")String param

El código completo está disponible en github:
https://github.com/Jaime-Alonso/TutorialSpringMVC/tree/master/TutorialSpringMVC-02




No hay comentarios:

Publicar un comentario