Conectarme a MySQL por Servlet

Iniciado por Aikanáro Anário, 12 Abril 2012, 06:01 AM

0 Miembros y 1 Visitante están viendo este tema.

Aikanáro Anário

Estoy trabajando con Eclipse EE y Tomcat 7 en el localhost.
Ahora mismo estoy tratando de hacer que el login funcione.

Tengo mi clase conexión:

Código (java) [Seleccionar]

package edu.itla.diaz.modelo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexion {

private static Connection conexion = null;

private Conexion() {

}

public static Connection getInstancia() {
if (conexion == null) {
try {
Class.forName("com.mysql.jdbc.Driver");

conexion = DriverManager.getConnection(
"jdbc:mysql://localhost/Esquema_VentaLibros","gustavo", "123581321");

} catch (SQLException sqlex) {
sqlex.printStackTrace();
} catch(ClassNotFoundException cnfex) {
cnfex.printStackTrace();
}
return conexion;
}
else {
return conexion;
}
}

}


Tengo una clase donde pienso poner todas las consultas que vaya necesitar. Ahora mismo solo tengo el método para hacer login:
Código (java) [Seleccionar]

package edu.itla.diaz.modelo;

import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ListaDeQueries {

private static PreparedStatement pst;
private static String query = "";

public static boolean loguear(String nombreUsr, String claveUsr) {
query = "select * from Usuario where nombreUsr = ? and claveUsr = ?";

try {
pst = Conexion.getInstancia().prepareStatement(query);
pst.setString(1, nombreUsr);
pst.setString(2, claveUsr);
pst.executeQuery();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}

}

}


Y tengo un servlet con el método para loguearse (doPost) que dependiendo si el login es correcto o no presenta uno u otro JSP.

Código (java) [Seleccionar]

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if(ListaDeQueries.loguear(request.getParameter("usuario"), request.getParameter("clave"))) {
request.getRequestDispatcher("Bienvenido.jsp").forward(request, response);
}
else {
request.getRequestDispatcher("AccesoDenegado.jsp").forward(request, response);
}
}


Pero me da el error de ClassNotFoundException: com.mysql.jdbc.Driver. Ya importé el Jar correctamente en el proyecto. Al menos que haya que hacer algo distinto cuando se está trabajando con Java EE (es la primera vez que lo uso), pero si no debe de estar bien. Fui a propiedades del proyecto > Java Build Path > Libraries > Add externals JARs... y pusé el jar de mysql que he usado en otros proyectos (este: http://www.mysql.com/downloads/connector/j/). No sé porque me da ese error.

Talvez es porque mi clase conexión tambien debe ser un Servlet, o sea extender de extends HttpServlet y tener los métodos doPost y doGet???
Lo que faltaba en internet: http://binar10s.blogspot.com/

visualfree

donde has dejado el jar?...

te recomiendo dejarlo en lib ...

Aikanáro Anário

Cita de: visualfree en 12 Abril 2012, 08:58 AM
donde has dejado el jar?...

te recomiendo dejarlo en lib ...

¿En lib? El jar está en la carpeta donde se descomprimio el conector que bajé de la página de MySQL, y esa carpeta está dentro de la carpeta del proyecto de Eclipse.
Lo que faltaba en internet: http://binar10s.blogspot.com/

Proteus1989

Cita de: Aikanáro Anário en 12 Abril 2012, 18:09 PM
¿En lib? El jar está en la carpeta donde se descomprimio el conector que bajé de la página de MySQL, y esa carpeta está dentro de la carpeta del proyecto de Eclipse.

Pero está importado como external Jar al proyecto no?

Aikanáro Anário

#4
Cita de: Proteus1989 en 12 Abril 2012, 21:47 PM
Pero está importado como external Jar al proyecto no?

Sí.


Cita de: visualfree en 12 Abril 2012, 08:58 AM
donde has dejado el jar?...

te recomiendo dejarlo en lib ...

Hubieras sido más específico. El conector (la librería jar de MySQL) lo estaba importando como antes dije, agregandolo desde Add External JARs... en el Java Build Path, pero así no funciona, lo que hay que hacer es copiar el .jar del conector MySQL en la carpeta WebContent > WEB-INF > lib del proyecto y ahí funcionó.
Lo que faltaba en internet: http://binar10s.blogspot.com/

lluvplay

Hola respetado amigo !!! Creo que tu problema se genera cuando usas el driver de la pagina de Mysql !!!

estas trabajando
CitarClass.forName("com.mysql.jdbc.Driver");
y eso es para sql !!! Según lo que por mi practica concierne ( Anexo ningún documento me ha dicho eso solo fue jugando con mi necesidad de conocimiento asi que no se el porque de esto )

*Si estas usando Mysql debería ser
CitarClass.forName("org.gjt.mm.mysql.Driver");
Espero que puedas solucionar tu problema :D
* Determinismo Causal !! Estamos Programados Para Necesitar Respuestas!!

* No deberías copiar un código, sin antes haber comprendido porque funciona de esa manera !