• No se han encontrado resultados

CarritoJSP

N/A
N/A
Protected

Academic year: 2021

Share "CarritoJSP"

Copied!
12
0
0

Texto completo

(1)

Java - Aplicación W

Java - Aplicación W

eb, Carrito de Compras Parte

eb, Carrito de Compras Parte

I - C

I - C

reación de la Base de

reación de la Base de

Datos

Datos

1. Entorno

1. Entorno

• MySQL 5.1.MySQL 5.1. •

•  NetBeans IDE 6.9.1 NetBeans IDE 6.9.1 •

• Apache TomcatApache Tomcat •

• JDK 1.6.0 - 21JDK 1.6.0 - 21

2. Introducción

2. Introducción

En el siguiente tutorial vamos a desarrollar un

En el siguiente tutorial vamos a desarrollar un carrito de compras o lo que carrito de compras o lo que seria un sistema de ventasseria un sistema de ventas usando el lenguaje de

usando el lenguaje de programación Java, como base programación Java, como base de datos vamos a usar el de datos vamos a usar el MySQL 5.1. y tambienMySQL 5.1. y tambien crearemos un reporte con JasperReports. La base de datos que vamos a crear es una base de datos con 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 fines didácticos, dado que nos faltaría crear mas tablas, como la tabla cliente, categoría, unidad de medida, etc pero si nos exp

medida, etc pero si nos explayamos mucho nos quedaría muy largo el tutorial. Ademas en el ejemplolayamos mucho nos quedaría muy largo el tutorial. Ademas en el ejemplo no se explica como d

no se explica como disminuir un stock, debido a que isminuir un stock, debido a que eso siempre se les pide a los alumnos eso siempre se les pide a los alumnos universitariouniversitario que investiguen como hacerlo,

que investiguen como hacerlo, pero si quieren una ayudita lo ppero si quieren una ayudita lo pueden hacer creando Triggers en la baseueden hacer creando Triggers en la base de datos. La aplicación se desarrollara en un formato web usando el patrón de

de datos. La aplicación se desarrollara en un formato web usando el patrón de Modelo, Vista yModelo, Vista y

Controlador 

Controlador . Y para la parte de la vista usaremos lo que se . Y para la parte de la vista usaremos lo que se conoce comoconoce como Java Server Page (JSP)Java Server Page (JSP).. Espero que el ejemplo se de su utilidad.

Espero que el ejemplo se de su utilidad.

3. Desarrollo

3. Desarrollo

En esta primera parte del tutorial vamos a

En esta primera parte del tutorial vamos a crear la base de datos crear la base de datos en MySQL 5.1., la base de datos seen MySQL 5.1., la base de datos se llamara

llamara BDTutorialBDTutorial

3.1. Diseño de la base de datos 3.1. Diseño de la base de datos La base

(2)

A continuación les paso el script de creación de la base de datos A continuación les paso el script de creación de la base de datos -- CREADO POR: HENRY JOE WONG URQUIZA

-- CREADO POR: HENRY JOE WONG URQUIZA

-- FECHA: 24FEB2011

-- FECHA: 24FEB2011

--

--

--- TUTORIAL DE COMO HACER UN CARRITO DE COMPRAS USANDO

-- TUTORIAL DE COMO HACER UN CARRITO DE COMPRAS USANDO

-- EL MODELO VISTA CONTROLADOR

-- EL MODELO VISTA CONTROLADOR

---- Creando la base de datos

-- Creando la base de datos

--CREATE

CREATE DATABASEDATABASE IFIF NOTNOT EXISTSEXISTS bdtutorial;bdtutorial; USE

USE bdtutorial;bdtutorial;

---- Creando la tabla `detalleventa`

-- Creando la tabla `detalleventa`

--DROP

DROP TABLETABLE IFIF EXISTSEXISTS `detalleventa`;`detalleventa`; CREATE

