Boa noite galera
Estou aprendendo a desenvolver em Java para web, utilizando a apostila FJ21 da Caelum.
Estou seguindo o exercício da agenda, porém não estou conseguindo fazer a conexão com o banco, uma vez que ele sempre dispara a exceção informando que o driver não foi encontrado.
Segue o código:
ConnectionFactory.java
[code]package br.com.scarela.contato.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public Connection getConnection()
{
try
{
return DriverManager.getConnection(“jdbc:mysql//localhost/fj21”, “root”, “root”);
}
catch(SQLException e)
{
throw new RuntimeException(e);
}
}
}
[/code]
AdicionaContatoServlet.java
[code]package br.com.scarela.contato.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.scarela.contato.dao.ContatoDAO;
import br.com.scarela.contato.model.Contato;
public class AdicionaContatoServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String email = request.getParameter("email");
String dataEmTexto = request.getParameter("dataNascimento");
Calendar dataNascimento = null;
try
{
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
} catch(ParseException e)
{
out.println("Erro de conversão de data");
return;
}
Contato contato = new Contato();
contato.setNome(nome);
contato.setEmail(email);
contato.setEndereco(endereco);
contato.setDataNascimento(dataNascimento);
ContatoDAO dao = new ContatoDAO();
/*
dao.addContato(contato);
*/
out.println("<html>");
out.println("<body>");
//out.println("Contato " + contato.getNome() + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}
[/code]
ContatoDAO.java
[code]package br.com.scarela.contato.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.sql.Date;
import java.util.List;
import br.com.scarela.contato.model.Contato;
public class ContatoDAO {
private Connection connection;
//
public ContatoDAO()
{
this.connection = new ConnectionFactory().getConnection();
}
//
public void addContato(Contato contato)
{
String sql = "insert into contatos (nome,email,endereco,dataNascimento) values (?,?,?,?)";
//
try
{
PreparedStatement stmt = connection.prepareStatement(sql);
// preenche os valores
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
// executa
stmt.execute();
stmt.close();
System.out.println("Gravado!");
connection.close();
}
catch(SQLException e)
{
throw new RuntimeException(e);
}
}
//
public List<Contato> getLista() {
try {
List<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = this.connection.prepareStatement("select * from contatos");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// criando o objeto Contato
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
// montando a data através do Calendar
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
// adicionando o objeto à lista
contatos.add(contato);
rs.close();
stmt.close();
return contatos;
}}
catch (SQLException e) {
throw new RuntimeException(e);
}
return null;
}
}[/code]
web.xml
[code]<?xml version="1.0" encoding="UTF-8"?>
Agenda
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
<servlet>
<servlet-name>AdicionaContatoServlet</servlet-name>
<servlet-class>br.com.scarela.contato.servlet.AdicionaContatoServlet</servlet-class>
AdicionaContatoServlet
/adicionaContato
[/code]
O jar mysql-connector-java-5.1.15-bin.jar está devidamente na pasta WEB-INF/lib
Exceção disparada
[code]exception
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
br.com.scarela.contato.dao.ConnectionFactory.getConnection(ConnectionFactory.java:17)
br.com.scarela.contato.dao.ContatoDAO.(ContatoDAO.java:20)
br.com.scarela.contato.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
br.com.scarela.contato.dao.ConnectionFactory.getConnection(ConnectionFactory.java:13)
br.com.scarela.contato.dao.ContatoDAO.(ContatoDAO.java:20)
br.com.scarela.contato.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
[/code]
Podem me dizer, por favor, o que estou fazendo de errado?
Obrigado,
Renan.