Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Aikanáro Anário en 12 Abril 2012, 06:01 am



Título: Conectarme a MySQL por Servlet
Publicado por: Aikanáro Anário en 12 Abril 2012, 06:01 am
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
  1. package edu.itla.diaz.modelo;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.SQLException;
  6.  
  7. public class Conexion {
  8.  
  9. private static Connection conexion = null;
  10.  
  11. private Conexion() {
  12.  
  13. }
  14.  
  15. public static Connection getInstancia() {
  16. if (conexion == null) {
  17. try {
  18. Class.forName("com.mysql.jdbc.Driver");
  19.  
  20. conexion = DriverManager.getConnection(
  21. "jdbc:mysql://localhost/Esquema_VentaLibros","gustavo", "123581321");
  22.  
  23. } catch (SQLException sqlex) {
  24. sqlex.printStackTrace();
  25. } catch(ClassNotFoundException cnfex) {
  26. cnfex.printStackTrace();
  27. }
  28. return conexion;
  29. }
  30. else {
  31. return conexion;
  32. }
  33. }
  34.  
  35. }
  36.  

Tengo una clase donde pienso poner todas las consultas que vaya necesitar. Ahora mismo solo tengo el método para hacer login:
Código
  1. package edu.itla.diaz.modelo;
  2.  
  3. import java.sql.PreparedStatement;
  4. import java.sql.SQLException;
  5.  
  6. public class ListaDeQueries {
  7.  
  8. private static PreparedStatement pst;
  9. private static String query = "";
  10.  
  11. public static boolean loguear(String nombreUsr, String claveUsr) {
  12. query = "select * from Usuario where nombreUsr = ? and claveUsr = ?";
  13.  
  14. try {
  15. pst = Conexion.getInstancia().prepareStatement(query);
  16. pst.setString(1, nombreUsr);
  17. pst.setString(2, claveUsr);
  18. pst.executeQuery();
  19. return true;
  20. } catch (SQLException e) {
  21. e.printStackTrace();
  22. return false;
  23. }
  24.  
  25. }
  26.  
  27. }
  28.  

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
  1. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  2. throws ServletException, IOException {
  3. if(ListaDeQueries.loguear(request.getParameter("usuario"), request.getParameter("clave"))) {
  4. request.getRequestDispatcher("Bienvenido.jsp").forward(request, response);
  5. }
  6. else {
  7. request.getRequestDispatcher("AccesoDenegado.jsp").forward(request, response);
  8. }
  9. }
  10.  

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???


Título: Re: Conectarme a MySQL por Servlet
Publicado por: visualfree en 12 Abril 2012, 08:58 am
donde has dejado el jar?...

te recomiendo dejarlo en lib ...


Título: Re: Conectarme a MySQL por Servlet
Publicado por: Aikanáro Anário en 12 Abril 2012, 18:09 pm
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.


Título: Re: Conectarme a MySQL por Servlet
Publicado por: Proteus1989 en 12 Abril 2012, 21:47 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?


Título: Re: Conectarme a MySQL por Servlet
Publicado por: Aikanáro Anário en 12 Abril 2012, 21:59 pm
Pero está importado como external Jar al proyecto no?

Sí.


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ó.


Título: Re: Conectarme a MySQL por Servlet
Publicado por: lluvplay en 19 Abril 2012, 15:27 pm
Hola respetado amigo !!! Creo que tu problema se genera cuando usas el driver de la pagina de Mysql !!!

estas trabajando
Citar
Class.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
Citar
Class.forName("org.gjt.mm.mysql.Driver");
Espero que puedas solucionar tu problema :D