CREATE TABLETABLE `detalleventa` (`detalleventa` ( `codigoVenta`

`codigoVenta` intint(11)(11) NOTNOT NULLNULL,, `codigoProducto`

`codigoProducto` intint(11)(11) NOTNOT NULLNULL,, `cantidad`

`cantidad` decimaldecimal(18,2)(18,2) NOTNOT NULLNULL,, `descuento`

`descuento` decimaldecimal(18,2)(18,2) NOTNOT NULLNULL,, PRIMARY

(3)

A continuación les paso el script de creación de la base de datos A continuación les paso el script de creación de la base de datos -- CREADO POR: HENRY JOE WONG URQUIZA

-- CREADO POR: HENRY JOE WONG URQUIZA

-- FECHA: 24FEB2011

-- FECHA: 24FEB2011

--

--

--- TUTORIAL DE COMO HACER UN CARRITO DE COMPRAS USANDO

-- TUTORIAL DE COMO HACER UN CARRITO DE COMPRAS USANDO

-- EL MODELO VISTA CONTROLADOR

-- EL MODELO VISTA CONTROLADOR

---- Creando la base de datos

-- Creando la base de datos

--CREATE

CREATE DATABASEDATABASE IFIF NOTNOT EXISTSEXISTS bdtutorial;bdtutorial; USE

USE bdtutorial;bdtutorial;

---- Creando la tabla `detalleventa`

-- Creando la tabla `detalleventa`

--DROP

DROP TABLETABLE IFIF EXISTSEXISTS `detalleventa`;`detalleventa`; CREATE

CREATE TABLETABLE `detalleventa` (`detalleventa` ( `codigoVenta`

`codigoVenta` intint(11)(11) NOTNOT NULLNULL,, `codigoProducto`

`codigoProducto` intint(11)(11) NOTNOT NULLNULL,, `cantidad`

`cantidad` decimaldecimal(18,2)(18,2) NOTNOT NULLNULL,, `descuento`

`descuento` decimaldecimal(18,2)(18,2) NOTNOT NULLNULL,, PRIMARY

(4)

KEY

KEY `FK_DetalleVenta_Producto` (`codigoProducto`),`FK_DetalleVenta_Producto` (`codigoProducto`), CONSTRAINT

CONSTRAINT `FK_DetalleVenta_Producto``FK_DetalleVenta_Producto` FOREIGNFOREIGN KEYKEY (`codigoProducto`)(`codigoProducto`) REFERENCESREFERENCES

`producto` (`codigoProducto`), `producto` (`codigoProducto`),

CONSTRAINT

CONSTRAINT `FK_DetalleVenta_Venta``FK_DetalleVenta_Venta` FOREIGNFOREIGN KEYKEY (`codigoVenta`)(`codigoVenta`) REFERENCESREFERENCES

`venta` (`codigoVenta`) `venta` (`codigoVenta`) ) ENGINE=InnoDB

) ENGINE=InnoDB DEFAULTDEFAULT CHARSET=latin1;CHARSET=latin1;

---- Creando la tabla `producto`

-- Creando la tabla `producto`

--DROP

DROP TABLETABLE IFIF EXISTSEXISTS `producto`;`producto`; CREATE

CREATE TABLETABLE `producto` (`producto` ( `codigoProducto`

`codigoProducto` intint(11)(11) NOTNOT NULLNULL,, `nombre`

`nombre` varcharvarchar(100)(100) NOTNOT NULLNULL,, `precio`

`precio` decimaldecimal(18,2)(18,2) NOTNOT NULLNULL,, PRIMARY

PRIMARY KEYKEY (`codigoProducto`)(`codigoProducto`) ) ENGINE=InnoDB

) ENGINE=InnoDB DEFAULTDEFAULT CHARSET=latin1;CHARSET=latin1;

---- Creando la tabla venta

-- Creando la tabla venta

--DROP

DROP TABLETABLE IFIF EXISTSEXISTS `venta`;`venta`; CREATE

CREATE TABLETABLE `venta` (`venta` ( `codigoVenta`

`codigoVenta` intint(11)(11) NOTNOT NULLNULL,, `cliente`

`cliente` varcharvarchar(100)(100) NOTNOT NULLNULL,, `fecha`

`fecha` datetimedatetime NOTNOT NULLNULL,, PRIMARY

PRIMARY KEYKEY (`codigoVenta`)(`codigoVenta`) ) ENGINE=InnoDB

) ENGINE=InnoDB DEFAULTDEFAULT CHARSET=latin1;CHARSET=latin1;

3.2. Creando los procedimientos almacenados 3.2. Creando los procedimientos almacenados

Según Wikipedia un procedimiento almacenado (stored procedure en inglés) es un programa (o 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  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  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 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 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

necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de regreso al usuario, deshaciéndose de lala sobrecarga resultante de comunicar grandes cantidades de

sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.datos salientes y entrantes. 3.2.1. Procedimientos almacenados para la tabla Producto

3.2.1. Procedimientos almacenados para la tabla Producto -- CREADO POR: HENRY JOE WONG URQUIZA

-- CREADO POR: HENRY JOE WONG URQUIZA

-- FECHA: 24FEBRERO2011

-- FECHA: 24FEBRERO2011

--

--

--- TUTORIAL DE COMO REALIZAR UN CARRITO DE COMPRAS CON JAVA Y JSP

-- TUTORIAL DE COMO REALIZAR UN CARRITO DE COMPRAS CON JAVA Y JSP

-- APLICANDO MODELO, VISTA Y CONTROLADOR

-- APLICANDO MODELO, VISTA Y CONTROLADOR

-- Procedimiento almacenado para insertar un producto

-- Procedimiento almacenado para insertar un producto

DROP

DROP PROCEDUREPROCEDURE IFIF EXISTSEXISTS `spI_producto`;`spI_producto`; DELIMITER $$

DELIMITER $$ CREATE

CREATE DEFINER=`root`@`localhost`DEFINER=`root`@`localhost` PROCEDUREPROCEDURE `spI_producto`(`spI_producto`( INOUT _codigoProducto

INOUT _codigoProducto intint ,, _nombre

(5)

_precio

_precio decimaldecimal(18, 2)(18, 2) )

) BEGIN

BEGIN

-- Genera una especie de autoincremental pero yo controlo los codigos

-- Genera una especie de autoincremental pero yo controlo los codigos

-- que genero

-- que genero

SELECT

SELECT IFNULL(IFNULL(MAXMAX(codigoProducto),0)+1(codigoProducto),0)+1 intointo _codigoProducto_codigoProducto FROMFROM `producto`;`producto`; INSERT

INSERT INTOINTO `producto`(`producto`( `codigoProducto`, `codigoProducto`, `nombre`, `nombre`, `precio` `precio` ) ) VALUES VALUES (( _codigoProducto, _codigoProducto, _nombre, _nombre, _precio _precio ); ); END END $$$$ DELIMITER ; DELIMITER ;

-- Procedimiento almacenado para actualizar un producto

-- Procedimiento almacenado para actualizar un producto

DROP

DROP PROCEDUREPROCEDURE IFIF EXISTSEXISTS `spU_producto`;`spU_producto`; DELIMITER $$

DELIMITER $$ CREATE

CREATE DEFINER=`root`@`localhost`DEFINER=`root`@`localhost` PROCEDUREPROCEDURE `spU_producto`(`spU_producto`( _codigoProducto

_codigoProducto intint ,, _nombre

_nombre varcharvarchar(100) ,(100) , _precio

_precio decimaldecimal(18, 2)(18, 2) )

) BEGIN

BEGIN

UPDATE

UPDATE productoproducto SET SET `nombre` = _nombre, `nombre` = _nombre, `precio` = _precio `precio` = _precio WHERE WHERE `codigoProducto` = _codigoProducto `codigoProducto` = _codigoProducto ; ; END END $$$$ DELIMITER ; DELIMITER ;

-- Procedimiento almacenado para obtener todos los productos

-- Procedimiento almacenado para obtener todos los productos

DROP

DROP PROCEDUREPROCEDURE IFIF EXISTSEXISTS `spF_producto_all`;`spF_producto_all`; DELIMITER $$

DELIMITER $$ CREATE

CREATE DEFINER=`root`@`localhost`DEFINER=`root`@`localhost` PROCEDUREPROCEDURE `spF_producto_all`(`spF_producto_all`( ) ) BEGIN BEGIN SELECT SELECT p.codigoProducto, p.codigoProducto, p.nombre, p.nombre, p.precio p.precio FROM FROM producto p producto p ORDER ORDER BYBY P.nombre P.nombre ; ; END END $$$$ DELIMITER ; DELIMITER ;

(6)

-- 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,

(7)

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 ;

(8)

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 datosBDTutorialque 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

(9)

De ahí presionamos el botón Next y nos pedirá que pongamos un nombre a nuestro proyecto y lo llamaremos CarritoComprasJSP 

(10)

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

(11)

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

(12)

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.

Referencias

Documento similar