carrito sesiones

13
 PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry Carrito de Compras con Servlet, Arreglos y Sesiones Lo que vamos a desarrollar en esta sesión es el desarrollo de un sistema de ventas usando Netbeans 6.5. La aplicación se desarrollara usando Servlet, Colecciones y Sesiones. Los temas que se desarrollaron la semana pasada. A continuación se detallara los pasos a desarrollar. 1. Crear un proyecto en Netbeans que se va a llamar “CarritoCompras” y elegimo s como servidor el Apache Tomcat. File  New Proyect

Transcript of carrito sesiones

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 1/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

Carrito de Compras con Servlet, Arreglos y Sesiones

Lo que vamos a desarrollar en esta sesión es el desarrollo de un sistema de ventas usando Netbeans 6.5. La aplicación se desarrollara

usando Servlet, Colecciones y Sesiones. Los temas que se desarrollaron la semana pasada. A continuación se detallara los pasos adesarrollar.

1. Crear un proyecto en Netbeans que se va a llamar “CarritoCompras” y elegimos como servidor el Apache Tomcat. File 

New Proyect

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 2/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

2. Crear un paquete donde almacenaremos los Servlet y las clases de Java que vamos a crear, ese paquete se va a llamar

“PaqueteServlet”  

3. Crear la siguiente pagina de login.html usando Macromedia Dreamweaver

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 3/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

4. Se creara el siguiente diagrama de clases en Netbeans

5. Ahora se va a crear un Servlet llamado “ServletInicioSesion” que va a ser el encargado de establecer los valores de inicio deun vector de Productos y de un vector de Clientes y se almacenara en una sesión toda esa información.

  La sesión que almacenara el Vector de Usuarios recibirá el nombre deusuarios y será del tipo Vector<Usuario>. 

  La sesión que almacenara el Vector de Productos recibirá el nombre de productos y será del tipo Vector<Producto>. 

5.1. Método que va inicializar vector de productos

Vector<Usuario> usuarios=null;

//Método que va a crear dos usuarios y lo va adicionar al vector de usuarios 

public void inicializarUsuarios() {//Creando el vector de usuarios 

this.usuarios = new Vector<Usuario>();

//Creando los usuarios 

Usuario user1 = new Usuario(1, "Henry", "Wong", "hwong", "1234", "cliente");

Usuario user2 = new Usuario(2, "Carmen", "Chavez", "cchavez", "1234", "empleado");

//Adicionando los usuarios al vector de usuarios 

this.usuarios.add(user1);

this.usuarios.add(user2);

}

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 4/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5.2. Método que va inicializar el vector de usuarios

5.3. En el método init llamaremos a los dos métodos que hemos creado anteriormente para inicializar por primera vez a

los vectores de usuarios y de clientes y el método doGet  llamaremos al método doPost .

@Override

public void init(ServletConfig confing) throws ServletException {

this.inicializarUsuarios();this.inicializarProductos();

}

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

Vector<Producto> productos=null;

//Metodo que va a crear productos y lo va adicionar al vector de productos 

public void inicializarProductos() {

//Creando el vector de usuarios 

this.productos = new Vector<Producto>();

//Creando los productos 

Producto prod1 = new Producto(1, "Televisor Samsung", 10, 12.50f);

Producto prod2 = new Producto(2, "Usb Kingston de 2Gb", 20, 40f);

Producto prod3 = new Producto(3, "Laptop HP DV7000", 15, 7899.99f);

//Adicionando los productos al vector de productos 

this.productos.add(prod1);

this.productos.add(prod2);this.productos.add(prod3);

}

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 5/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5.4. En el método doPost  validaremos la información que enviamos desde la página login.html . Para eso validamos el

usuario y la clave que ha sido enviado con esa página y recorremos todo nuestro vector de usuarios para encontrar si

hay un usuario con esa clave, además se obtendrá la sesión o se creara una nueva sesión si fuera el caso y

almacenaremos los vectores de usuarios, productos y el usuario que iniciara sesión.

String usuario = request.getParameter("txtUsuario");

String clave = request.getParameter("txtClave");

String direccion="error.html";

//Creamos la sesión si es nueva 

HttpSession sesion = request.getSession();

if (sesion.isNew()) {

sesion = request.getSession(true);

sesion.setAttribute("usuarios", usuarios);

sesion.setAttribute("productos", productos);

} else {usuarios = (Vector<Usuario>) sesion.getAttribute("usuarios");

productos = (Vector<Producto>) sesion.getAttribute("productos");

}

//Buscamos si existe un usuario con esa clave que le enviamos 

for (int i = 0; i < usuarios.size(); i++) {

if ((usuarios.get(i).getUsuario().compareTo(usuario) == 0) &&

(usuarios.get(i).getClave().compareTo(clave) == 0)) {

sesion.setAttribute("usuarioInicio", usuarios.get(i));

//Ir a la pagina segun el privilegio 

if (usuarios.get(i).getPrivilegio().compareTo( "cliente") == 0) {

//Ir a la página de Cliente 

direccion="ServletCConProd";

} else {//Ir a la página de Empleado 

direccion="ServletEConProd";

}

break;

}

}

