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.

Cómo crear una conexión a una base de datos local con entity framework

¿Qué es Entity framework?

Es una tecnología desarrollada por Microsoft, que a través de ADO.NET genera un conjunto de objetos que están directamente ligados a una Base de Datos, permitiendo a los desarrolladores manejar dichos objetos en lugar de utilizar lenguaje SQL contra la Base de Datos.

Surgimiento

Los arquitectos y programadores de aplicaciones orientadas a datos se han enfrentado a la necesidad de lograr dos objetivos muy diferentes. Deben modelar las entidades, las relaciones y la lógica de los problemas empresariales que resuelven, y también deben trabajar con los motores de datos que se usan para almacenar y recuperar los datos, estos pueden abarcar varios sistemas de almacenamiento, cada uno con sus propios protocolos; incluso las aplicaciones que funcionan con un único sistema de almacenamiento deben equilibrar los requisitos del sistema de almacenamiento con respecto a los requisitos de escribir un código de aplicación eficaz y fácil de mantener.

Entity Framework da vida a los modelos conceptuales permitiendo a los programadores consultar las entidades y relaciones en el modelo de dominio (denominado modelo conceptual en Entity Framework ) al tiempo que se basan en Entity Framework para traducir esas operaciones en los comandos específicos del origen de datos.

Versiones

La primera versión de Entity Framework (EFv1) se incluye con. NET Framework 3.5 Service Pack 1 y Visual Studio 2008 Service Pack 1, lanzado el 11 de agosto de 2008.

La segunda versión de Entity Framework, llamado Entity Framework 4.0 (EFv4), fue lanzado como parte de. NET 4.0, el 12 de abril de 2010.

La tercera versión de Entity Framework, versión 4.1, fue lanzado el 12 de abril de 2011.

Una actualización de la versión 4.1 llamada Entity Framework 4.1 Update 1, fue lanzado el 25 de julio de 2011. Que incluye correcciones de errores y nuevos tipos de apoyo.

Proveedores de Datos

El proveedor EntityClient extiende el modelo de proveedor de ADO.NET teniendo acceso a los datos en lo que respecta a las entidades conceptuales y relaciones. Ejecuta consultas que utilizan Entity SQL Entity SQL proporciona el lenguaje de consultas subyacente que permite a EntityClient comunicarse con la base de datos. Para obtener más información, vea Proveedor de EntityClient para Entity Framework.

Entity Framework incluye un proveedor de datos SqlClient actualizado que admite los árboles de comandos canónicos. Para obtener más información, vea Proveedor de datos .NET Framework para SQL Server (SqlClient) para Entity Framework.

Ventajas

Entity Framework permite a los programadores trabajar con datos en forma de objetos y propiedades específicos del dominio, por ejemplo, con clientes y direcciones, sin tener que pensar en las tablas de las bases de datos subyacentes y en las columnas en las que se almacenan estos datos.

Los desarrolladores de software pueden trabajar en un nivel más alto de abstracción cuando tratan con datos, y puede crear y mantener aplicaciones orientadas a datos con menos código que en las aplicaciones tradicionales, ya que pueden funcionar en términos de un modelo conceptual más centrado en la aplicación, que incluye tipos con herencia, miembros complejos y relaciones.

Las asignaciones entre el modelo conceptual y el esquema específico de almacenamiento pueden cambiar sin tener que cambiar el código de la aplicación. Dado que Entity Framework es un componente de .NET Framework, las aplicaciones de Entity Framework se pueden ejecutar en cualquier equipo en el que esté instalado .NET Framework a partir de la versión versión 3.5 SP.

APLICACIÓN

Para la realizacion de MVC de registro y consulta de estudiantes, se utilizó la version 2017 de visual studio c# windows form, Linq sql server 2012 para la creación de la base de datos y Entity Framework para la conexión a base de datos desde el windows form.

A continuación, se muestra un mvc de registro y consulta de estudiante, en la primera ventana se muestra lo que es el diseño en un Windows form en donde tiene los apartados nombre, apellido y meteria y un botón de guardar que es el que da la alta del estudiante a la base de datos.

En la siguiente imagen se muestra el funcionamiento de la aplicación que es la vista de nuestro MVC en donde se hace el registro del estudiante y se muestra en la tabla creada por la base de datos y nos aparece un cuadro de dialogo en donde nos indica que el estudiante se guardó con éxito.


La siguiente imagen muestra el controlador del mvc en donde esta incluida en una clase que se llama ControllerForm1 en la cual se crearon 2 métodos, agregar y consultar.

En el método agregar se creó una instancia de la clase student del modelo para guardar en la base de datos los campos: nombre, apellido y materia.

            El método consultar se creó una instancia de la tabla de base de datos para ser mostrada en forma de lista en windows form.



