ola pessoal tenhu um problema que tento resolver ha uma semana, mas ate o momento sem solucao, eu consigo gravar dados usando uma “classe teste” que chama o medoto “dao.adiciona” porem chamar este msm metodo em um servlet o sistema lanca uma excessao NotClassFound
este codigo retorna uma conexao
package br.com.caelum.jdbc;
import java.sql.*;
public class ConnectionFactory {
public Connection getConnection() throws ClassNotFoundException{
System.out.println("conectando ao banco");
try{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost/fj21","root","root");
}
catch (SQLException e){
throw new RuntimeException(e);
}
}
}
este é o codigo para setar as variaveis que serao salvas no banco
[code]package jdbc.modelo;
import java.util.Calendar;
public class Contato {
private long id;
private String nome;
private String email;
private String endereco;
private Calendar dataNascimento;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public Calendar getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Calendar dataNascimento) {
this.dataNascimento = dataNascimento;
}
}
[/code]
[color=orange]este codigo é onde estao os metodos de acesso ao banco de dados[/color]
[code]package jdbc.dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import jdbc.modelo.Contato;
import br.com.caelum.jdbc.ConnectionFactory;
public class ContatoDAO {
private Connection connection;
public ContatoDAO() throws ClassNotFoundException{
this.connection=new ConnectionFactory().getConnection();
}
[color=orange]public void adiciona (Contato contato){[/color]
String sql="insert into contatos (nome,email,endereco,dataNascimento) values (?,?,?,?)";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1, contato.getNome());
ps.setString(2, contato.getEmail());
ps.setString(3, contato.getEndereco());
ps.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis() ));
ps.execute();
ps.close();
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public List<Contato> getLista(){
try{
List<Contato> contatos=new ArrayList<Contato>();
PreparedStatement ps= this.connection.prepareStatement("select * from contatos");
ResultSet rs=ps.executeQuery();
while(rs.next()){
Contato contato=new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
Calendar data=Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
contatos.add(contato);
}
rs.close();
ps.close();
return contatos;
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public void altera(Contato contato){
String sql= "update contatos set nome=?, email=?, endereco=?, dataNascimento=? where id=?";
try{
PreparedStatement ps= connection.prepareStatement(sql);
ps.setString(1, contato.getNome());
ps.setString(2, contato.getEmail());
ps.setString(3, contato.getEndereco());
ps.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
ps.setLong(5, contato.getId());
ps.execute();
ps.close();
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public void remove(Contato contato){
String sql="delete from contatos where id=?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setLong(1, contato.getId());
ps.execute();
ps.close();
}catch(SQLException e){
throw new RuntimeException(e);
}
}
}
[/code]
[color=red]este é o sevlet que esta setando as variaveis[/color]
[code]package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
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 jdbc.dao.ContatoDAO;
import jdbc.modelo.Contato;
public class AddCttServlet extends HttpServlet{
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out=resp.getWriter();
String nome=req.getParameter("nome");
String email=req.getParameter("email");
String endereco=req.getParameter("endereco");
String dataEmTexto=req.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 na conversao da data");
return;
}
Contato contato=new Contato();
contato.setNome(nome);
contato.setEmail(email);
contato.setEndereco(endereco);
contato.setDataNascimento(dataNascimento);
System.out.println(contato.getNome()+" "+contato.getEmail()+" "+contato.getEndereco()+" "+contato.getDataNascimento()); // apenas para conferir se estava setando os dados
ContatoDAO dao;
try {
dao = new ContatoDAO();
[color=red]dao.adiciona(contato);[/color]
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.println("<html>");
out.println("<body>");
out.println("Contato "+contato.getNome()+" adicionado com super sucesso");
out.println("</body>");
out.println("</html>");
}
}
[/code]
[color=red]ai aparece a excecao abaixo:[/color]
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:13)
at jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:44)
at servlet.AddCttServlet.service(AddCttServlet.java:53)
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:859)
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)