Spring Mvc
-
Upload
metanoia023 -
Category
Documents
-
view
19 -
download
0
Transcript of Spring Mvc
-
5/21/2018 Spring Mvc
1/18
Ingeniera del Software II:
Rafael Ruz Muoz
Isidro Ruz Jimnez
Juan de Vicente Mohno
Javier Martn Domnguez
-
5/21/2018 Spring Mvc
2/18
Introduccin a Spring MVC
Dentro del framework de Springnos encontramos con una parte referente al modelo vista
controlador (Picha para saber ms acerca de MVC).
Ahora se va a detallar como est implementado el patron Model-View-Controller sobre Spring
framework:
Como la mayora de los framework que implementan el patrn 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 travs 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 recibir el request , Spring utiliza lo que se
denomina el Handler Mapping , el cual tiene la funcin de determinar cual ser el Controller
que recibir el request.
El Handler Mapping como indicamos tiene el
objetivo de indicar al dispatcher
cual ser el componente que debe recibir el
request enviado por el usuario.
Por lo cual el Dispatcher Servlet , le pregunta a
uno o ms Handler Mapping
cual ser le Controller que recibir 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 basndose en el
nombre del Bean
SimpleUrlHandlerMapping
Mapea controladores a
URL basndose en una
collecion de propiedadesque se definen en el Spring
-
5/21/2018 Spring Mvc
3/18
application context.
ControllerClassNameHandlerMapping
Mapea controladores a
URL utilizando el Controller
Class Name
CommonsPathMapHandlerMapping Mapea controladores a URL
usando metadatos en el
cdigo del controlador. Esta
metadata es definida
usando Jakarta Commons
Atributes.
Luego de que el Handler Mapping le entrega nombre del Controller que se har cargo del
Request , el Distpacher Servlet le enva elrequest 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 deber utilizar. En el
siguiente cuadro se puede ver qu tipos de Controller estn disponibles sobre Spring.
Controller
typeClasses
Usarlo
cuando ...
ViewParameterizableViewController
UrlFilenameViewController
Para cuando
un controladorsolo necesita
desplegar
informacin
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
-
5/21/2018 Spring Mvc
4/18
similar lgica
Command BaseCommandController
AbstractCommandController
Si tus
controladores
reciben
parmetros
estos son
manejados
dentro de un
objeto
Form AbstractFormController
SimpleFormController
Para desplegar
y procesar un
formulario,
bajo el mismocomponente
Wizard AbstractWizardFormController Para realizar
una
interaccin
mas rica con el
usuario a
travs de
varias pantallas
Luego que el Controller recibe el Request , se construye un Objeto que se denomina
ModelAndView ,este componente tiene como funcin la de :
1- Entregar un nombre lgica a la vista que deber realizar el despliegue del Model
2- Entregar un nombre lgico al Model que est asociado a este componente
3- Inyectar el objeto Model el cual tiene los datos que sern desplegados en la Vista.
Luego que el objeto ModelAndView es regresado al dispatcher y este componente delega la
responsabilidad de la mapping del nombre lgico de la vista, con el componente a utilizar al
ViewResolver.El ViewResolver es el encargado de realizar el mapping entre el nombre lgico
de la vista y el componente. En el siguiente cuadro se indican los ViewResolver disponibles a
ser configurados sobre Spring.
-
5/21/2018 Spring Mvc
5/18
View Resolver Como trabaja ....
InternalResourceViewResolver
Resuelve el nombre lgico
utilizando el mapping a
velocity y JSP
BeanNameViewResolver
Resuelve el nombre lgico
utilizando Bean definidos en el
Spring Context
ResourceBundleViewResolver Define el mapping entre los
nombres lgicos y las vistas
asociadas , definindolo en un
archivo de propiedades
XmlViewResolver Define el mapping entre los
nombres lgicos y las vistas
asociadas , definindolo en un
archivo XML
Despus que la vista realiza el procesamiento, el dispatcher enva el request de retorno al
usuario.
-
5/21/2018 Spring Mvc
6/18
EJEMPLO HOLA MUNDO
Parte 1:Configuracin del IDE para Spring MVC
1.1.Crear el proyecto NetBeans con Spring MVCLo primero que tenemos que hacer es crear un nuevo proyecto NetBeans, para ello pinchamos
en Filedel men principal y despus en New Project. Una vez hecho esto nos aparecer
la siguiente ventana:
Dejamos todo como aparece en la imagen y pulsamos Next quenos llevar a la siguiente
ventana:
-
5/21/2018 Spring Mvc
7/18
Aqu daremos un nombre a nuestro proyecto, en el ejemplo springapp y pulsamos Next
para acceder a la siguiente ventana:
De nuevo dejamos todo tal y como aparece, pulsamos Next y llegaremos a la ltima ventana
de creacin del proyecto:
-
5/21/2018 Spring Mvc
8/18
Aqu pinchamos dentro de Frameworks en Spring Web MVC 2.5que ser la versin del
framework de Spring que utilizaremos en este ejemplo. Una vez pulsado nos encontramos
debajo con la configuracin bsica de Spring, en DispatcherName lo dejaremos tal cual y lo
mismo en Dispatcher Mapping. Por ltimo pinchamos en Finish para crear finalizar la
creacin del proyecto.
1.2.Explicacin de archivos
Una vez pulsado el botn Finish anteriormente , NetBeans nos abrir por defecto estos
archivos : di spatcher - ser vl et . xml , appl i cat i onContext . xml , r edi rect . j sp, y
i ndex. j sp.
Nos iremos a index.jsp, que ser la pgina principal, para darle formato. En el ejemplo el
archivo ha quedado as:
Ahora abriremos el archivo web.xmly nos fijamos en la ltima parte:
-
5/21/2018 Spring Mvc
9/18
Como podemos apreciar, la pgina que la aplicacin abrir por defecto es redirect.jspque
contiene lo siguiente:
La ltima lnea nos dice que para cada peticin se redirija a la direccin index.htm. Como est
explicado en la introduccintodas las peticiones que se reciban pasarn por el
DispatcherServlet que es una clase java que nos proporciona Spring en sus libreras:
De ah viene el restante contenido que aparece en web.xml:
Aqu definimos el servlet: dispatcher que se encuentra en la direccin definida en servlet-classque es la que hemos explicado anteriormente. Despus en servlet-mapping decimos que todas
las pginas que terminen en .htm sean tratadas por el servlet dispatcher.
Este servlet no podemos modificarlo al formar parte de la librera de Spring pero si podemos
configurarlo en el archivo di spatcher - ser vl et . xml .
Lo que nos interesa de este xml son los siguientes beans:
-
5/21/2018 Spring Mvc
10/18
Como dijimos aqu, la aplicacin al iniciarse va a redirigir la peticin a index.htm, y como
dijimos despus, dispatcher va a ser el que se ocupe de tratar los *.htm y por tanto en el
primer bean(urlMapping) en la seccinprops se indica que cuando se reciba la direccin
index.htm se vaya al bean indexContoller (el ltimo). Este bean al ser un
ParametrizableViewControllernos va a devolver una vista que llamaremos index. Al
devolvernos una vista ser tratada por el bean viewResolver que al ser un
InternalResourceViewResolverresolver la direccin y con prefix y suffix ms la vista que
hemos llamado index crear la direccin del archivo que queramos acceder que en este caso
era nuestro index.jsp. El resultado mostrado por el navegador ser el siguiente:
-
5/21/2018 Spring Mvc
11/18
Parte 1:Creacin de una mini-aplicacin
La aplicacin que vamos a crear tiene dos jsps o vistas. El primero va a ser un formularion con
un campo de texto para introducir el nombre y el segundo ser una pgina que simplemente
de un mensaje de bienvenida con el nombre introducido en la primera vista.
Las vistas son manejadas por un controladorque recibe peticiones de la aplicacin y decide
que vista devolver as como que parmetros pasarle a la vista. A este controlador lo
llamaremos Hel l oCont r ol l er .
En una aplicacin web la lgica de negocio no tiene porque residir en el controlador sino que
podemos definir servicios que contengan dicha lgica, en este caso crearemos un servicio
llamado Hel l oSer vi ce.
2.1.Creando un servicio
Pincharemos en nuestro proyecto y seleccionaremos New y despus Java Class y
realizaremos los pasos como se indican en las imgenes a continuacin:
-
5/21/2018 Spring Mvc
12/18
Ponemos el nombre a la clase y la incluimos en un paquete llamado en este casos servicios. Se
nos abrir esta clase en el editor y simplemente le aadiremos un mtodo:
2.2.Creando el controlador y el modelo
Para crear el controlador vamos a File despus a New File y seguimos los siguientes
pasos:
-
5/21/2018 Spring Mvc
13/18
Despus dejamos la clase como sigue:
setFormView sirve para asignar la vista que contendr el pequeo formulario.
setSuccessView sirve para asignar la vista que ir despus del submit.
-
5/21/2018 Spring Mvc
14/18
Como vemos tenemos que crear la clase Nombre, incluida en el paquete de controladores,
que simplemente ser como esta:
El error anterior habr desaparecido y dejaremos la clase HelloController como sigue:
-
5/21/2018 Spring Mvc
15/18
helloMessage ser el mensaje que pasaremos a la vista vistaHola.
Ahora debemos registrar HelloService en applicationContext.xml:
Y despus tenemos que registrar HelloController en dispatcher-servlet.xml:
2.3.Creando las vistas
Ahora crearemos las dos vistas que como hemos dicho antes llamaremos vistaHola.jsp y
vistaNombre.jsp.
Para ello pinchamos en el proyecto y seleccionamos New y despus JSP
Damos el nombre al jsp y los dejamos como siguen a continuacin:
-
5/21/2018 Spring Mvc
16/18
vistaHola.jsp
vistaNombre.jsp
-
5/21/2018 Spring Mvc
17/18
Ahora por ltimo debemos cambiar la redireccin que tenamos al principio que nos llevaba a
la vista index.jsp. Para ello pinchamos en el proyecto y nos vamos a Properties, despus
pinchamos en Run y en Relative url ponemos /hola.htm:
Por ltimo ejecutamos la aplicacin:
-
5/21/2018 Spring Mvc
18/18