UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS … · Integración Spring-MVC – Hibernate 10. Agregue...

18
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE COMPUTACIÓN Y MÓVILES Ciclo II Programación Orientada a Objetos II Guía de Laboratorio No. 09 Introducción a Spring MVC I. OBJETIVOS. Que los estudiantes comprendan el flujo de operaciones de una aplicaciones web creada con Spring MVC. II. INTRODUCCION TEORICA Spring es el framework de desarrollo de aplicaciones Java más popular. Millones de desarrolladores en todo el mundo lo utilizan para crear aplicaciones de alto rendimiento, fácil de probar y con código reutilizable. Spring MVC § Spring MVC está diseñado en torno a un DispatcherServlet el cual es un servlet que recibe todas las peticiones HTTP y las envía al controlador apropiado. § DispatcherServlet debe ser mapeado en el descriptor de despliegue.

Transcript of UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS … · Integración Spring-MVC – Hibernate 10. Agregue...

  • UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS

    COORDINACIÓN DE COMPUTACIÓN Y MÓVILES

    Ciclo II Programación Orientada a Objetos II

    Guía de Laboratorio No. 09 Introducción a Spring MVC

    I. OBJETIVOS.

    Que los estudiantes comprendan el flujo de operaciones de una aplicaciones web creada con Spring MVC.

    II. INTRODUCCION TEORICA

    Spring es el framework de desarrollo de aplicaciones Java más popular. Millones de desarrolladores

    en todo el mundo lo utilizan para crear aplicaciones de alto rendimiento, fácil de probar y con código

    reutilizable.

    Spring MVC

    § Spring MVC está diseñado en torno a un DispatcherServlet el cual es un servlet que recibe

    todas las peticiones HTTP y las envía al controlador apropiado.

    § DispatcherServlet debe ser mapeado en el descriptor de despliegue.

  • III. PROCEDIMIENTO

    1. Importar la base de datos con nombre “inventario_libros” proporcionada como recurso. Esta base de datos contiene las tablas y relaciones mostradas en el siguiente diagrama relacional:

    2. Abrir netbeans para crear un nuevo proyecto web (Web Application) con nombre “Practica_SpringMVC”. Asegúrese de seleccionar Apache Tomcat como servidor web y la versión 6 del JEE. En la pantalla de selección de Frameworks, escoger “Spring Web MVC”.

    Seleccionar esta opción para que nos agregue los jar de JSTL

  • 3. Ejecute la aplicación para asegurarse que las librerías de Spring MVC funcionan correctamente. El ejecutar el proyecto debería obtenerse el siguiente resultado:

    4. Abra el descriptor de despliegue de su proyecto (archivo web.xml) y revise la estructura del

    mismo:

    contextConfigLocation /WEB-INF/applicationContext.xml org.springframework.web.context.ContextLoaderListener dispatcher org.springframework.web.servlet.DispatcherServlet 2 dispatcher *.htm 30 redirect.jsp

    Registro del Dispatcher

    Servlet

    Indica que todas las peticiones que finalicen con .htm deberán ser atendidas por el Dispatcher Servlet. CAMBIAR ESTA ENTRADA POR

    /

    PARA QUE TODAS LAS PETICIONES SEAN ATENDIDAS POR EL DISPATCHER SERVLET SIN NECESIDAD DE AGREGAR NINGUNA “EXTENSIÓN”

  • 5. Identifique y abra el archivo “dispatcher-servlet.xml”. En este archivo se realiza la configuración del FrontController de SpringMVC. Tal y como se genera el archivo, este está preparado para que se registren uno a uno los controladores usados en la aplicación. Una opción mucho más cómoda y elegante es usar anotaciones para el mapeo de los controladores, esto nos evitaría la tediosa tarea de estar agregando codigo xml al dispatcher-servlet cada vez que creemos un controlador. Para que la aplicación esté lista para usar las anotaciones de Spring, deberá sustituir el contenido de su archivo dispatcher-servlet.xml por el siguiente código:

    Ubicación de los controladores

  • 6. Crear los siguientes paquetes dentro de su proyecto: • sv.edu.udb.www.entities • sv.edu.udb.www.controller • sv.edu.udb.www.model

    7. Dentro del paquete sv.edu.udb.www.controller agregar una clase llamada

    “PruebaController” la cual deberá tener el siguiente contenido:

    8. Dentro de la carpeta “WEB-INF/jsp” agregue una nueva jsp con nombre “hola.jsp” y ubique en ella el siguiente contenido:

    Primer ejemplo Spring MVC Hola ${nombre}.

    9. Ejecute su aplicación en la ruta http://localhost:8081/Practica_SpringMVC/saludo. Debería obtener el siguiente resultado:

  • Integración Spring-MVC – Hibernate

    10. Agregue a su proyecto las librerías de Hibernate. 11. Haga doble click sobre su proyecto y seleccione la opción

    “New>Other>Hibernate>Hibernate Configuration Wizard”

    12. Realice el procedimiento correspondiente para configurar el archivo hibernate.cfg.xml de tal manera que trabaje con la base de datos “inventario_libros”. Su archivo hibernate.cfg.xml debería lucir de la siguiente manera:

    org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost/ inventario_libros root

  • 13. Haga doble click sobre el paquete sv.edu.udb.www.entities y seleccione la opción “New>Other>Hibernate>Hibernate Reverse Engineering Wizard”. Seleccione todas las tablas de la base de datos.

    14. Haga doble click sobre el paquete sv.edu.udb.www.entities y seleccione la opción “New>Other>Hibernate>Hibernate Mapping Files and POJOS from Database”.

    Al finalizar este paso, se deberían haber creado las clases de entidad correspondientes a las 4 tablas de la BD. Note que el mapeo entre las tablas de la bd y las clases de entidad se realiza con anotaciones dentro de la entidad.

    Hasta el momento, su paquete sv.edu.udb.www.entities debería lucir de la siguiente manera:

    Habilitar estas opciones para que el mapeo entra las tablas y las entidades se realice mediante anotaciones.

    Deshabilitar esta opción para que NO genere los xml de mapeo entre las tablas y las entidades.

  • 15. Dentro del paquete sv.edu.udb.www.model genere la clase “HibernateUtil” mediante la opción “New>Other>Hibernate>HibernateUtil”.

    16. Dentro del paquete sv.edu.udb.www.model cree una clase llamada “EditorialesModel” con el siguiente contenido:

    package sv.edu.udb.www.model; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import sv.edu.udb.www.entities.Editoriales; public class EditorialesModel { SessionFactory factory = HibernateUtil.getSessionFactory(); public int insertarEditorial(Editoriales editorial) { Session ses = factory.openSession(); try { Transaction tran = ses.beginTransaction(); ses.save(editorial); tran.commit(); ses.close(); return 1; } catch (Exception e) { ses.close(); return 0; } } public List listarEditoriales(){ Session ses= factory.openSession(); try{ Query consulta= ses.createQuery("SELECT e FROM Editoriales e"); List lista= consulta.list(); ses.close(); return lista; } catch(Exception e){ ses.close(); return null; } } public Editoriales obtenerEditorial(String codigo) { Session ses= factory.openSession(); try{ Editoriales editorial= (Editoriales) ses.get(Editoriales.class, codigo); ses.close(); return editorial;

  • } catch(Exception e){ ses.close(); return null; } } public int modificarEditorial(Editoriales editorial) { Session ses = factory.openSession(); try { Transaction tran = ses.beginTransaction(); ses.update(editorial); tran.commit(); ses.close(); return 1; } catch (Exception e) { ses.close(); return 0; } } public int eliminarEditorial(String id){ int filasAfectadas=0; Session ses= factory.openSession(); try{ Editoriales editorial= (Editoriales) ses.get(Editoriales.class, id); if(editorial!=null){ Transaction tran= ses.beginTransaction(); ses.delete(editorial); tran.commit(); filasAfectadas=1; } ses.close(); return filasAfectadas; } catch(Exception e){ ses.close(); return filasAfectadas; } } }

  • 17. Ubique la carpeta “resources” (provista como recurso de la guía) dentro del directorio web pages de su proyecto. Esta carpeta contiene archivos css y js que se emplearán en el desarrollo de las vistas.

    18. Elimine el archivo index.jsp que se encuentra dentro del directorio “WEB-INF/jsp” de su proyecto.

    19. Ubique los archivos cabecera.jsp, index.jsp, menu.jsp, pie.jsp (provistos como recursos de la guía) dentro del directorio “WEB-INF/jsp” de su proyecto.

    20. Dentro del directorio “WEB-INF/jsp”, crear una carpeta llamada “editoriales”.

    Listar editoriales

    21. Dentro de la carpeta creada en el paso anterior, crear una nueva jsp llamada “listar” y colocar en ella el siguiente contenido:

    Lista de editoriales Lista de editoriales Nuevo editorial

    Codigo del editorial Nombre del editorial Contacto Telefono Operaciones ${editorial.codigoEditorial} ${editorial.nombreEditorial} ${editorial.contacto} ${editorial.telefono}

  • $(document).ready(function(){ $('#tabla').dataTable( { "language": { "url": "cdn.datatables.net/plug-ins/1.10.15/i18n/Spanish.json" } }); });

    22. La página creada en el paso anterior necesita de un controlador que le nutra de datos. Cree una clase llamada “EditorialesController” dentro del paquete sv.edu.udb.www.controller de su proyecto. De momento, esta clase únicamente tendrá un método para listar usuarios.

  • 23. Proceda a probar la opción listar en su navegador mediante la url http://localhost:8081/Practica_SpringMVC/editoriales/list

    Insertar editorial

    24. Procederemos a realizar la opción “insertar editorial”, para ello comenzaremos agregando una página jsp con nombre nuevo.jsp dentro de la carpeta editoriales.

    Nuevo editorial Nuevo editorial Campos requeridos Codigo del editorial:

  • Nombre del editorial: Contacto: Telefono: Guardar Cancelar

    25. A continuación procederemos a agregar los siguientes métodos dentro del controlador de Editoriales.

  • 26. Pruebe la opción “insertar editorial” dando click en el botón “nuevo editorial” que se encuentra en la parte superior la tabla en la que se muestra la lista de editoriales.

  • Modificar editorial

    27. Procederemos a realizar la opción “modificar editorial”, para ello comenzaremos agregando una página jsp con nombre editar.jsp dentro de la carpeta editoriales.

    Editar editorial Editar editorial Campos requeridos Codigo del editorial: Nombre del editorial: Contacto: Telefono:

  • Guardar Cancelar

    28. A continuación procederemos a agregar los siguientes métodos dentro del controlador de editoriales.

  • 29. Procederemos a hacer una pequeña modificación en la vista listar.jsp. Se colocará un vínculo en cada fila de la tabla el cual nos enviará hacia el controlador de editoriales para que este nos dirija al formulario de edición. El foreach que recorre la lista de editoriales debería lucir de la siguiente manera:

    30. Proceda a probar la opción “modificar editoriales”, hasta este punto, esta opción debe estar completamente funcional.

    Eliminar editorial

    31. Agregue el siguiente método en su controlador de editoriales.

  • 32. A continuación haremos una modificación en la vista listar.jsp. Agregaremos un botón que invoque al método eliminarEditorial del modelo, pasando antes por una función javascript para confirmar la eliminación. El foreach que recorre la lista de editoriales debería lucir de la siguiente manera:

    33. Ahora, debemos agregar la siguiente función javascript en la parte inferior de la página.

    34. Prueba la opción “Eliminar editorial”. Hasta este punto debería estar completamente funcional.

    IV. EJERCICIOS COMPLEMENTARIOS

    o Actualice el menú de navegación de forma que los ítems de menú correspondientes a “editoriales” funcionen correctamente.

    o Crear el mantenimiento de Autores para su aplicación.