Erro fj-21 Pegando os parâmetros da requisição[RESOLVIDO]

1 resposta
julianoVince

Galera do Gju to com um problema que não consegui achar a solução: to na postila da caelum fj-21 e ta dando esse erro:
obs: sim tem alguns topicos com o mesmo assunto tentei fazer a mesma coisa só que não deu certo...
alguns erros são parecidos mais não iguais se alguem puder ajudar agradeço D++++ mesmo. obrigado!

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/projeto
	br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:14)
	br.com.caelum.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:17)
	br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:51)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/projeto
	java.sql.DriverManager.getConnection(Unknown Source)
	java.sql.DriverManager.getConnection(Unknown Source)
	br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:11)
	br.com.caelum.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:17)
	br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:51)
	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.

Queria mandar os print mais não dei conta: Eo seguinte Quando eu coloco a data errada ele vai pra pagina e fala que o mesmo esta incorreto.
Mais quando eu coloco a data certinha os dados certos. da esse pau ai.

o conector do mysql ta na pasta lib lá ta blz o apache da pra entrar do usando o 6 ta bom pq consigo entrar nas paginas que eu criei como oi a index e tbm essa onde a gente entra com os dados o problema ta sendo na ora de gravar mesmo que da esse bug. olha as linhas de codigos:

AdicionaContatoServlet:
package br.com.caelum.agenda.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.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;



public class AdicionaContatoServlet extends HttpServlet{
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		// busca o writer
		PrintWriter out = response.getWriter();

		// buscando os parâmetros no request
		String nome = request.getParameter("nome");
		String endereco = request.getParameter("endereco");
		String email = request.getParameter("email");
		String dataEmTexto = request.getParameter("dataNascimento");
		Calendar dataNascimento = null;

		// fazendo a conversão da data
		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 da data");
			return; // para a execução do método
		}

		// monta um objeto contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEndereco(endereco);
		contato.setEmail(email);
		contato.setDataNascimento(dataNascimento);

		// salva o contato
		ContatoDAO dao = new ContatoDAO();
		dao.adiciona(contato);

		// imprime o nome do contato que foi adicionado

		out.println("<html>");
		out.println("<body>");
		out.println("Contato " + contato.getNome() + " adicionado com sucesso");
		out.println("</body>");
		out.println("</html>");
	}
}
ConnectionFactory
package br.com.caelum.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public Connection getConnection() {
		System.out.println("Conectando ao banco");
		try {
		return DriverManager.getConnection("jdbc:mysql://localhost/projeto","root", "admin");
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}
adiciona-contato
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<form action="adicionaContato">
		Nome: <input type="text" name="nome" /><br /> E-mail: <input
			type="text" name="email" /><br /> Endereço: <input type="text"
			name="endereco" /><br /> Data Nascimento: <input type="text"
			name="dataNascimento" /><br /> <input type="submit" value="Gravar" />
	</form>
</body>
</html>
webxml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>fj21-agenda</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>AdicionaContato</servlet-name>
		<servlet-class>br.com.caelum.agenda.servlet.AdicionaContatoServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>AdicionaContato</servlet-name>
		<url-pattern>/adicionaContato</url-pattern>
	</servlet-mapping>
</web-app>

1 Resposta

julianoVince

Galera que tiver com esse problema.
Fiquei uns 3 dias sem brincadera fazendo e refazendo essa parte.
Consegui resolver olhado um post.
na servlet ConnectionFactory.

digitem: DriverManager.registerDriver(new com.mysql.jdbc.Driver());
acho que todos tem que quebrar a cabeça mesmo… eu mesmo decorei essa parte de configurar o apache e o mysql no eclipse.
Que tiver com o mesmo problema tenta isso ai que talvez funcione se tiver configurado +ou- igual a minha servlet : ConnectionFactory
Ficou a sim:

package br.com.caelum.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public Connection getConnection() {
		System.out.println("Conectando ao banco");
		try {
			 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
			return DriverManager.getConnection("jdbc:mysql://localhost:3306/projeto", "root", "admin"); 
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}
Criado 1 de junho de 2012
Ultima resposta 1 de jun. de 2012
Respostas 1
Participantes 1