viernes, 3 de junio de 2016

Spring Framework y el ciclo de vida MVC

Spring Framerowk se adhiere el paradigma de programación Modelo-Vista-Controlador (MVC) para el desarrollo de sus proyectos.
Cuando se crea una aplicacion Java SE web todo se hace en torno a un Servlet central, que es el encargado de seleccionar que controlador se encarga de cada respuesta, y dentro de cada uno de estos controladores se realizan las tareas necesarias para servirla.

Spring Framework nos provee para desempeñar la tarea de Servlet central de DispatcherServlet, lo que hace especial a este Servlet, es que aparte de desempeñar las tareas de comunes de despachador, tiene una completa integración con Spring IoC.


Tal y como podemos ver en la imagen anterior, DispatcherServlet realiza las tareas de Controlador Frontal, delega en el Controlador de cada llamada las operaciones internas requeridas para realizar la respuesta y una vez que este le devuelve la información necesaria para emitir dicha respuesta DispatcherServlet delega en un ViewResolver el renderizado de la respuesta.
Típicamente esta acción se realizada con la clase ModelAndView, en dicha clase el Controlador cargaba los datos y el nombre de la vista para que esta fuera renderizada.

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map myModel= new HashMap();
miModelo.put("integer_value", 500);
miModelo.put("string_value", "cadena aleatoria");
ModelAndView miMAV = new ModelAndView();
miMAV.setViewName("my_currently_view");
miMAV.addObject(myModel);
return miMAV;
}
Con la aparición de los Controladores por anotaciones (@Controller), esta operación ha variado significativamente, utilizandose la clase Model a través del Controlador para registrar los datos que serán utilizados por la vista, la cual es devuelta en el retorno del método del controlador.