- Redirección de vistas
- 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