ALUMNAS:

María Guadalupe Del Rocío Huizar Neri

Luz Clarita Guzmán Jiménez

GRUPO: 

ITI-7A-11

PROFESOR:

Araujo González Miguel Antonio

APLICACIÓN-CON-ENTITY-FRAMEWORK

  • Abrimos visual studio, damos clic en la parte superior “Archivo” luego “Nuevo” posteriormente “Proyecto”.
  • Creamos una aplicación de “Windows Forms (.NET Framework) ya que en este caso se hará con Windows Forms, esto es opcional según el gusto de cada persona, pueden crearlo en aplicación de consola o en aplicaciones webs.
  • Luego creamos nuestra base de datos, para ellos damos click en la parte superior “Ver”, “Explorador de servidores”.
  • Al dar clic en “Explorador de servidores” nos mostrará una ventana del lado izquierdo de la pantalla.
  • Luego, damos click derecho en “Conexiones de datos”, “Crear nueva base de datos de SQL Server”, esta se puede crear en Visual Studio o en sql server según la preferencia y la forma de trabajar de cada persona.
  • Luego creamos nuestra base de datos, para ellos agregamos el nombre de nuestro servidor (en el recuadro de lado izquierdo viene una opción llamada “Servidores” y es ahí donde te muestra el nombre de tu servidor) y el nombre de nuestra base de datos.
  • Una vez creada la base de datos, vemos que del lado izquierdo se ha agregado, pero por el momento esta vacía, ahora agregaremos una tabla, para ellos damos clic derecho en “Crear nueva tabla”.
  • Ya que se tiene creada la tabla, agregamos los campos que se van a requerir.
  • Ya creada la base de datos con las tablas que vamos a utilizar pasamos al primer Form1 esto para comenzar a insertar los textbox a utilizar para hacer la inserción de los datos a la base de datos mediante una tabla.
  •  Ahora cambiaremos el id de cada uno de los textbox con el fin de saber el nombre de cada uno de ellos (según el campo) para la inserción de los datos.
  • Comenzamos con el del nombre
  • Apellido Paterno
  • Apellido Materno
  • Teléfono
  • Dirección
  • Grado
  • Ahora, vamos a generar el modelo vista controlador, comenzando con una carpeta llamada modelo, ésta se crea dando click derecho sobre el proyecto – ‘Agregar’ – Nueva Carpeta.
  •  Hasta ahora tenemos creada la carpeta del Modelo, ésta carpeta contendrá todo lo relacionado con la base de datos.
  • Ahora crearemos nuestro modelo, para ello damos click derecho sobre la carpeta modelo – Agregar – Nuevo elemento
  • Después de haber presionado nuevo elemento aparecerá la siguiente pantalla, entramos a datos – seleccionamos ADO.NET Entity Data Model y presionamos agregar, (el nombre tu lo seleccionas a tu criterio).
  • Seleccionamos la primera opción y presionamos en siguiente.
  • Ya que tenemos lo anterior, ahora presionamos nuevamente siguiente
  • Escogemos la versión del framework que se va utilizar
  • Hacemos la selección de la base de datos que vamos a utilizar y presionamos en finalizar, después de esto solo queda esperar a que mappie las tablas de la base de datos.
  • Ahora lo que vamos a generar es la modelo vista controlador, seguido de una carpeta llamada vista, esta se crea dando click derecho sobre el proyecto – ‘Agregar’ – Nueva Carpeta.
  •  Tenemos creada la carpeta del Vista, esta carpeta contendrá todo lo relacionado con las vistas del sistema, eso lo haremos seleccionando los FORM que se utilizaran y se arrastraran a la carpeta vista.
  • Lo que prosigue es copiar nuestra vista que ya tenemos creada a la carpeta de vista.
  • Ahora lo que vamos a generar es el controlador, ésta se crea dando click derecho sobre el proyecto – ‘Agregar’ – Nueva Carpeta a esta carpeta la llamaremos Controlador.
  • Esta carpeta servirá para realizar las consultas a nuestra base de datos
  • Ya creada la carpeta del controlador, dentro de ella se va crear una clase llamada ControladorWinForm

Entramos a la clase y agregamos el using para poder acceder a la base de datos que tenemos en el modelo.

  • Ahora vamos a crear una clase llamada DarAlta esta nos servirá para dar la inserción a la base de datos.

Ojo: para la clase DarAlta son las variables que tiene nuestro form (nombre de los textBox), ya que estarán ligadas con cada uno de los campos de la tabla de la base de datos.

  • Teniendo completo lo anterior, nos pasamos al código el formulario, para inicializar nuestras variables en vacío, ya sean tipo string o int.

