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

Por que me marca NullPointer en mi Servlet??

Estas en el tema de Por que me marca NullPointer en mi Servlet?? en el foro de Java en Foros del Web. Hola lo que pasa que ando haciendo un sistema de cita dentales, uso servlets , jsp y MySQL en BD, el problema es que el ...
  #1 (permalink)  
Antiguo 05/10/2012, 04:59
 
Fecha de Ingreso: febrero-2010
Mensajes: 31
Antigüedad: 14 años, 2 meses
Puntos: 0
Por que me marca NullPointer en mi Servlet??

Hola lo que pasa que ando haciendo un sistema de cita dentales, uso servlets , jsp y MySQL en BD, el problema es que el Servidor Apache Tomcat, me da el siguiente error:
Código:
oct 05, 2012 5:40:47 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() para servlet SvCitas lanzó excepción
java.lang.NullPointerException
	at SvCitas.doPost(SvCitas.java:133)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
La verdad no entiendo por que, les paso mi servlet que uso
  #2 (permalink)  
Antiguo 05/10/2012, 05:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 31
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Por que me marca NullPointer en mi Servlet??

Les anexo aca mi servlet:
Código:
public class SvCitas extends HttpServlet {
    
    private DataSource servicioConexiones;
    
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        try {
            // Recuperar el contexto inicial
            Context ctx = new InitialContext();
            // Referencia al servicio de conexiones
            servicioConexiones =
                    (DataSource) ctx.lookup("java:comp/env/jdbc/bdsgcd");
        } catch (Exception e) {
            throw new ServletException(
                    "Imposible recuperar java:comp/env/jdbc/bdsgcd", e);
        }
    }
    
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
       
        RequestDispatcher dispatcher =
                request.getRequestDispatcher("/Sistema.jsp");
        if (dispatcher != null) {
            dispatcher.forward(request, response);
        }
        
    }

    // Este es el método que se encarga de procesar las peticiones del
    // cliente enviadas a través de los formularios que se presentan en las
    // páginas HTML generadas a partir de las páginas JSP  
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        // Obtenemos la sesión con que está trabajando el cliente en esta
        // petición HTTP
        HttpSession sesion = request.getSession(true);
        BeanBDOdontologia bBDLib = null;
        String operFallida = new String("SI");
        RequestDispatcher dispatcher = null;
        
        try {
            // Realizar una conexión con la BD
            bBDLib = new BeanBDOdontologia(servicioConexiones);
            String boton = request.getParameter("boton");
            // Dependiendo del estado en que se encuentre la compra, es decir,
            // desde la página JSP que se haya invocado, se seleccionará la
            // siguiente página a enviar al navegador del cliente
            if (boton == null || boton.equals("Ingresar")) {


                // Obtener los datos enviados por el cliente.
                String sUser = request.getParameter("user");
                String sPwd = request.getParameter("pass");
                if (sUser.toLowerCase().indexOf("'or true or'") != -1
                        || sPwd.toLowerCase().indexOf("'or true or'") != -1) {
                    request.setAttribute("mensaje", new String("Los datos introducidos son incorrectos."));
                    dispatcher = request.getRequestDispatcher("/MostrarMensaje.jsp");
                } else {
                    // Comprobamos si el usuario ya estaba registrado en el archivo de usuarios
                    ResultSet cdr = bBDLib.comprobarUser(sUser, sPwd);
                    
                    if (cdr.next()) {
                        // Responder al cliente
                        String g;
                        operFallida = new String("NO");
                        request.setAttribute("operacionFallida", operFallida);
                        request.setAttribute("nick", sUser);
                        request.setAttribute("rol", cdr.getString("Rool"));
                        g = cdr.getString("Rool");
                        if (g.contains("Admin")) {
                            dispatcher = request.getRequestDispatcher("/SistemaAdministrador.jsp");
                        } else if (g.contains("Medico")) {
                            dispatcher = request.getRequestDispatcher("/SistemaMedico.jsp");
                        } else if (g.contains("Paciente")) {
                            dispatcher = request.getRequestDispatcher("/SistemaPaciente.jsp");
                        }
                    } else {
                        request.setAttribute("mensaje", new String("Los datos introducidos son incorrectos."));
                        request.setAttribute("pagina", new String("/index.jsp"));
                        dispatcher = request.getRequestDispatcher("/MostrarMensajes.jsp");
                    }
                    
                    
                    
                }
            } else if (boton.equals("Registrar")) {
                if (!registroUsuario(request, bBDLib)) {
                    request.setAttribute("mensaje", new String("Los datos introducidos son incompletos."));
                    request.setAttribute("pagina", new String("/SistemaAdministrador.jsp"));
                    dispatcher = request.getRequestDispatcher("/MostrarMensajes.jsp");
                } else {
                    request.setAttribute("mensaje", new String("Usted ya está registrado en el sistema."));
                    request.setAttribute("pagina", new String("/SistemaAdministrador.jsp"));
                    dispatcher = request.getRequestDispatcher("/MostrarMensajes.jsp");
                }
            }
            
            if (dispatcher != null) {
                dispatcher.forward(request, response);
            }
        } catch (SQLException e) {
            System.out.println("Error SQL: " + e.getMessage());
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
            System.out.println("Error: " + e.getCause());
        } finally // pase lo que pase devolvemos la conexión
        {
            
                try {
                    bBDLib.cerrarConexion();--->AQui me da el error
                } catch (SQLException ex) {
                    Logger.getLogger(SvCitas.class.getName()).log(Level.SEVERE, null, ex);
                }
           
        }
    }
    
    public boolean registroUsuario(HttpServletRequest req, BeanBDOdontologia bBDLib) throws SQLException {
        BeanPaciente Usuario = null ;
        
        String sNom = req.getParameter("nombre");
        String sNick = req.getParameter("usuario");
        if (bBDLib.comprobarExU(sNick)) {
            int tlf = 0;
            int cp = 0;
            try {
                tlf = Integer.parseInt(req.getParameter("telefono"));
                cp = Integer.parseInt(req.getParameter("cp"));
            } catch (NumberFormatException e) {
                tlf = 0;
                cp = 0;
            }
            String sAPaterno = req.getParameter("apaterno");
            String sAMaterno = req.getParameter("amaterno");
            String sDir = req.getParameter("domicilio");
            String sexo = null;
            String sOpcion = req.getParameter("sexo");
            if (sOpcion == null || sOpcion.length() == 0) {
                System.out.println("\nError sexo\n");
                return false;
            }
            int Opcion = Integer.parseInt(sOpcion);
            switch (Opcion) {
                case 1:
                    sexo = "Masculino";
                    break;
                case 2:
                    sexo = "Femenino";
                    break;
                default:
                    break;
            }
            String sFecha = req.getParameter("fecha");
            String[] sFechas = sFecha.split("-");
            
            
            String sCURP = req.getParameter("curp");
            String Estado = null;
            String sOpcion2 = req.getParameter("EstadoCivil");
            if (sOpcion2 == null || sOpcion2.length() == 0) {
                           System.out.println("\nError Civil\n");
                return false;
            }
            int Opcion2 = Integer.parseInt(sOpcion2);
            switch (Opcion2) {
                case 1:
                    Estado = "Soltero";
                    break;
                case 2:
                    Estado = "Casado";
                    break;
                case 3:
                    Estado = "Viudo";
                    break;
                case 4:
                    Estado = "Divorciado";
                    break;
                default:
                    break;
            }
            
            String sOcupacion = req.getParameter("Ocupacion");
            String sPass = req.getParameter("pass");

                System.out.println("\nError iguales\n");
                return false;
        
                try {
                    String Fecha = null;
                    Fecha=sFechas[2]+"-"+sFechas[1]+"-"+sFechas[0];   
                    Usuario=new BeanPaciente(sNom, sAPaterno, sAMaterno, sDir, sexo, Fecha, sCURP, cp, Estado, sOcupacion, sNick, tlf, sPass);


                    bBDLib.RegistrarUsuarioPaciente(Usuario);
                } catch (SQLException e) {
                    System.out.println("Error SQLX: " + e.getMessage());
                
       
                return true;
            }
          }
        else{
                   System.out.println("\nError Usuario\n");
        return false;}
    }
    // Devuelve una descripción breve.

    public String getServletInfo() {
        return "Servlet SvCitas";
    }
Espero me puedan ayudar
  #3 (permalink)  
Antiguo 05/10/2012, 05:22
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Por que me marca NullPointer en mi Servlet??

¿Cual es la línea 133 "at SvCitas.doPost(SvCitas.java:133"?

Por ejemplo, esto puede devolver null "String sUser = request.getParameter("user");"
y cuando haces "if (sUser.toLowerCase() ... "

te dará un NullPointer porque sUser es null e intentas llamar a un método. Si sabes la línea 133, podrás saber exactamente qué variable estás intentando usar que es null.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 05/10/2012, 05:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 31
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Por que me marca NullPointer en mi Servlet??

Esta marcada,pero es esta:
bBDLib.cerrarConexion();
  #5 (permalink)  
Antiguo 05/10/2012, 05:33
 
Fecha de Ingreso: febrero-2010
Mensajes: 31
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Por que me marca NullPointer en mi Servlet??

De hecho lo extraño es que me aparece en mi proyecto (icono) signo de precaucion y da en esa linea, de hecho uso imagenes en los JSP pero con este error no me las muestra
  #6 (permalink)  
Antiguo 05/10/2012, 09:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Por que me marca NullPointer en mi Servlet??

Hola;

Pues en principio si la excepción es en esa línea es que bBDLib es null. Tal cual tienes el código, la única posibilidad es que la línea

bBDLib = new BeanBDOdontologia(servicioConexiones);

esté haciendo saltar una excepción, no se inicialice bBDLib, y al pasar al finally te salte la excepción. Revisa que ese new funciona bien y no da fallos. Deberías ver alguno de los System.out "Error..." que has puesto en los catch.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

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




La zona horaria es GMT -6. Ahora son las 11:12.