spring mvc final

Download Spring Mvc Final

If you can't read please download the document

Upload: j-juan-r-zuniga

Post on 12-Jun-2015

9.977 views

Category:

Technology


11 download

DESCRIPTION

Brief presntation about SpringMVC

TRANSCRIPT

  • 1. 3ra. Reunin de SpringHispano How to run Spring MVC por neodevelop

2. Acerca de mi... La referencia total: SpringHispano.org y grails.org.mx 3. Agenda

  • Vista general de SpringFramework
  • El patrn de diseo MVC
  • Spring MVC
    • Componentes
    • Funcionamiento
    • Configurar una Aplicacin con Spring MVC
  • Ms componentes de Spring MVC
  • Ms de Spring MVC...

4. SpringFramework

    • Spring es una tecnologa dedicada para permitir construir aplicaciones usando POJOs, Rod Johnson The Server Side

5. SpringFramework Spring es un poderoso framework de aplicaciones que resuelve muchos problemas comunes en el desarrollo de aplicaciones Java (SDK y EE). 6. Vista general de SpringFramework 7. El patrn de diseo MVC

  • MVC =Model View Controller
  • Provee de un mecanismo para construir una delgada y limpia capa web
  • Claramente separa el negocio, la navegacin y la lgica de presentacin

8. El patrn de diseo MVC

  • Los tres componentes que colaboran son:
    • Controller(Controlador)
      • Maneja la lgica de navegacin e interactua con la capa de servicio para la lgica de negocio
    • Model(Modelo)
      • El contrato entre el controller y la vista
      • Contiene los datos necesarios para mostrarlos en la vista
      • Es manejado y poblado por el controller
    • View(Vista)
      • Muestra la respuesta a la solicitud previamente hecha
      • Obtiene los datos del modelo previamente manejado por el controller

9. El patrn de diseo MVC 10. Motivaciones

  • Facilita la carga de mantenimiento
    • Los cambios a la lgica de negocio son menos probables de romper la lgica de la presentacin
    • Viceversa

11. Motivaciones

  • Facilita el desarrollo en un equipo multidisciplinario
    • Los desarrolladores pueden concentrarse en en crear cdigo de negocio robusto sin tener que preocuparse por afectar la Interfaz de Usuario
    • Los diseadores pueden concentrarse en construir usables y atractivas Interfaces de Usuario sin preocuparse por Java

12. Motivaciones

  • Usa la mejor herramienta para tu trabajo
    • Java es apropiado para crear lgica de negocio
    • Los lenguajes de plantillas y etiquetado son ms apropiados para crear layouts HTML.

13. Motivaciones

  • Facilita las pruebas
    • La lgica de navegacin y de negocio estn separadas de la lgica de presentacin lo que sugiere que pueden ser probadas independiemtemente.
    • Practicamente: podemos probar ms cdigo fuera del contendor de servlets

14. Spring MVC

  • Spring provee de una solucin simple y eficaz para usar el patrn MVC
  • Y ahora con la versin 2.5 ofrece tambin el uso de anotaciones
  • Hay quienes dicen que es un framework de la ola anterior...
  • ser cierto?, ya veremos ahora que SS esta dentro del JCP

15. MVC en Spring

  • Un solo servlet que maneja solicitudes a controllers individuales, con ayuda de un controller principal.
  • El ruteo de solicitudes es completamente controlado por el Controller Frontal o principal.
    • Controllers individuales pueden ser usados ara manejar varias y diferentes URL's
  • Los controllers son POJO's
  • Y los controllers son manejados como cualquier otro bean de Spring en el AppCtx

16. Componentes de Spring MVC

  • DispatcherServlet
    • La implementacin del controller frontal de Spring
  • Controller
    • Componente que maneja los request del usuario
    • Encapsula la lgica de navegacin
    • Delega a los objetos de los serviciosla lgica de negocio
  • View
    • Responsable para mostrar la salida, sea cual sea...

