MVC Web usando Spring

Este proyecto contiene un formulario que permite realizar altas, bajas y cambios, este fue desarrollado en el lenguaje de programación Java Web, donde se implementó el framework Spring MVC, el cual facilita y optimiza el proceso para la creación de aplicaciones web utilizando el patrón MVC (Modelo-Vista-Controlador).

Como primera instancia creamos una base de datos llamada “regristro_clientes”, la cual contiene una tabla con 4 campos que se muestra a continuación:

Después realizamos un Proyecto Web en la plataforma Netbeans, donde creamos un proyecto Java Web (Figure 3) y elegimos el servidor por defecto (Figure 4).

Aquí es donde entramos a la elección del framework que usamos, que en este caso fue “Spring Web MVC”. Mostrándonos las siguientes carpetas.

Spring tiene una carpeta llamada WEB-IF en la cual aparecen los siguientes archivos que describiremos a continuación.

Los archivos jsp nos permiten crear contenido web, para lo cual nosotros creamos 4 de ellos para establecer nuestros módulos y página de inicio.

En el archivo “dispatcher-servlet” agregamos los jsp que tenemos para que se guarden dentro del framework.

A lo largo de este proyecto veremos cada uno de ellos.

Cuadro de texto: Los archivos jsp nos permiten crear contenido web, para lo cual nosotros creamos 4 de ellos para establecer nuestros módulos y página de inicio.
En el archivo “dispatcher-servlet” agregamos los jsp que tenemos para que se guarden dentro del framework.
A lo largo de este proyecto veremos cada uno de ellos.

Para el desarrollo del proyecto, usamos el Modelo Vista Controlador, ya que es una manera efectiva de organizar lo que desarrollaremos con nuestro framework.

Como se puede observar se agregaron 3 paquetes, uno Actuando como Controlador, otro para la ejecución del proyecto, pero lo más importante es que otro actúa como modelo y vista a su vez, ya que los jsp nos proporcionaran la interfaz gráfica y a su vez se toman como referencia para la abstracción de los datos que entraran en el formulario.

Conexión a la base de datos

Para la creación de la base de datos nos apoyamos en clases y librerías que contiene nuestro framework, lo que facilito la conexión rápida y efectiva hacia nuestro servidor local. A continuación, se describirá cada una de ellas.

DriverManagerDataSource

Sirve como un reemplazo simple para un grupo de conexiones completo, implementando la misma interfaz estándar, pero creando nuevas conexiones en cada llamada.

DriverManagerDataSource()

Constructor para la configuración de estilo bean.

DriverManagerDataSource(String url)

Crea un nuevo DriverManagerDataSource con la URL JDBC dada, sin especificar un nombre de usuario o contraseña para el acceso JDBC.

DriverManagerDataSource(String url, Properties conProps)

Crea un nuevo DriverManagerDataSource con la URL JDBC dada, sin especificar un nombre de usuario o contraseña para el acceso JDBC.

DriverManagerDataSource(String url, String username, String password)

Crea un nuevo DriverManagerDataSource con los parámetros estándar de DriverManager dados.

Modelo, Vista, Controlador

En esta parte de código creamos el método listar, donde aparecerán todos los datos de nuestra base datos, la cual será mostrada en nuestro jsp “índex”. A continuación, su descripción:

Con = conexión a la base de datos.

@RequestMapping(“index.htm”) = Manda a llamar al jsp “index”.

Jdbc = Este objeto se instancia de la clase JdbcTemplate la cual nos sirvió para ejecutar consultas o actualizaciones SQL, inicia la iteración sobre ResultSets y detecta excepciones JDBC y las traduce a la jerarquía de excepciones genérica y más informativa definida en el org.springframework.daopaquete.

queryForList= Ejecuta una consulta para una lista de resultados, dado el SQL estático.

En la siguiente imagen visualizamos el jsp “index” donde creamos una tabla con los datos que se observaran en la base de datos, asi como sus acciones.

Ahora veremos el método de agregar.

Descripción: Agregamos nuestro jsp, para llamar al formulario de nuestra vista, después creamos el método “Agregar” donde realizamos la consulta que permitirá la inserción de datos.

Spring MVC @RequestMapping es una de las anotaciones más usada en Spring MVC. Sin embargo, en muchas casuísticas nos olvidamos de las opciones que soporta. En este caso vamos a revisar un poco como se pueden gestionar los diversos parámetros.

POST-Agregar datos.

GET-Solicitar datos.

SpringMVCRequestDiagrama

La siguiente imagen muestra la vista usada para el método “Agregar”.

Editar

Descripción: Agregamos nuestro jsp, para llamar al formulario de nuestra vista, después creamos el método “Editar” donde realizamos la consulta que permitirá la modificación de datos.

Volvemos a usar los métodos POST y GET mostrando su información a continuación,

Spring MVC @RequestMapping es una de las anotaciones más usada en Spring MVC. Sin embargo, en muchas casuísticas nos olvidamos de las opciones que soporta. En este caso vamos a revisar un poco como se pueden gestionar los diversos parámetros.

POST-Agregar datos.

GET-Solicitar datos.

Lo Unicom que cambia en este metodo es la consulta que estamos realizando, para actualizar los datos.

