carrito sesiones
-
Upload
boris-rojas-aguilar -
Category
Documents
-
view
172 -
download
0
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();