Mecanismos de Respuesta de Datos en SpringMVC

  1. Redirección de vistas
  2. Devolución de datos

Redirección mediante Cadenas

Al retornar un literal String, Spring MVC concatena los prefijos/sufijos del resolvedor de vistas para la navegación. Nota: Los recursos redirigidos deben estar en ubicaciones accesibles.

ModelAndView - Enfoque Básico

@Controller
@RequestMapping("/cliente")
public class ControladorCliente {

    @GetMapping("/ejemplo1")
    public ModelAndView procesarSolicitud() {
        ModelAndView vistaModelo = new ModelAndView();
        vistaModelo.addObject("nombreUsuario", "maria");
        vistaModelo.setViewName("exito");
        return vistaModelo;
    }
}

ModelAndView con Inyección de Parámetros

@GetMapping("/ejemplo2")
public ModelAndView procesar(ModelAndView vistaModelo) {
    vistaModelo.addObject("nombreUsuario", "carlos");
    vistaModelo.setViewName("exito");
    return vistaModelo;
}

@GetMapping("/ejemplo3")
public String procesarAlternativo(Model modelo) {
    modelo.addAttribute("nombreUsuario", "juan");
    return "exito";
}

Acceso Directo a HttpServletRequest

@GetMapping("/ejemplo4")
public String procesarDirecto(HttpServletRequest solicitud) {
    solicitud.setAttribute("nombreUsuario", "lucia");
    return "exito";
}

Devolución de Texto Plano

@GetMapping("/respuesta1")
public void enviarRespuesta(HttpServletResponse respuesta) throws IOException {
    respuesta.getWriter().print("Hola mundo");
}

@GetMapping("/respuesta2")
@ResponseBody
public String enviarTexto() {
    return "Respuesta directa";
}

Generación de JSON

@GetMapping("/json1")
@ResponseBody
public String generarJson() {
    return "{\"nombre\":\"ana\",\"edad\":25}";
}

// Dependencias Jackson requeridas
@GetMapping("/json2")
@ResponseBody
public String serializarObjeto() throws Exception {
    Usuario persona = new Usuario();
    persona.setNombre("diego");
    persona.setEdad(30);
    return new ObjectMapper().writeValueAsString(persona);
}

Serialización Automática de Objetos

@GetMapping("/objeto")
@ResponseBody
public Usuario obtenerEntidad() {
    Usuario persona = new Usuario();
    persona.setNombre("elena");
    persona.setEdad(28);
    return persona;
}

Configuración XML necesaria:

<mvc:annotation-driven />

Síntesis Conceptual

  • Redirección: Strings literales o ModelAndView
  • Datos: Strings directos (@ResponseBody) u objetos serializados

Etiquetas: SpringMVC json ModelAndView ResponseBody jackson

Publicado el 7-6 17:32