17. Componentes de Spring MVC

  • ModelAndView
    • Creado por el controller
    • Almacena los datos del Modelo
    • Asocia una vista al Request
      • Puede ser la implementacin de una vista fsica o el nombre de una vista lgica
  • ViewResolver
    • Usado para mapear nombres de vistas lgicas a implementaciones de vista actuales

18. Componentes de Spring MVC

  • HandlerMapping
    • Interface usada por el DispatcherServlet para mapear los request entrantes hacia los controllers individuales

19. Funcionamiento de Spring MVC 20. MVC y D.I.

  • Todos los componentes MVC son configurados en el AppCtx de Spring
  • Y como tal, todos los componentes de Spring se benefician y pueden ser configurados usando D.I.

21. Configurar una App con Spring MVC 22. Spring MVC - DispatcherServlet

  • Como muchos frameworks MVC, tambien SpringMVC es Request Driven(Manejado por Solicitudes)
  • DispatcherServlet.- Es el servlet central que atiende todas esta solicitudes y las gestiona
  • Ofrece mucha ms funcionalidad para facilitar el desarrollo
  • Esta completamente integrado con el contenedor de Spring, con todo lo que esto implica

23. Spring MVC - DispatcherServlet springhispanoServlet org . springframework .web. servlet .DispatcherServlet 1springhispanoServlet*. html 24. WebApplicationContext

  • Cada DispatcherServlet tiene su propio ApplicationContext, a este se le denomina WebApplicationContext
  • El WebAppCtx va a contener la configuracin de los elementos para que SpringMVC funcione
  • El WebAppCtx va a poder usar los beans(DAOs, Servicios, etc.) que se declararon en el contexto de la aplicacin

25. Elementos del WebAppCtx

  • Controllers
  • Handler Mappings
  • View Resolvers
  • Locale Resolvers
  • Theme Resolver
  • Interceptors
  • Handler Exception Resolver

26. Controller y AbstractController

  • El tipo de Controller ms simple
  • Solo requiere implementar el mtodo handlerRequestInternal()
  • Le enva un ModelAndView al WebAppCtx para que determine el view y alimente con el modelo su contenido

27. SimpleUrlHandlerMapping

  • Es un tipo de HandlerMapping
  • Vncula directamente la URL con el controller que se ejecutar
  • Se pueden usar Ant Paths para vincular varias URLs a un Controller

28. InternalResourceViewResolver

  • Es un tipo de ViewResolver
  • Se le debe indicar a travs de un prefijo la ubicacin de los archivos de views o JSP
    • Permite poner detrs de WEB-INF las JSPs
  • Se le indica con un sufijo de que tipo son las vistas que va a utilizar para mostrar

29. Ahora si... Hola Mundo con SpringMVC 30. Ms controllers

  • Controller
    • AbstractController
      • MultiActionController
      • BaseCommandController
        • AbstractCommandController
        • AbstractFormController
          • SimpleFormController
          • AbstractWizardFormController
    • ThrowawayController
    • ParameterizableViewController

31. Ms Handler Mappings

  • BeanNameUrlHandlerMapping
  • SimpleUrlHandlerMapping
  • CommonsPathHandlerMapping
  • ControllerClassNameHandlerMapping
  • DefaultAnnotationHandlerMapping

32. Ms View Resolvers..

  • AbstractCachingViewResolver
  • XmlViewResolver
  • XsltViewResolver
  • ResourceBundleViewResolver
  • UrlBasedViewResolver
  • BeanNameViewResolver
  • InternalResourceViewResolver
  • VelocityViewResolver/FreeMarkerViewResolver

33. Otros conceptos...

  • Command: Clase que ser modificada mediante un formulario, generalmente un Java Bean, es parte del Modelo
  • Bind: Es la accin de asignar los parmetros de un request a un Java Bean y vicecersa

34. Qu ms provee Spring MVC?

  • Spring's form tag library
  • Spring provee para las views de una librera que ayuda a facilitar el binding de objetos de un formulario
  • Cada tag provee un conjunto de atributos correspondientes al tipo de elemento para no dejar de lado la funcionalidad
  • Solo hay que agregar la taglib al encabezado de la View:

35. Otro controller util: MultiActionController

  • Un controller que maneja diferentes tareas
    • Multiples metodos para manejar
      • Cada mtodo maneja un request diferente
    • MethodNameResolver determina el mtodo
      • Basado en un parametro o en otro criterio
    • Los mtodos regresan un ModelAndView
  • Muy bueno para agrupar tareas relacionadas en una sola clase

36. Creando un MultiActionController public classReportControllerextendsMultiActionController { publicModelAndView handleSimpleReport(HttpServletRequest request, HttpServletResponse response)throwsException { return newModelAndView("simpleReport", getModel()); } publicModelAndView handleSimpleReportPost(HttpServletRequest request, HttpServletResponse response)throwsException { String reportTitle = request.getParameter("reportTitle"); Mapmodel = getModel(); model.put("ReportTitle", reportTitle) ; return newModelAndView("simpleReportCompile", model); } ... 37. Configurando un MultiActionController handleSimpleReporthandleSimpleReportPost 38. Integracin con vista

  • Spring MVC provee de la integracin con otras tecnologas de vista como:
    • JSP & JSTL
    • Tiles
    • Velocity & Freemarker
    • XSLT
    • PDF
    • JasperReports

39. Let's code... Veamos un ejemplo... 40. Qu ms puedo hacer?

  • Manejar Beans en formularios con SimpleFormController
  • Agregar lgica de binding en los datos tratados desde la vista
  • Agregar lgica de desplegado de errores en la vista
  • Definir un objeto Command para la forma
  • Agregar lgica en el Submit de la forma
  • Adems
    • Agregar lgica de validacin

41. Cmo funciona SimpleFormController?

  • Su funcionamiento depende del mtodo del request(modificable):
    • GET => Implica mostrar el formulario por lo que se carga el modelo para desplegar la view indicada en un parametro denominado formView
    • POST => Sucede cuando hay un envo de formulario implicado, por lo que se procede a ejecutar las acciones necesarias con el Command, y mostrar la View indicada en successView

42. Request GET Desplegar la forma

  • formBackingObject()
    • Prepara y entrega el objeto Command
    • Permite el pre-llenado de la forma
  • referenceData()
    • Carga los datos de referencia necesarios para desplegar la forma
  • showForm()
    • Completa el ModelAndView y lo regresa
    • Poner el objeto Command en sesin si es necesario
    • Muestra la forma a trabajar

43. Request GET Envo de la forma

  • onBind()
    • Llamado despus del bind pero antes de la validacin
    • Permite manualmente hacer el bind de los parametros del request del objeto Command antes de la validacin
  • formBackingObject()
    • Entrega el objeto Command
      • Quiz de la sesi, o quiz de base de datos
  • Si la validacin falla entonces se agregan los errores al ModelAndView y son mostrados en la forma

44. Request GET Envo de la forma

  • Si la validacin es satisfactoria, es decir, no hay errores, entonces se llama onSubmit()

45. Muchos mtodos no?

  • Veremos una forma ms efectiva de hacer esto... :D
  • Afortunadamente tenemos a Spring 2.5 con las nuevas caractersticas...
  • Pero ms adelante...

46. Arquitectura de Validacin

  • No est atada a HttpServletRequest
  • No esta atada a la capa Web
    • Validacin de objetos de dominio
    • Entrada de los clientes remotos tambin necesita validacin
    • Puede ser probada desde fuera del contenedor
  • Implemenetacin independente
  • Conversin de errores son no-fatal

47. Creando un validador public class ClienteValidator implements Validator{ public booleansupports( Classclazz) { return Cliente . class .equals(clazz); } public voidvalidate(Object obj,Errorserrors) { //Castingdel objeto Clientecliente = ( Cliente )obj; //Validaciones ValidationUtils .rejectIfEmpty(errors, "nombre", "nombre.empty","El nombre no puede ir vaco..."); ValidationUtils .rejectIfEmpty(errors, "direccion", "direccion.empty","La direccion no puede irvaco..."); ValidationUtils .rejectIfEmpty(errors, "RFC", "RFC.empty","El RFC no puede ir vaco..."); if (cliente.getNombre().length()