Mvc en Spring
Transcript of Mvc en Spring
-
8/3/2019 Mvc en Spring
1/4
MVC en Spring
Posted by afuentes under Java
[13] Comments
En el siguiente apartado voy a detallar como esta implementado el patron Model-View-
Controller sobre Spring framework.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
cual sera el componente que debe recibir el
request enviado por el usuario.
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
BeanNameUrlHandlerMappingMapea 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.
http://www.jroller.com/page/afuentes/?anchor=mvc_en_springhttp://www.jroller.com/comments/afuentes?anchor=mvc_en_springhttp://www.jroller.com/page/afuentes/?anchor=mvc_en_springhttp://www.jroller.com/comments/afuentes?anchor=mvc_en_spring -
8/3/2019 Mvc en Spring
2/4
ControllerClassNameHandlerMa
pping
Mapea controladores a URL
utilizando el Controller Class
Name
CommonsPathMapHandlerMappi
ng
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
ParameterizableViewContr
oller
UrlFilenameViewController
Para cuando un
controlador solo
necesita
desplegar
informacion
SimpleController (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
AbstractCommandControlle
r
Si tus
controladores
reciben
parametros estos
son manejados
dentro de un
objeto
Form AbstractFormControllerSimpleFormController
Para desplegar yprocesar un
-
8/3/2019 Mvc en Spring
3/4
formulario, bajo el
mismo
componente
Wizard AbstractWizardFormControl
ler
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 Model2- 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 vistasasociadas , 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 alusuario. Para todos aquellos que solo conocian Struts , los invito a interiorizarse un poco mas
-
8/3/2019 Mvc en Spring
4/4