Olá como vão todos?
Estou tentando fazer uma página que adiciona contatos usando o Eclipse, Mysql e o Tomcat, mas quando clico no botão Gravar aparece uma tela de erro do Tomcat como esta:
HTTP Status 404 - Servlet AdicionaContato is not available
type Status report
message Servlet AdicionaContato is not available
description The requested resource (Servlet AdicionaContato is not available) is not available.
Apache Tomcat/6.0.24
Às vezes aparece esta também:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Class br.com.caelum.agenda.servlet.AdicionaContatoServlet is not a Servlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)
root cause
java.lang.ClassCastException: br.com.caelum.agenda.servlet.AdicionaContatoServlet cannot be cast to javax.servlet.Servlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.
Segue também a Servlet Adiciona:
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.caelum.agenda.dao.ContatoDAO;
import br.com.caelum.agenda.modelo.Contato;
public class AdicionaContatoServlet {
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 de 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>");
}
}
E ConnectionFactory. Os dados de login do banco estão de acordo com os que configurei:
package br.com.caelum.agenda;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public Connection getConnection() throws SQLException {
System.out.println("conectando ...");
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new SQLException(e);
}
return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "123");
}
}
Espero que alguém possa me ajudar e agradeço desde já, pois empaquei no estudo e não queria deixar isso pra trás.