//Mando a la pagina según corresponda 

response.sendRedirect(direccion);

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 6/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

6. Si inicia sesión un usuario que tiene el privilegio de cliente, el Servlet lo direccionara a un Servlet que se llamara

“ServletCConProd”  y este Servlet será el encargado de mostrar todos los productos que tenemos en nuestro vector de

productos.

//Para mostrar la pagina Web 

PrintWriter out=response.getWriter();

//Obtengo todos los datos de la sesion de usuario 

Vector<Producto> productos=(Vector<Producto>)request.getSession().getAttribute("productos");

....

....

....

//Vamos a mostrar la lista de productos del vector de Productos 

for(int i=0; i<productos.size(); i++){

if(i%2==0){

out.println("<tr bgcolor=\"#FFFFFF\">");out.println("<td>" + productos.get(i).getNombreProducto() + "</td>");

out.println("<td align=\"right\" valign=\"top\">"+ productos.get(i).getStock() +"</td>");

out.println("<td align=\"right\" valign=\"top\">"+ productos.get(i).getPrecio() +"</td>");

out.println("</tr>");

}else{

out.println("<tr>");

out.println("<td>" + productos.get(i).getNombreProducto() + "</td>");

out.println("<td align=\"right\" valign=\"top\">"+ productos.get(i).getStock() +"</td>");

out.println("<td align=\"right\" valign=\"top\">"+ productos.get(i).getPrecio() +"</td>");

out.println("</tr>");

}

}

....

....

....

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 7/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 8/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

7. Si deseamos agregar un elemento al carrito de compras nos pedirá que busquemos que productos deseamos y esa página se

mostrara gracias a un Servlet que llamaremos “ServletCAgrCarrito1” , después este Servlet nos direccionara a otro Servlet que

nos preguntara que cantidad de productos deseamos comprar y ese Servlet tendrá el nombre de “ServletCAgrCarrito2” , y

finalmente para adicionar ese producto al carrito de compras creamos un Servlet que tendrá el nombre de

“ServletCAgrCarrito3”,cuyo método doPost tendrá el siguiente código.

HttpSession sesion=request.getSession();

Vector<Carrito> carritoCompra=null;

Vector<Producto> productos=(Vector<Producto>)sesion.getAttribute("productos");

Usuario usuario=(Usuario)sesion.getAttribute("usuarioInicio");

//Si se creo la sesion con el atributo de carrito 

if(sesion.getAttribute("carrito")!=null){

//Si existe una sesion con ese atributo, se obtiene los datos de esa sesion 

carritoCompra=(Vector<Carrito>)sesion.getAttribute("carrito");

}else{//Si no existe esa sesion se crea el carrito de compras 

carritoCompra=new Vector<Carrito>();

}

//Obtenemos los valores de la cajas de texto 

int indice=Integer.parseInt(request.getParameter("txtIndice").trim());

int cantidad=Integer.parseInt(request.getParameter("txtCantidad").trim());

float subTotal=cantidad * productos.get(indice).getPrecio();

//Creo el elemento carrito 

Carrito car=new Carrito();

car.setCodigo(indice);

car.setProducto(productos.get(indice));

car.setUsuario(usuario);

car.setCantidadPedida(cantidad);

car.setSubTotal(subTotal);//Agrego el carrito a mi vector 

carritoCompra.add(car);

sesion.setAttribute("carrito",carritoCompra);

PrintWriter out=response.getWriter();

mostrarPagina(out, carritoCompra);

out.close();

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 9/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 10/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 11/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 12/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

8. Cuando damos en Finalizar Compra, se deberá actualizar los stocks de los productos que teníamos. El encargado de

actualizar los stocks será un Servlet que lo llamaremos “ServletCFinalizarCompra”. Cuyo método doPost será el

encargado de actualizar los stocks.

HttpSession sesion=request.getSession();

Vector<Carrito> carritoCompra=(Vector<Carrito>)sesion.getAttribute("carrito");

Vector<Producto> productos=(Vector<Producto>)sesion.getAttribute("productos");

for(int i=0; i<carritoCompra.size(); i++){

//Obtengo el producto que pedi por medio de mi Vector de Productos 

Producto prodTemp=carritoCompra.get(i).getProducto();

//Actualizo el stock del producto 

int stockActualizado=prodTemp.getStock() - carritoCompra.get(i).getCantidadPedida();

prodTemp.setStock(stockActualizado);

//Obtengo en que índice esta el elemento producto que voy actualizar 

int indiceActualizar=carritoCompra.get(i).getCodigo();

//Remuevo ese elemento 

productos.remove(indiceActualizar);

//Y lo vuelvo agregar con la nueva información 

productos.add(indiceActualizar, prodTemp);

}

//Actualizo mi sesión que tiene el vector de productos 

sesion.setAttribute("productos", productos);

//Elimino la sesión que tenia información del carrito de compras 

sesion.removeAttribute("carrito");

PrintWriter out=response.getWriter();

imprimarPagina(out, productos);

out.close();

5/16/2018 carrito sesiones - slidepdf.com

http://slidepdf.com/reader/full/carrito-sesiones 13/13

PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry