Ayuda página JSP y Servlets

Tengo una página jsp en la cual se ingresa la información en un formulario y se debe enviar al Servlet para introducir la info en la BD.
Lo que pasa es que estaba trabajando el envío de la info al Servlet por medio de Ajax y no me funciona y lo quiero enviar directamente del JSP al Servlet pero no se como...
Espero me podas ayudar...
Esto es parte del código del jsp... Omití la parte del html ya que no es importante.
Mil gracias
-------------------------------------------------------------------------------------
<script language="javascript" src="js/cal2.js"></script>
<script language="javascript" src="js/cal_conf2.js"></script>
</head>
<body>
<form action="ingresarRecibo" method="post" name="form1" id="form1">
<table width="597" border="0" align="center">
<tr>
<th colspan="2" scope="col" class="simon">INGRESAR RECIBO</th>
</tr>
<tr>
<td height="101">Tipo de Recibo </td>
<td width="317">
<p>
<label>
<input type="radio" name="cbxTipo" value="permiso" />
Construcción</label>
<br />
<label>
<input type="radio" name="cbxTipo" value="otro" />
Observado</label>
</p>
<label></label></td>
</tr>
<tr>
<td>Fecha</td>
<td colspan="2"><input name="txtFecha" type="text" disabled size=20>
<a href="javascript:showCal('Calendario')"><img src="images/calend.jpeg" border="0" width="25" height="25"></a></td>
</tr>
<tr>
<td>Interesado</td>
<td colspan="2"><input name="txtInteresado" type="text" id="txtInteresado" size="50" /></td>
</tr>
<tr>
<td height="51" colspan="3">
<div align="center">
<input type="submit" name="Submit4" value="Ingresar" onClick="ingresarRecibo.java" />
</div>
<div align="center"></div>
</td>
</tr>
<tr>
<td height="37" colspan="3">
<div align="center">
<input type="submit" name="Submit32" value="Salir" />
</div>
</td>
</tr>
</table>
<p> </p>
<p> </p>
</form>

1 Respuesta

Respuesta
1
Tienes que quitar esta sentencia
onClick="ingresarRecibo.java"
Y en este ejemplo no estas usando ajax, simplemente haces un llamado al servlet por medio del método submit de un formulario, por lo que directamente va a ser enviado al doPost del servlet.
Para usar ajax tienes que incluir alguna librería de ajax, sin embargo si le quitas ese código al botón ya te va a funcionar, un servlet nunca debe ser llamado con la extensión .java, ya que para eso esta configurado en el web.xml en servletName, ligado al servletClass que es la ruta donde se encuentra el servlet.
Si lo que deseas es usar ajax, tienes que usar esta libreria http://www.prototypejs.org/api/ajax/updater es de muy facil uso.
Hola y gracias por responder tan pronto...
Efectivamente en este caso había eliminado todo lo de Ajax ya que anteriormente no me funcionó.
Ya hice lo que me solicitaste pero al darle click en "Ingresar" aparece que la página no puede ser encontrada... Te remito de nuevo el código y de nuevo mil gracias...
-------------------------------------------
<html>
<head>
<title>SMO</title>
<link href="css/smo.css" rel="stylesheet" type="text/css" />
<script language="javascript" src="ingresarRecibo"></script>
<script language="javascript" src="js/cal2.js"></script>
<script language="javascript" src="js/cal_conf2.js"></script>
</head>
<body>
<form action="ingresarRecibo" method="post" name="form1" id="form1">
<table width="597" border="0" align="center">
<tr>
<th colspan="2" scope="col" class="simon">INGRESAR RECIBO</th>
</tr>
<tr>
<td height="101">Tipo de Recibo </td>
<td width="317">
<p>
<label>
<input type="radio" name="cbxTipo" value="Permiso" />
Construcción</label>
<br />
<label>
<input type="radio" name="cbxTipo" value="otro" />
Urbanismo</label>
<br />
<tr>
<td>Fecha</td>
<td colspan="2"><input name="txtFecha" type="text" disabled size=20>
<a href="javascript:showCal('Calendario')"><img src="images/calend.jpeg" border="0" width="25" height="25"></a></td>
</tr>
<tr>
<td>Interesado</td>
<td colspan="2"><input name="txtInteresado" type="text" id="txtInteresado" size="50" /></td>
</tr>
<tr>
<td height="51" colspan="3">
<div align="center">
<input type="submit" name="Submit4" value="Ingresar">
</div>
<div align="center"></div>
</td>
</tr>
<tr>
<td height="37" colspan="3">
<div align="center">
<input type="submit" name="Submit32" value="Salir" />
</div>
</td>
</tr>
</table>
<p> </p>
<p> </p>
</form>
</body>
</html>
REvisa el web.xml y observa si el mapeo esta correcto
Según aparece el Web.xml aparece correcto
- Para el servlet.
display-name y server name: IngresarRecibo
Servlet class: servlets.IngresarRecibo
- Para Servlet mapping
servlet name: IngresarRecibo
urlpattern: /IngresarRecibo
Entonces no se que es lo que no funciona porque sigue apareciendo como que no encuentra la pag.. error 404... de todas formas checa el cod del servlet si hay algún error:
package servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.io.PrintWriter;
import java.sql.SQLException;
import daos.ReciboDAO;
import dtos.ReciboDTO;
import exceptions.ConnectionException;
public class IngresarRecibo extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
 private static final long serialVersionUID = -7725859922727675249L;
 public IngresarRecibo() {
  super();
 } 
 protected void processRequest(HttpServletRequest request,
  HttpServletResponse response) throws ServletException, IOException, ParseException {
  response.setContentType("text/html;charset=UTF-8");    
  ReciboDTO reciboDTO = new ReciboDTO();
  int codigo;
  reciboDTO.setStr_tipo_rob(request.getParameter("cbxTipo"));
  reciboDTO.setStr_interesado_rob(request.getParameter("txtInteresado"));
  reciboDTO.setStr_fecha_rob(request.getParameter("txtFecha"));
  try{
    ReciboDAO reciboDAO = new ReciboDAO();
    codigo = reciboDAO.insertarRecibo(reciboDTO);
    PrintWriter out = response.getWriter();
    if(codigo != -1){
     out.print("Datos Ingresados"); 
    }else{
      /*Lanzar excepción al ingresar.*/
      out.print("Error al Ingresar los Datos");
    }
    out.close();
    }catch (ConnectionException ce) {
     request.setAttribute("error", ce);
     request.getRequestDispatcher("/jsp/Error.jsp").forward(request,response);
    } catch (SQLException sqle) {
     request.setAttribute("error", sqle);
     request.getRequestDispatcher("/jsp/Error.jsp").forward(request, response);
    }
   }
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }   
 /* (non-Java-doc)
  * @see javax. Servlet. http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }          
}
--------------
Gracias! Y disculpa la molestia
Agrega este código en el método doGet() y en el método doPost()
processRequest(request,response);
En el Html cambia esta linea de codigo
<form action="ingresarRecibo" method="post" name="form1" id="form1">
por esta
<form action="IngresarRecibo" method="post" name="form1" id="form1">
si tampoco te sirviera entonces lo cambias por esta
<form action="/IngresarRecibo" method="post" name="form1" id="form1">
Este ultimo cambio depende del servidor, porque por ejemplo la configuración del tomcat es diferente a la del glassfish, por esta razón algunos servidores necesitan que se implemente el llamado con el "/"
La linea de código que me indicaste ya la había cambiado por IngresarRecibo y aparentemente funcionaba, pues al menos en algo cambio, ya cambia pero la página se queda en blanco y no aparece ningún mensaje.
Intente agregar las dos lineas de código que me decís pero me aparece error, el eclipse lo cambio como try/catch pero al procesar arrojo error 500 con esta excepción
java.lang. NumberFormatException: null java.lang.Integer. parseInt(Unknown Source) java.lang.Integer. parseInt(Unknown Source) servlets.IngresarRecibo.processRequest(IngresarRecibo.java:67) servlets.IngresarRecibo.doPost(IngresarRecibo.java:112) javax. Servlet. http.HttpServlet.service(HttpServlet.java:709) javax. Servlet. http.HttpServlet.service(HttpServlet.java:802)
Entonces no se que paso o que hacer .... mira como quedo la linea de codigo que el eclipse reemplazó
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
processRequest(request,response);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Estamos bien, ya se esta ejecutando el servlet correctamente, el error que muestra no es en el servlet, sino en las clases java, porque en alguna de ellas tratas de setear algún valor numérico y lo que estas enviando es una cadena de texto, al parecer esto puede estar pasando en el cbxTipo, porque lo que lleva es un string con "Permiso" o "otro", si la clase lo manipula con un integer lógicamente va a dar error.
Lo que te recomiendo es usar como value en el combo un numérico y no un string así cambia esto
<label><input type="radio" name="cbxTipo" value="0" />Construcción</label>
<br />
<label><input type="radio" name="cbxTipo" value="1" />Urbanismo</label>
Creo que con eso ya se podría reparar, el error, pero el servlet se esta ejecutando, puedes depurarlo también a ver en que linea exactamente es que se está cayendo
Pues según veo entonces el código puede ser con el calendario que tengo... voy a verificar porque entonces no está haciendo la conversión de fecha a string
¿Por casualidad no tienes un calendario que haga esta función y que realmente funcione? :-)
Estaré verificando esto y cuando resulte algo te lo comunico
Tal vez este te pueda servir
http://www.mygnet.net/codigos/js/varios/calendario_javascript.2319
Hola de nuevo!
Ya sorteando algunos errores que han aparecido no he podido con uno en especial. Se genera al momento de realizar la inserción de datos y según parece es con la conexión al momento de cargar el driver. La verdad no se como solucionarlo y estuve todo el fin de semana intentando por todos los medios... ¿Me podes colaborar?
Te paso el error que aparece y la parte de la conx que genera el error.
Error:
Probando conexión
exceptions.ConnectionException
at daos.Conexion.conectarBD(Conexion.java:121)
LINEA DE LA CONEXIÓN
public boolean conectarBD()throws ConnectionException {
try {
System.out.println("probando conexion");
Class.forName("jdbc.driver.OracleDriver");
con = DriverManager.getConnection "jdbc:oracle:thin:@"+server+":"+port+":"+url,login,password);
return true;
}
AQUI ES EL ERORR ---->
catch (ClassNotFoundException cnfe) {
throw new ConnectionException("Ha ocurrido un error al cargar el driver de Oracle. Error:" + cnfe.getMessage());
}catch (SQLException sqle) {
throw new ConnectionException("Ha ocurrido un error al intentar conectarse con Oracle. Error:" + sqle.getMessage());
}
/*/catch (Exception e) {*/
}
Este es otro tema, califica este y creo que ya abriste otro, entonces podemos seguir en el otro
Ok... Aunque no he abierto otro tema... Pero igual entonces te lo consultaré...
Mil gracias por la ayuda que me diste en esta parte del proceso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas