Foros del Web » Programación para mayores de 30 ;) » Java »

Error buscando Servlet - Apache

Estas en el tema de Error buscando Servlet - Apache en el foro de Java en Foros del Web. Hola amigos de foros del web, tengo un pequeño problema que surgió al probar un carrito de compras en JSP, Estoy siguiendo este pequeño tutorial ...
  #1 (permalink)  
Antiguo 25/03/2012, 15:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 1
Pregunta Error buscando Servlet - Apache

Hola amigos de foros del web,

tengo un pequeño problema que surgió al probar un carrito de compras en JSP, Estoy siguiendo este pequeño tutorial para poder hacer un trabajo de la universidad:

http://www.programandoconcafe.com/20...p-y-mysql.html

Pero cuando ejecuto el proyecto me sale el siguiente error de apache:

http://www.largedocument.com/1/f16f2c2e/error.png


Al parecer no puede encontrar el servlet controlador.
Esto sale cuando intento registrar un producto a la base de datos. Ya revise las credenciales y funcionan, las librerías ya están todas arribas, No entiendo cual podría ser el problema y como solucionarlo.

El recurso del carrito esta aca:

http://dl.dropbox.com/u/8439638/Prog...ComprasJSP.rar

Mil gracias a quien pueda ayudarme.
  #2 (permalink)  
Antiguo 25/03/2012, 16:49
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 1 mes
Puntos: 12
Respuesta: Error buscando Servlet - Apache

Uf. Es dificil acertar con seguridad cual es el problema.

Aparentemente, eso es lo que dice Apache, la URL es erronea. No existe el recurso para ese nombre.

¿Estas seguro de que la URL es correcta?
- Puerto 8082 es el correcto
- El contexto de aplicacion se llama CarritoComprasJSP
- El servlet responde a ese patron URL

Revisa o muestranos la declaracion del servlet controlador.
  #3 (permalink)  
Antiguo 25/03/2012, 19:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 7 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.
  #4 (permalink)  
Antiguo 26/03/2012, 07:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Error buscando Servlet - Apache

La estructura de los datos del proyecto es así:


http://www.largedocument.com/1/47448...a_de_datos.png
  #5 (permalink)  
Antiguo 26/03/2012, 13:14
 
Fecha de Ingreso: marzo-2012
Mensajes: 1
Antigüedad: 12 años
Puntos: 1
Respuesta: Error buscando Servlet - Apache

Debe ser un error en el web.xml muy posiblemente es eso lo que esta pasando que no se esta registrando el pattern del servlet.

Seria que revisara eso y muy posiblemente eliminar y volver a crear el servlet es lo mas rapido y confiable.
  #6 (permalink)  
Antiguo 26/03/2012, 13:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Error buscando Servlet - Apache

Excelente, Si funciono.

Borre y cree de nuevo los servlet, copiando el mismo código y listo, arranco. Mil gracias.

No sabia que el xml tenia que registrar las rutas. ;)

Etiquetas: jsp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:29.