La siguiente vista es de nuestro jsp “Editar”, en esta parte fue importante agregar las variables que establecimos para poder llamar a los datos de nuestra base de datos.

Finalmente creamos el método “Eliminar” que está llamando a la clase HttpServletRequest, se describe a continuación:

Interfaz pública HttpServletRequest
extiende ServletRequest

Extiende la ServletRequestinterfaz para proporcionar información de solicitud para servlets HTTP.

El contenedor de servlets crea un HttpServletRequest objeto y lo pasa como argumento a los métodos de servicio del servlet ( doGet, doPost, etc.).

Observamos que de la misma forma como en la vista de editar, mandamos a llamar a nuestras variables, pero esta vez para eliminarlas.

javax.servlet.http.HttpServletRequest;

Extiende la ServletRequestinterfaz para proporcionar información de solicitud para servlets HTTP.

El contenedor de servlets crea un HttpServletRequest objeto y lo pasa como argumento a los métodos de servicio del servlet ( doGet, doPost, etc.).

org.springframework.jdbc.core.JdbcTemplate;

Esta es la clase central en el paquete central JDBC. Simplifica el uso de JDBC y ayuda a evitar errores comunes. Ejecuta el flujo de trabajo JDBC central, dejando el código de la aplicación para proporcionar SQL y extraer resultados. Esta clase ejecuta consultas o actualizaciones SQL, inicia la iteración sobre ResultSets y detecta excepciones JDBC y las traduce a la jerarquía de excepciones genérica y más informativa definida en el org.springframework.daopaquete.

org.springframework.stereotype.Controller;

Indica que una clase anotada es un “Controlador” (por ejemplo, un controlador web).

Esta anotación sirve como una especialización @Component, lo que permite que las clases de implementación se detecten automáticamente a través del escaneo de classpath. Por lo general, se usa en combinación con métodos de manejo anotados basados ​​en la RequestMappinganotación.

org.springframework.web.bind.annotation.RequestMapping;

Anotación para asignar solicitudes web a métodos en clases de manejo de solicitudes con firmas de métodos flexibles.

Tanto Spring MVC y primavera WebFlux apoyan esta anotación a través de una RequestMappingHandlerMappingy RequestMappingHandlerAdapter en sus respectivos módulos y la estructura de paquete. Para obtener una lista exacta de los argumentos del método del controlador compatible y los tipos de retorno en cada uno, utilice los enlaces de documentación de referencia a continuación:

Nota: Esta anotación se puede usar tanto a nivel de clase como a nivel de método. En la mayoría de los casos, en el método de aplicaciones de nivel preferirá utilizar una de las variantes específicas método HTTP @GetMapping@PostMapping@PutMapping@DeleteMapping, o @PatchMapping.

NOTA: Cuando utilice interfaces de controlador (por ejemplo, para proxy AOP), asegúrese de colocar de manera consistente todas sus anotaciones de mapeo, como @RequestMappingy @SessionAttributes, en la interfaz del controlador en lugar de en la clase de implementación.

org.springframework.web.bind.annotation.RequestMethod;

Enumeración Java 5 de métodos de solicitud HTTP. Destinado para su uso con el RequestMapping.method()atributo de la RequestMappinganotación.

Tenga en cuenta que, de forma predeterminada, solo DispatcherServlet admite GET, HEAD, POST, PUT, PATCH y DELETE. DispatcherServlet procesará TRACE y OPTIONS con el comportamiento predeterminado de HttpServlet a menos que se le indique explícitamente que también envíe esos tipos de solicitud: Consulte las propiedades “dispatchOptionsRequest” y “dispatchTraceRequest”, cambiándolas a “true” si es necesario.

org.springframework.web.servlet.ModelAndView;

Soporte para Model y View en el marco web MVC. Tenga en cuenta que estos son completamente distintos. Esta clase simplemente contiene ambos para hacer posible que un controlador devuelva tanto el modelo como la vista en un solo valor de retorno.

Representa un modelo y una vista devueltos por un controlador, para ser resueltos por un DispatcherServlet. La vista puede tomar la forma de un nombre de vista de Cadena que deberá ser resuelto por un objeto ViewResolver; alternativamente, un objeto View se puede especificar directamente. El modelo es un mapa, lo que permite el uso de múltiples objetos marcados por nombre.

Por ultimo describiremos la clase “Datos” en el paquete “Entidades” donde declaramos todas las variables que mandaran a llamar a los datos de nuestra aplicación, de manera que estos datos deben de ser de preciso cuidado, pues se utilizaran en los jsd y métodos.

Creamos constructores y set and get de cada atributo.

Diseño.

Cada vista contiene estilos css como otros componentes para su diseño, pero en este caso se usaron estilos de bootstrap gratuitos, para presentar un formato de mayor formalidad.

Inmediatamente después de agregar el link de bootstrap se genera el siguiente archivo en la carpeta Remote Files.

Vistas

Archivo Jsd “index”.

Archivo Jsd “agregar”.

Archivo Jsd “editar”.

Es muy importante agregar todos los jsp al archivo xml “dispatcher-servlet”, ya que de lo contrario no se podrán ejecutar los procesos programados del proyecto.

Deja un comentario