Vous êtes sur la page 1sur 13

PAW Sesiones y Arreglos Ing.

Wong Urquiza, Henry

Carrito de Compras con Servlet, Arreglos y Sesiones

Lo que vamos a desarrollar en esta sesin es el desarrollo de un sistema de ventas usando Netbeans 6.5. La aplicacin se desarrollara
usando Servlet, Colecciones y Sesiones. Los temas que se desarrollaron la semana pasada. A continuacin se detallara los pasos a
desarrollar.

1. Crear un proyecto en Netbeans que se va a llamar CarritoCompras y elegimos como servidor el Apache Tomcat. File
New Proyect
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


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 de
un vector de Productos y de un vector de Clientes y se almacenara en una sesin toda esa informacin.

La sesin que almacenara el Vector de Usuarios recibir el nombre de usuarios y ser del tipo Vector<Usuario>.
La sesin que almacenara el Vector de Productos recibir el nombre de productos y ser del tipo Vector<Producto>.

5.1. Mtodo que va inicializar vector de productos

Vector<Usuario> usuarios=null;
//Mtodo 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);
}
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5.2. Mtodo que va inicializar el vector de usuarios

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.3. En el mtodo init llamaremos a los dos mtodos que hemos creado anteriormente para inicializar por primera vez a
los vectores de usuarios y de clientes y el mtodo doGet llamaremos al mtodo 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);
}
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

5.4. En el mtodo doPost validaremos la informacin que enviamos desde la pgina login.html. Para eso validamos el
usuario y la clave que ha sido enviado con esa pgina y recorremos todo nuestro vector de usuarios para encontrar si
hay un usuario con esa clave, adems se obtendr la sesin o se creara una nueva sesin si fuera el caso y
almacenaremos los vectores de usuarios, productos y el usuario que iniciara sesin.

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


String clave = request.getParameter("txtClave");
String direccion="error.html";
//Creamos la sesin 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 pgina de Cliente
direccion="ServletCConProd";
} else {
//Ir a la pgina de Empleado
direccion="ServletEConProd";
}
break;
}
}
//Mando a la pagina segn corresponda
response.sendRedirect(direccion);
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

6. Si inicia sesin 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>");
}
}
....
....
....
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry
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 pgina se
mostrara gracias a un Servlet que llamaremos ServletCAgrCarrito1, despus 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 mtodo doPost tendr el siguiente cdigo.

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();
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

8. Cuando damos en Finalizar Compra, se deber actualizar los stocks de los productos que tenamos. El encargado de
actualizar los stocks ser un Servlet que lo llamaremos ServletCFinalizarCompra. Cuyo mtodo 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 informacin
productos.add(indiceActualizar, prodTemp);
}
//Actualizo mi sesin que tiene el vector de productos
sesion.setAttribute("productos", productos);
//Elimino la sesin que tenia informacin del carrito de compras
sesion.removeAttribute("carrito");
PrintWriter out=response.getWriter();
imprimarPagina(out, productos);
out.close();
PAW Sesiones y Arreglos Ing. Wong Urquiza, Henry

Vous aimerez peut-être aussi