Fala galera!!
Estou estudando servlets e fiz uma tela de login com jsp. Fiz um servlet que recebe os dados do form e utiliza um JavaBean, chamado userBean, para setar usuário e senha. Criei uma classe Dao que recebe o userBean do servlet. Na classe Dao através dos gests do bean eu recupero os dados de usuário e senha, com isto eu faço uma conexão com o banco e verifico a validade dos dados.
Source do servlet:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
//recebo os valores contidos no formulário de login
String strLogin = req.getParameter("cmpLogin");
String strPassword = (String) req.getParameter("cmpPassword");
//instancio um objeto do tipo Dao para autenticar o usuário
clBaseDao userDao = new clBaseDao();
//instancio um objeto do tipo bean para setar os parâmetros de senha e usuário
beanUser usuario = new beanUser();
//set dos parametros
usuario.setStrLogin(strLogin);
usuario.setStrPassword(strPassword);
//passo para o dao o objeto usuário para autenticação
userDao.daoAutentica(usuario);
//teste para verificar parâmetros
System.out.println("Login do servlet:" + strLogin);
System.out.println("Password do servlet:" + strPassword);
if((strLogin != null) && (strPassword != null) ){
resp.sendRedirect("frmPesquisa.jsp");
}
else
System.out.println("Error");
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}//doPost
Bom, para testar a conexão com o banco de dados, mysql, fiz uma classe chamada TestConnection.java nela contém o seguinte código:
[code]
public static void main(String[] args) throws SQLException {
Connection connection = new ConnectionDb().getConnection();
String sql = "Select * from tbllogin";
PreparedStatement smt = (PreparedStatement) connection.prepareStatement(sql);
ResultSet resultado = smt.executeQuery();
while(resultado.next()){
System.out.println
(resultado.getString("Login") + " :: " + resultado.getString("Senha"));
}
connection.close();
smt.close();
resultado.close();
}[/code]
Quando vou testar esta classe eu uso o recurso “Run as Java Aplication” do Eclipse e no console os dados são exibidos corretamente. Na classe ConnectionDb tem-se o seguinte código:
[code]
Connection conexao = null;
public Connection getConnection() {
System.out.println("Conectando ao banco");
try {
return DriverManager.getConnection("jdbc:mysql://localhost/bdteste", "root", "root123");
}
catch(SQLException e) {
throw new RuntimeException(e);
}[/code]
Então criei um classe chamada buscaDao em que eu recebo os dados do servlet e executo a mesma tarefa. Eis o source:
[code]public Boolean daoAutentica(beanUser usuario) throws SQLException {
try {
Connection connection = new ConnectionDb().getConnection();
String sql = "Select * from tbllogin";
PreparedStatement smt = (PreparedStatement) connection.prepareStatement(sql);
ResultSet resultado = smt.executeQuery();
//teste para saber se os dados foram transferidos com sucesso
System.out.println("Login do Dao:" + usuario.getStrLogin());
System.out.println("Password do Dao:" + usuario.getStrPassword());
System.out.println("");
while(resultado.next()){
System.out.println
(resultado.getString("Login") + " :: " + resultado.getString("Senha"));
}
connection.close();
smt.close();
resultado.close();
System.out.println("Encerrando conexão com o banco");
connection.close();
}
catch (Exception e) {
// TODO: handle exception
System.out.println("Erro no Dao");
e.printStackTrace();
}
return null;
}[/code]
No entando quando digito a senha e o login na jsp e executo aparece o seguinte erro:
Conectando ao banco
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/bdtest
at classes.ConnectionDb.getConnection(ConnectionDb.java:24)
at classes.clBaseDao.main(clBaseDao.java:16)
at servlets.svlAutentica.doPost(svlAutentica.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/bdtest
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at classes.ConnectionDb.getConnection(ConnectionDb.java:21)
… 16 more
Onde estou errando ?!
Vlw
xe
O problema estava no TomCat, eu não havia copiado o .jar do mysql para dentro do lib do conteiner. Como eu havia adicionado o jar para o projeto quando eu executava em Java Aplication ele funcionava, mas como no TomCat não tinha o jar então dava o erro !!! Obrigaddoo