Anteriormente hemos visto como se pasan datos desde el controlador hacia las vistas, ahora debemos saber cuál es la manera que podemos capturar datos que se envíen desde las vistas hacia el controlador, ya sea que se envían los datos por el request o por algún formulario para ello veremos cada uno de los métodos y las propiedades que podemos aplicar en spring para hacer las capturas de los datos y procesarlos en nuestros controladores
primero creamos nuestro controlador con el código siguiente:
Lo nuevo en este controlador es que hacemos uso de la anotación @RequestParam, que se encarga de capturar los datos que se envían desde el cliente para poder procesarlos, lo importante del uso de dicha anotación es el nombre del dato que se quiere capturar en este caso se identifica por la propiedad name de la anotación.
Ahora creamos el template para asociar a dicho código con el siguiente marcado:
Ejecutamos la aplicación y en el navegador pasamos la siguiente url
Y la ejecutamos obtendremos el siguiente mensaje de error
En este caso el error surge porque la anotación @RequestParam por defecto se configura con el valor obligatorio es decir el parámetro se tiene que enviar, porque si no es así toma como un request erróneo por la falta de un parámetro, podemos modificar el comportamiento del método para evitar que se genere la página de error haciendo un cambio en la definición del método, lo que se hace es cambiar la propiedad required con valor false, nuestro método en el código debe quedar así.
Y si ejecutmaos la url como lo hicimos anteriormente obtendremos el siguiente resultado en el navegador.
Podemos agregar una propiedad adicional para mostrar un mensaje por defecto cuando no se pasa un dato modificamos el método en el código de la siguiente manera
y en el navegador obtenemos el siguiente resultado
Podemos usar otra forma para el paso de parámetros y esta es cuando la url es "amigable" o posee un formato como el siguiente tipo.
En este caso el parámetro se envía de una forma un poco más legible para tratar este tipo de URL, Spring implementa una anotación la cual nos permite extraer el dato y procesarlo , para ello agregamos el siguiente código a la clase que creamos anteriormente para procesar los datos desde el cliente
Solo es un método adicional en el cual los cambios relevantes son los siguientes en la anotación @GetMapping pasamos un parámetro de la forma "/request2/{nombre}", esto es la convención que se usa para definir el mapeo como lo hemos comprobado en anteriores ejemplos pero hay un pequeño cambio hay una elemento encerrado entre llaves, esto va indicarle a spring que es un parámetro que pasaremos por la URL para que él lo pueda procesar usando la anotación @PathVariable, al hacer esto en nuestra clase y ejecutarla en el navegador por medio de la url
En la vista no hay un cambio significativo, pero en la lógica y en la estructura de como enviamos el dato si, con esto definido tenemos dos formas de como poder procesar request del tipo GET que nos envié el cliente .