Boa noite,
Estou estudando Java Web pela Apostila FJ21 da Caelum. O problema é quando executo o projeto pela web(acessando o site pelo navegador) ocorre erro não encontrando o drive do Mysql.
Se executar uma classe de teste direto no Eclipse, não da erro.
O .jar já está na pasta WEB-INF/lib.
****************************Erro:
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:14)
br.com.caelum.jdbc.teste.TesteConexao.testarConexao(TesteConexao.java:17)
br.com.caelum.servlet.adicionaContatoServlet.service(adicionaContatoServlet.java:58)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
*****************************Códigos:
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String email = request.getParameter("email");
Calendar dataNascimento = null;
try{
String dataEmTexto = request.getParameter("dataNascimento");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
} catch(ParseException e){
out.println("Erro na conversão da data");
return;
}
Contato contato = new Contato();
contato.setNome(nome);
contato.setEndereco(endereco);
contato.setEmail(email);
contato.setDataNascimento(dataNascimento);
ContatoDao dao = new ContatoDao();
dao.adiciona(contato);
out.println("<html>");
out.println("<body>");
out.println("Contato " + contato.getNome() + " adicionado com sucesso.");
out.println("</html>");
out.println("</body>");
}
}
public class ContatoDao {
private Connection connection = null;
public ContatoDao() {
System.out.println("TENTOU CONECTAR");
this.connection = new ConnectionFactory().getConnection();
System.out.println("Conectou no banco de dados - Construtor - ContratoDao");
}
public void adiciona(Contato contato) {
String sql = "INSERT INTO contatos "
+ "(nome, email, endereco, dataNascimento)"
+ " VALUES (?, ?, ?, ?)";
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, (java.sql.Date) new Date(contato.getDataNascimento().getTimeInMillis()));
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public class ConnectionFactory {
public Connection getConnection() {
try {
return DriverManager.getConnection(
"jdbc:mysql://localhost/fj21", "root", "mysql123");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
No console aparece “TENTOU CONECTAR” e gera a exceção.
Criei uma classe para executar direto no Eclipse, e reconhece o driver normalmente, porém tive que adicionar no projeto.
Alguém pode ajudar? Porque quando executo pelo servidor/navegador, não reconhece o drive?