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