Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/03/2012, 19:33
cristaken
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Error buscando Servlet - Apache

Hola, Gracias por responder.

Creo que si esta bien la ruta.

El codigo del servlet controlador es:

Cita:
package Controlador;

import Modelo.DetalleVenta;
import Modelo.Producto;
import Modelo.ProductoBD;
import Modelo.Venta;
import Modelo.VentaBD;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;



public class Controlador extends HttpServlet {

//Para controlar peticiones del tipo GET
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
//Para controlar peticiones del tipo POST
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
//Un metodo que recibe todas las peticiones a si sea GET y POST
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//La accion se va a guardar en un caja de texto oculto que nos dira que accion
//debemos hacer
String accion = request.getParameter("accion");
if (accion.equals("RegistrarProducto")) {
this.registrarProducto(request, response);
} else if (accion.equals("ModificarProducto")) {
this.actualizarProducto(request, response);
} else if (accion.equals("AnadirCarrito")) {
this.añadirCarrito(request, response);
} else if (accion.equals("RegistrarVenta")) {
this.registrarVenta(request, response);
}

}
//Metodo que sirve para registrar un producto
private void registrarProducto(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Producto p = new Producto();
//request.getParameter --> Sirve para obtener los valores de las cajas de texto
p.setNombre(request.getParameter("txtNombre").toUp perCase());
p.setPrecio(Double.parseDouble(request.getParamete r("txtPrecio")));
boolean rpta = ProductoBD.insertarProducto(p);
if (rpta) {
//Si inserto lo redireccionamos a otra pagina que se llama "mensaje.jsp"
response.sendRedirect("mensaje.jsp?men=Se registro del producto de manera correcta");
} else {
//Si no se inserto lo redireccionamos a otra pagina que se llama "mensaje.jsp"
response.sendRedirect("mensaje.jsp?men=No se registro el producto");
}
}
//Metodo que sirve para actualizar un producto
private void actualizarProducto(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Producto p = new Producto();
p.setCodigoProducto(Integer.parseInt(request.getPa rameter("txtCodigo")));
p.setNombre(request.getParameter("txtNombre").toUp perCase());
p.setPrecio(Double.parseDouble(request.getParamete r("txtPrecio")));
boolean rpta = ProductoBD.actualizarProducto(p);
if (rpta) {
response.sendRedirect("mensaje.jsp?men=Se actualizo el producto de manera correcta");
} else {
response.sendRedirect("mensaje.jsp?men=No se actualizo el producto");
}
}
//Sirve para añadir un detalle al carrito
//La informacion del carrito de compras se guarda en una sesion
private void añadirCarrito(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Obtenemos la sesion actual
HttpSession sesion = request.getSession();
ArrayList<DetalleVenta> carrito;
//Si no existe la sesion creamos al carrito de cmoras
if (sesion.getAttribute("carrito") == null) {
carrito = new ArrayList<DetalleVenta>();
} else {
carrito = (ArrayList<DetalleVenta>) sesion.getAttribute("carrito");
}
//Obtenemos el producto que deseamos añadir al carrito
Producto p = ProductoBD.obtenerProducto(Integer.parseInt(reques t.getParameter("txtCodigo")));
//Creamos un detalle para el carrtio
DetalleVenta d = new DetalleVenta();
//Obtenemos los valores de la caja de texto
d.setCodigoProducto(Integer.parseInt(request.getPa rameter("txtCodigo")));
d.setProducto(p);
d.setCantidad(Double.parseDouble(request.getParame ter("txtCantidad")));
//Calculamos el descuento, si es sub detalle es mayor a 50 se le hace
//un descuento del 5% aca es donde se encuentra la logica del negocio
double subTotal = p.getPrecio() * d.getCantidad();
if (subTotal > 50) {
d.setDescuento(subTotal * (5D / 100D));
} else {
d.setDescuento(0);
}
//Sirva para saber si tenemos agregado el producto al carrito de compras
int indice = -1;
//recorremos todo el carrito de compras
for (int i = 0; i < carrito.size(); i++) {
DetalleVenta det = carrito.get(i);
if (det.getCodigoProducto() == p.getCodigoProducto()) {
//Si el producto ya esta en el carrito, obtengo el indice dentro
//del arreglo para actualizar al carrito de compras
indice = i;
break;
}
}
if (indice == -1) {
//Si es -1 es porque voy a registrar
carrito.add(d);
} else {
//Si es otro valor es porque el producto esta en el carrito
//y vamos actualizar la
carrito.set(indice, d);
}
//Actualizamos la sesion del carrito de compras
sesion.setAttribute("carrito", carrito);
//Redireccionamos al formulario de culminar la venta
response.sendRedirect("registrarVenta.jsp");
}
//Metodo que sirve para registrar toda la venta en la base de datos
private void registrarVenta(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession sesion = request.getSession();
Venta v=new Venta();
v.setCliente(request.getParameter("txtCliente").to UpperCase());
ArrayList<DetalleVenta> detalle = (ArrayList<DetalleVenta>) sesion.getAttribute("carrito");
boolean rpta=VentaBD.insertarVenta(v, detalle);
if (rpta) {
response.sendRedirect("mensaje.jsp?men=Se registro la venta de manera correcta");
} else {
response.sendRedirect("mensaje.jsp?men=No se registro la venta");
}
}


}
Y el del JSP RegistraProducto es:

Cita:
<%@page import="java.util.ArrayList"%>
<%@page import="Modelo.*" %>
<%@page import="java.util.*" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>.:Programando con Café - Carrito de Compras - Ing. Henry Wong</title>
</head>
<body>
<h1>Programando con Café<br>Ing. Henry Joe Wong Urquiza</h1>
<div>
<a href="index.jsp">Inicio</a> |
<a href="registrarProducto.jsp">Registrar Producto</a> |
<a href="registrarVenta.jsp">Registrar Venta</a> |
<a href="verVentas.jsp">Consultar Ventas</a> |
<a href="Reporte">Reporte Producto</a>
</div>
<br >
<%-- En el action del formulario le decimos que llama al Controlador --%>
<form method="post" action="Controlador">
<div>
<input type="hidden" name="accion" value="RegistrarProducto" />
<table border="1">
<tr>
<td>Nombre</td>
<td><input type="text" name="txtNombre" value="" /></td>
</tr>
<tr>
<td>Precio</td>
<td><input type="text" name="txtPrecio" value="0" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Registrar" name="btnRegistrar" /></td>
</tr>
</table>
</div>
</form>

</body>
</html>
En este ultimo al enviar el request para insertar un producto nuevo sale el error mencionado.