CarritoJSP
Short Description
Download CarritoJSP...
Description
Java - Aplicación Web, Web, Carrito de Compras Parte I - Creación C reación de la Base de Datos
1. Entorno •
•
•
•
MySQL 5.1. NetBeans IDE 6.9.1 Apache Tomcat JDK 1.6.0 - 21
2. Introducción En el siguiente tutorial vamos a desarrollar un carrito de compras o lo que seria un sistema de ventas usando el lenguaje de programación Java, como base de datos vamos a usar el MySQL 5.1. y tambien crearemos un reporte con JasperReports. La base de datos que vamos a crear es una base de datos con fines didácticos, dado que nos faltaría crear mas tablas, como la tabla cliente, categoría, unidad de medida, etc pero si nos explayamos exp layamos mucho nos quedaría muy largo el tutorial. Ademas en el ejemplo no se explica como disminuir d isminuir un stock, debido a que eso siempre se les pide a los alumnos universitario que investiguen como hacerlo, pero si quieren una ayudita lo pueden p ueden hacer creando Triggers en la base de datos. La aplicación se desarrollara en un formato web usando el patrón de Modelo, Vista y Controlador . Y para la parte de la vista usaremos lo que se conoce como Java Server Page (JSP). (JSP). Espero que el ejemplo se de su utilidad.
3. Desarrollo En esta primera parte del tutorial vamos a crear la base de datos en MySQL 5.1., la base de datos se llamara BDTutorial 3.1. Diseño de la base de datos
La base de datos tendría las siguientes tablas: Venta, Venta, Producto y DetalleVenta DetalleVenta
A continuación les paso el script de creación de la base de datos ---------
CREADO POR: HENRY JOE WONG URQUIZA FECHA: 24FEB2011 -----------------------------------------------------TUTORIAL DE COMO HACER UN CARRITO DE COMPRAS USANDO EL MODELO VISTA CONTROLADOR Creando la base de datos
CREATE DATABASE IF NOT EXISTS bdtutorial; USE bdtutorial; --- Creando la tabla `detalleventa` -DROP TABLE IF EXISTS `detalleventa`; CREATE TABLE `detalleventa` ( `codigoVenta` int int(11) (11) NOT NULL NULL, , `codigoProducto` int int(11) (11) NOT NULL NULL, , `cantidad` decimal decimal(18,2) (18,2) NOT NULL NULL, , `descuento` decimal decimal(18,2) (18,2) NOT NULL NULL, , PRIMARY KEY (`codigoVenta`,`codigoProducto`),
A continuación les paso el script de creación de la base de datos ---------
CREADO POR: HENRY JOE WONG URQUIZA FECHA: 24FEB2011 -----------------------------------------------------TUTORIAL DE COMO HACER UN CARRITO DE COMPRAS USANDO EL MODELO VISTA CONTROLADOR Creando la base de datos
CREATE DATABASE IF NOT EXISTS bdtutorial; USE bdtutorial; --- Creando la tabla `detalleventa` -DROP TABLE IF EXISTS `detalleventa`; CREATE TABLE `detalleventa` ( `codigoVenta` int int(11) (11) NOT NULL NULL, , `codigoProducto` int int(11) (11) NOT NULL NULL, , `cantidad` decimal decimal(18,2) (18,2) NOT NULL NULL, , `descuento` decimal decimal(18,2) (18,2) NOT NULL NULL, , PRIMARY KEY (`codigoVenta`,`codigoProducto`),
KEY `FK_DetalleVenta_Producto` (`codigoProducto`), CONSTRAINT `FK_DetalleVenta_Producto` FOREIGN KEY (`codigoProducto`) REFERENCES `producto` (`codigoProducto`), CONSTRAINT `FK_DetalleVenta_Venta` FOREIGN KEY (`codigoVenta`) REFERENCES `venta` (`codigoVenta`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; --- Creando la tabla `producto` -DROP TABLE IF EXISTS `producto`; CREATE TABLE `producto` ( `codigoProducto` int int(11) (11) NOT NULL NULL, , `nombre` varchar varchar(100) (100) NOT NULL NULL, , `precio` decimal decimal(18,2) (18,2) NOT NULL NULL, , PRIMARY KEY (`codigoProducto`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; --- Creando la tabla venta -DROP TABLE IF EXISTS `venta`; CREATE TABLE `venta` ( `codigoVenta` int int(11) (11) NOT NULL NULL, , `cliente` varchar varchar(100) (100) NOT NULL NULL, , `fecha` datetime NOT NULL NULL, , PRIMARY KEY (`codigoVenta`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
3.2. Creando los procedimientos almacenados
Según Wikipedia un procedimiento almacenado (stored procedure en inglés) es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos. Su implementación varía de un manejador de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes. 3.2.1. Procedimientos almacenados para la tabla Producto ------
CREADO POR: HENRY JOE WONG URQUIZA FECHA: 24FEBRERO2011 -----------------------------------------------------TUTORIAL DE COMO REALIZAR UN CARRITO DE COMPRAS CON JAVA Y JSP APLICANDO MODELO, VISTA Y CONTROLADOR
-- Procedimiento almacenado para insertar un producto DROP PROCEDURE IF EXISTS `spI_producto`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spI_producto`( INOUT _codigoProducto int , _nombre varchar varchar(100) (100) ,
_precio
decimal(18, decimal (18, 2)
) BEGIN -- Genera una especie de autoincremental pero yo controlo los codigos -- que genero SELECT IFNULL(MAX IFNULL( MAX(codigoProducto),0)+1 (codigoProducto),0)+1 into _codigoProducto FROM `producto`; INSERT INTO `producto`( `codigoProducto`, `nombre`, `precio` ) VALUES ( _codigoProducto, _nombre, _precio ); END $$ DELIMITER ; -- Procedimiento almacenado para actualizar un producto DROP PROCEDURE IF EXISTS `spU_producto`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spU_producto`( _codigoProducto int , _nombre varchar varchar(100) (100) , _precio decimal decimal(18, (18, 2) ) BEGIN UPDATE producto SET `nombre` = _nombre, `precio` = _precio WHERE `codigoProducto` = _codigoProducto ; END $$ DELIMITER ; -- Procedimiento almacenado para obtener todos los productos DROP PROCEDURE IF EXISTS `spF_producto_all`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spF_producto_all`( ) BEGIN SELECT p.codigoProducto, p.nombre, p.precio FROM producto p ORDER BY P.nombre ; END $$ DELIMITER ;
-- Procedimiento almacenado para obtener todos los productos DROP PROCEDURE IF EXISTS `spF_producto_one`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spF_producto_one`( _codigoProducto int
) BEGIN SELECT p.codigoProducto, p.nombre, p.precio FROM producto p WHERE p.codigoProducto = _codigoProducto
ORDER BY P.nombre ; END $$ DELIMITER ;
3.2.2. Procedimientos almacenados para la tabla venta ------
CREADO POR: HENRY JOE WONG URQUIZA FECHA: 24FEBRERO2011 -----------------------------------------------------TUTORIAL DE COMO REALIZAR UN CARRITO DE COMPRAS CON JAVA Y JSP APLICANDO MODELO, VISTA Y CONTROLADOR
-- Procedimiento almacenado para insertar una venta DROP PROCEDURE IF EXISTS `spI_venta`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spI_venta`( INOUT _codigoVenta int , _cliente varchar(100) ) BEGIN -- Codigo autogenerado SELECT IFNULL(MAX(codigoVenta),0)+1 into _codigoVenta FROM `venta`; INSERT INTO `venta`( `codigoVenta`, `cliente`, `fecha` ) VALUES ( _codigoVenta, _cliente, CURDATE() ); END $$ DELIMITER ; -- Procedimiento almacenado para obtener todas las ventas DROP PROCEDURE IF EXISTS `spF_venta_All`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spF_venta_All`( ) BEGIN SELECT v.codigoVenta AS CodigoVenta, v.cliente AS Cliente, v.fecha AS Fecha, d.codigoProducto AS CodigoProducto, p.nombre AS Nombre, p.precio AS Precio, d.cantidad AS Cantidad,
d.descuento AS Descuento, p.precio*d.cantidad AS Parcial, ((p.precio*d.cantidad)-d.descuento) AS SubTotal, ( SELECT SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar FROM DetalleVenta AS dT INNER JOIN Producto AS pT ON dT.codigoProducto = pT.codigoProducto WHERE dT.codigoVenta=v.codigoVenta ) AS TotalPagar FROM Venta AS v INNER JOIN DetalleVenta AS d ON v.codigoVenta = d.codigoVenta INNER JOIN Producto AS p ON d.codigoProducto = p.codigoProducto ORDER BY CodigoVenta, Nombre ; END $$ DELIMITER ; -- Procedimiento almacenado para obtener una venta DROP PROCEDURE IF EXISTS `spF_venta_one`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spF_venta_one`( _codigoVenta int ) BEGIN SELECT v.codigoVenta AS CodigoVenta, v.cliente AS Cliente, v.fecha AS Fecha, d.codigoProducto AS CodigoProducto, p.nombre AS Nombre, p.precio AS Precio, d.cantidad AS Cantidad, d.descuento AS Descuento, p.precio*d.cantidad AS Parcial, ((p.precio*d.cantidad)-d.descuento) AS SubTotal, ( SELECT SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar FROM DetalleVenta AS dT INNER JOIN Producto AS pT ON dT.codigoProducto = pT.codigoProducto WHERE dT.codigoVenta=v.codigoVenta ) AS TotalPagar FROM Venta AS v INNER JOIN DetalleVenta AS d ON v.codigoVenta = d.codigoVenta INNER JOIN Producto AS p ON d.codigoProducto = p.codigoProducto WHERE v.codigoVenta=_codigoVenta ORDER BY Nombre ;
END $$ DELIMITER ;
Java - Aplicación Web, Carrito de Compras Parte II - Creación del Modelo
1. Entorno
• •
•
•
MySQL 5.1. NetBeans IDE 6.9.1 Apache Tomcat JDK 1.6.0 - 21
2. Introducción El modelo es la representación específica de la información con la cual el sistema opera. En resumen, el modelo se limita a lo relativo de la vista y su controlador facilitando las presentaciones visuales complejas. El sistema también puede operar con más datos no relativos a la presentación, haciendo uso integrado de otras lógicas de negocio y de datos afines con el sistema modelado. Acá crearemos nuestros JavaBeans y las clases que se encargaran de llamar a los procedimientos almacenados que hemos creado en nuestra base de datos BDTutorial que esta en MySQL 5.1.. Para comunicar Java con Base de datos usamos lo que comúnmente se conoce como JDBC y para ejecutar consultas o inserciones a nuestra base de datos usamos las interfaces java.sql.Statement que espera que se le pase una sentencia SQL de forma completa por ejemplo "insert into producto values(1,'valor01')", para ejecutar sentencias preparadas se utiliza la interfaz java.sql.PreparedStatement que en los lugares donde se deben de poner los valores para la sentecia SQL se representan entre ? para después poder asignar sus valores respectivos por ejemplo "insert into producto values(?,?)" y la ultima clase para llamar a procedimientos almacenados es la clase java.sql.CallableStatement que es la que utilizaremos para este tutorial
3. Creando el Proyecto 3.1. Proyecto en Netbeans
Primero debemos de crear un proyecto web en Netbeans y para eso abriremos el Netbeans y buscaremos el menu File y luego New Project. Y seleccionaremos que deseamos crear un proyecto del tipo Web Application
De ahí presionamos el botón Next y nos pedirá que pongamos un nombre a nuestro proyecto y lo llamaremos CarritoComprasJSP
Luego nos pedirá que seleccionamos en que servidor queremos que se ejecute nuestro proyecto web. En este caso lo ejecutaremos en el servidor de Apache Tomcat
3.2. Estructura del proyecto
Para explicar la estructura que vamos a tener del proyecto, les presento el siguiente gráfico q ue nos indicara como se distribuirá el Modelo, el Controlador y la Vista
4. Desarrollo 4.1. Creando el Paquete
Primero debemos de crear nuestro paquete que se llamara Modelo. En el gráfico se explica como crear el paquete
Y al paquete lo llamaremos Modelo 4.2. Creando los JavaBeans
Para crear los JavaBeans debemos de crear las clases que tendran la misma estructura de las tablas de nuestra base de datos, eso quiere decir que si por ejemplo en alguna tabla de nuestra base de datos tenemos una columna del tipo Varchar en Java tendriamos una variable del tipo String, si tenemos un variable del tipo Decimal en Java seria double. Para eso hacemos clic derecho en nuestro paquete que se llama Modelo, de ahi nos vamos a New y seleccionamos Java Class 4.2.1. Clase Producto
La clase Producto tiene la misma estructura de nuestra tabla Producto de nuestra base de datos, a continuación les comparto el código fuente de la clase.
View more...
Comments