Boa tarde pessoal, estou estudando a apostila fj21 e estou no exercício de inserir contatos no banco através de um formulário html, fiz o mapeamento da servlet correto minha aplicação sobe e etc.. mas da o seguinte erro com o jdbc e nao deixa inserir.
Nessa linha tá dizendo que não foi possível encontrar o driver.
Viniciustelles
coloquei um main na classe de conexão, e rodei apenas ela para ver se pegava algum erro, e não gerou nenhum erro. não sei oque pode estar havendo??? :S
N
norbAns
Posta sua classe AdicionaContatoServlet
Viniciustelles
packagebr.com.caelum.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbr.com.caelum.model.Contato;importbr.com.caelum.model.dao.ContatoDao;publicclassAdicionaContatoServletextendsHttpServlet{protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{// busca o writerPrintWriterout=response.getWriter();// buscando os parâmetros no requestStringnome=request.getParameter("nome");Stringendereco=request.getParameter("endereco");Stringemail=request.getParameter("email");StringdataEmTexto=request.getParameter("dataNascimento");CalendardataNascimento=null;// fazendo a conversão da datatry{Datedate=newSimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);dataNascimento=Calendar.getInstance();dataNascimento.setTime(date);}catch(ParseExceptione){out.println("Erro de conversão da data");return;// para a execução do método}// monta um objeto contatoContatocontato=newContato();contato.setNome(nome);contato.setEndereco(endereco);contato.setEmail(email);contato.setDataNascimento(dataNascimento);// salva o contatoContatoDaodao=newContatoDao();dao.adiciona(contato);// imprime o nome do contato que foi adicionadoout.println("<html>");out.println("<body>");out.println("Contato "+contato.getNome()+" adicionado com sucesso");out.println("</body>");out.println("</html>");}}
pois eh foi oque você já tinha me sugerido, adicionar no build path, sim está certinho o erro continua persistindo :S
paulolimac
Vinicius, o problema deve estar ou no driver do mysql que não deve estar instalado corretamente (é o mais provável) ou no seu ConnectionFactory.
Sobre o primeiro caso, confime que o driver do mysql está no Buildpath. Veja a figura anexa.
Quanto ao segundo caso, veja se o seu ConnectionFactory está como o código abaixo. ATENÇÃO: inclui umas linhas diferentes da apostila, para conseguir rodar o mysql. Estas linhas estão com comentários.
OBS: veja se os imports (primeiras linhas do código abaixo) estão corretas. Você pode ter importado alguma classe diferente sem querer. A IDE insere estas linhas automaticamente e as vezes inserimos a errada, mas nem notamos.
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;/** * Classe que modela uma fábrica de conexões */publicclassConnectionFactory{/** * Cria uma conexão de forma encapsula * @return */publicConnectiongetConnection(){System.out.println("Conectando ao banco");try{DriverManager.registerDriver(newcom.mysql.jdbc.Driver());//linha incluida sem orientação da apostilareturnDriverManager.getConnection("jdbc:mysql://localhost/fj21","root","123456");//ponha SEU login-senha usados no SEU acesso ao BD}catch(SQLExceptione){thrownewRuntimeException(e);}}}