Esto lo haremos para el botón de inserción, pero antes tenemos que agregar el using para que pueda entrar al controlador y el del formulario, como se muestra en la parte superior de la imagen.

Después de esto vamos a crear variables con los mismos nombres de los textbox, y las inicializamos en vacío.

El siguiente paso sería asignar esas variables a los textbox del form, en su parte de texto, esto para poder agregar datos a la base de datos.

Y por último realizamos una instancia de la clase del controlador, esto para mandar llamar la clase DarAlta e insertar a la bd.

Se le agregó un try and catch para cualquier error que surgiera, esto es opcional

Y con esto ya se pueden insertar datos a una bd desde una aplicación de WindowsForm con Entity Framework y Patron MVC.

Equipo: ITIC 7 A

JESUS DE LARA FIGUEROA.

REYNA VIRIDIANA GALLEGOS AVELAR.

Conexión a una base de datos local con entity framework

En este proyecto se implementó el desarrollo en C# utilizando Windows forms y una conexión a una base de datos local con entity framework.
En imagen muestra la creación de forms con sus herramientas solo como un buscador para encontrar un empleado en la base de datos.
Form es utilizado para la búsqueda del empleado que se encontró en la base de datos.

Asimismo, Se utilizó una serie de librerías que nos facilita a utilizar visual studio para darle mas funcionalidad a la aplicación y poder  realizar las actividades deseadas.
Librerías:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MVCproject.view;
using MVCproject.Controller;

este es todo el conjunto de librerías usadas.
División por carpetas:
Model:
En esta parte encontramos la comunicación a la base de datos y la localización de la tabla, para esta parte utilizamos un archivo de datos ADO.NET Entity data model basado en el framework de EntityFramework para la conexión.
View:
Esta es la parte de la vista se encuentra almacenado los archivos de Windows forms cs. De el cual solamente ocupamos las formas y la utilización del evento click para llamar al controlador.
Controller:
En el controlador se encuentra dos archivos de clases para poder realizar la función entre la base de datos y las vistas divididas por la funcionalidad que debe de tener cada uno del controlador.
Class BusquedaDB:
En la primera clase del controlador llamada BusquedaDB realiza una comparación de los id capturado en el textbox con la llave primaria de la base de datos.
Todo este procedimiento es realizado por la herramienta de linq después de realizar la instancia a la base de datos.
Class CnsultaDB:
En la segunda clase del controlador llamada ConsultaDB realiza la consulta a la base de datos y realiza una copia desde el objeto base de datos que instanciamos en el proyecto para poder mostrarlo dentro de nuestro form.
Todo este procedimiento es realizado por la herramienta de linq después de realizar la instancia a la base de datos.

NOMBRES DE LOS ALUMNOS:

Morales Díaz de León Juan Carlos

González Román Eduardo

GRUPO: 

ITI-7A-11

PROFESOR:

Araujo González Miguel Antonio

Oracle otra vez…

En el Instituto seguimos usando la poderosa base de datos Oracle, y como bien saben uno parpadea un poco y la tecnología avanzo en unos cuantos años. Debido a una iniciativa que espero concretar quiero trabajar con esta base de datos y el lenguaje de programación Python, pero decidí buscar y actualizar la versión express más reciente que es la 18c.

Ahora descargamos la última versión de Oracle XE para windows del sitio oficial.

Read More

Más de SQLite – UPDATE / ROWID

En el Instituto seguimos utilizando este pequeño motor de base de datos por la flexibilidad y portabilidad que brinda.

Por lo que para nuestros procesos de trabajo hemos tenido que internarnos más en su juego de instrucciones SQL.

Las cosas se han vuelto más complejas en cuanto a la recolección y obtención de información oportuna por lo que de momento tenemos que crear archivos de prueba para empezar a generar resultados que generalmente plasmamos en cuadros con información en formato de Microsoft Excel.

Read More

Aplicaciones móviles (MIT App Inventor)

Para la materia de desarrollo de aplicaciones III, que tiene que ver con desarrollo móvil, la unidad 2 nos marca un objetivo bastante ambicioso, ya que en solo 7 sesiones (además que se cruzó un día festivo con la cual nos quedan 5) se pide que el alumno haga una aplicación móvil.

En mi blog https://appstatistical.blogspot.com/2018/04/generacion-de-aplicaciones-android-con.html narro como hacer una aplicación con CSPro, y por ahí empezamos, pero no quedé muy convencido.

Sin embargo gracias a los amigos de Platzi que muestran un vídeo donde se explica las múltiples tecnologías y caminos para llegar a hacer una aplicación móvil, me enteré de una herramienta para niños y publico en general que desarrolló el MIT (App inventor) que permite hacer aplicaciones móviles muy sencillas, es por eso, para cumplir el objetivo de la unidad 2, nos iremos por este camino.

Read More