Spring MVC Request con JSON



Hola amigos, como sabemos  los JSON son la mejor forma de comunicar el back-end con el front-end, los programadores java como yo tenemos que ocupar ciertas librerías para realizar una conversión fácil.

Pero en objetos complejos y con un gran numero de atributos se vuelve tedioso, por eso spring mvc, que fue hecho por los mimos dioses y regalado a los humanos para facilitarnos la vida, nos salvo de estos problemas.

Spring mvc es un moustro que tiene un gran numero de cabezas y hoy solo veremos un pelo de una de las cabezas.

El proyecto lo realice con maven y spring mvc, ocupare intellij IDEA 13.1


REQUERIMIENTOS MINIMOS:

1.-GANAS
2.-GANAS
3.-GANAS


Esta realizado con maven por lo cual necesitamos de las siguientes librerías:


  • spring-core
  • spring-web
  • spring-webmvc
  • jackson-mapper-asl



Una vez agregado las dependencias es hora de configurar spring, en nuestro archivo web.xml, para realizar los despachos pondré el contexto rest aunque ustedes lo pueden modificar con cualquier otro.

También es importante agregar el archivo xml de spring



En nuestro archivo mvc-dispatcher-servlet.xml agregaremos lo siguiente:



Y listo a programar como dios ha dicho, en este ejemplo me basare en un inventario el cual esta compuesto por otro objeto que es tipo de inventario, por ese motivo tendremos 2 clases con diferentes atributos:



No tenemos que poner anotaciones ni implementarlo con la serialización solo es necesario poner como privado los atributos y realizar los métodos set() y get(), una vez creados es hora de realizar la acción.

Para este ejemplo realizare 2 métodos uno que no reciba parámetros y regrese una lista y otro que reciba un parámetro y recupere un objeto.

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/kfc/brands")
public class JSONController {


@RequestMapping(value = "{id}", method = RequestMethod.GET)
public @ResponseBody
Inventario getIdInventario(@PathVariable int id) {
 TipoInventario tipoInventario=new TipoInventario();
tipoInventario.setIdTipo(3);
tipoInventario.setDescripcion("HOGAR");
Inventario inventario=new Inventario();
inventario.setTipoInventario(tipoInventario);
inventario.setDescripcion("ESTANTES PARA EL BAÑO");
inventario.setIdInventario(3);

return inventario;

}

@RequestMapping(method = RequestMethod.GET)
public @ResponseBody
List getListInventario() {
 return getInventarios();

 }


/*Método para llenar la lista de inventarios*/
public List getInventarios(){
  //Primer Objeto
  TipoInventario tipoInventario=new TipoInventario();
  tipoInventario.setIdTipo(1);
  tipoInventario.setDescripcion("LINEA BLANCA");
  Inventario inventario=new Inventario();
  inventario.setTipoInventario(tipoInventario);
  inventario.setDescripcion("ESTUFA");
  inventario.setIdInventario(1);
  //Segundo Objeto
  TipoInventario tipoInventario2=new TipoInventario();
  tipoInventario2.setIdTipo(2);
  tipoInventario2.setDescripcion("ELECTRONICA");
  Inventario inventario2=new Inventario();
  inventario2.setTipoInventario(tipoInventario2);
  inventario2.setDescripcion("COMPUTADORA");
  inventario2.setIdInventario(2);
  List inventarios=new ArrayList();
  inventarios.add(inventario);
  inventarios.add(inventario2);
 return inventarios;
 }
}

Por ultimo levantamos nuestra aplicación y lo probamos:

Para el primer ejemplo solo es cuestión de acceder a la url:



Y para el siguiente ejemplo es necesario agregar un parámetro


Como vemos en  los recuadros rojos lo que nos responde es un objeto JSON por medio de GET, espero que les aya servido y estaré agregando más post de spring, saludos javeros

Post a Comment

Artículo Anterior Artículo Siguiente