Como la mayoria de los framework que implementan el patron MVC, Spring tiene implementado un servlet que realiza las tareas de Front Controller, esto significa que cada uno de los request que son realizados por el usuario, pasan a traves de este servlet. El nombre que recibe este servlet es Dispatcher Servlet. Y como indicamos anteriormente, todos los request que son realizados por los distintos usuarios pasan por este componente. Como la imagen lo indica el Request llegan al Dispatcher el cual tiene la responsabilidad de delegar a otro componente el procesamiento del request.Para obtener el nombre del componente que recibira el request , Spring utiliza lo que se denomina el Handler Mapping , el cual tiene la funcion de determinar cual sera el Controller que recibira el request. El Handler Mapping como indicamos tiene el objetivo de indicar al dispatcher
Por lo cual el Dispatcher Servlet , le pregunta a uno o mas Handler Mapping cual sera le Controller que recivira el Request.
Dentro del Spring existe varios Handler Mapping los cuales tiene distintas capacidades de poder mapear a los controladores.
En el siguiente cuadro se indican los Handler Mapping que posee Spring.
| Handler Mapping | Como mapea el Request |
| BeanNameUrlHandlerMapping | Mapea controladores a URL basandose en el nombre del Bean |
| SimpleUrlHandlerMapping | Mapea controladores a URL basandose en una collecion de propiedades que se definen en el Spring application context. |
| ControllerClassNameHandlerMapping | Mapea controladores a URL utilizando el Controller Class Name |
| CommonsPathMapHandlerMapping | Mapea controladores a URL usando metadatas en el codigo del controlador. Esta metadata es definida usando Jakarta Commons Atributes. |
Luego de que el Handler Mapping le entrega nombre del Controller que se hara cargo del Request , el Distpacher Servlet le envia el
request al Controller.Para poder implementar un Controller sobre Spring es necesario que se cree una clase que herede de los Controller que han sido implementados por Spring, los cuales dependiendo de la funcionalidad a realizar es el Controller que se debera utilizar. En el siguiente cuadro se puede ver que tipos de Controller estan disponibles sobre Spring.
| Controller type | Classes | Usarlo cuando ... |
| View | ParameterizableViewController UrlFilenameViewController | Para cuando un controlador solo necesita desplegar informacion |
| Simple | Controller (interface) AbstractController | Para controladores simples que solo se utilizan como Simples Servlet |
| Throwaway | ThrowawayController | Para manejar los request como un Commando |
| Multiaction | MultiActionController | Para implementar una serie de acciones con similar logica |
| Command | BaseCommandController AbstractCommandController | Si tus controladores reciben parametros estos son manejados dentro de un objeto |
| Form | AbstractFormController SimpleFormController | Para desplegar y procesar un formulario, bajo el mismo componente |
| Wizard | AbstractWizardFormController | Para realizar una interaccion mas rica con el usuario a traves de varias pantallas |
Luego que el Controller recibe el Request , se construye un Objeto que se denomina ModelAndView ,este componente tiene como funcion la de :
1- Entregar un nombre logica a la vista que debera realizar el despliegue del Model
2- Entregar un nombre logico al Model que esta asociado a este componente
3- Inyectar el objeto Model el cual tiene los datos que seran desplegados en la Vista.
Luego que el objeto ModelAndView es regresado al dispatcher y este componente delega la responsabilidad de la mapping del nombre logico de la vista, con el componente a utilizar al ViewResolver.El ViewResolver es el encargado de realizar el mapping entre el nombre logico de la vista y el componente. En el siguiente cuadro se indican los ViewResolver disponibles a ser configurados sobre Spring.
| View Resolver | Como trabaja .... |
| InternalResourceViewResolver | Resuelve el nombre logico utilizando el mapping a velocity y JSP |
| BeanNameViewResolver | Resuleve el nombre logico utilizando Bean definidos en el Spring Context |
| ResourceBundleViewResolver | Define el mapping entre los nombres logicos y las vistas asociadas , definiendolo en un archivo de propiedades |
| XmlViewResolver | Define el mapping entre los nombres logicos y las vistas asociadas , definiendolo en un archivo XML |
Luego que las vista realiza el procesamiento , el dispatcher envia el request de retorno al usuario. Es importante señalar que el MVC es solo un modulo dentro del framework de Spring.

No hay comentarios:
Publicar un comentario