Spring Mvc

18
5/21/2018 SpringMvc-slidepdf.com http://slidepdf.com/reader/full/spring-mvc-561bdfac055d9 1/18  Ingeniería del Software II: Rafael Ruíz Muñoz Isidro Ruíz Jiménez Juan de Vicente Mohíno Javier Martín Domínguez

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