Boa noite, estou no capitulo de Filtros da apostila, fiz todos os passos, que condiz no exercicio, mas mesmo assim continua dando erro,
alguem poderia me ajudar e dizer qual seria o problema?
segue abaixo meus códigos:
A classe altera contato lógica:
[code]package br.com.caelum.mvc.logica;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.caelum.jdbc.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;
public class AlteraContatoLogica implements Logica{
@Override
public void executa(HttpServletRequest req, HttpServletResponse res)
throws Exception {
Contato contato = new Contato();
Long id = Long.parseLong(req.getParameter("id"));
contato.setId((id));
contato.setNome(req.getParameter("nome"));
contato.setEndereco(req.getParameter("endereco"));
contato.setEmail(req.getParameter("email"));
//Converte a data de String para Calendar
String dataEmTexto = req.getParameter("dataNascimento");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
Calendar dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
contato.setDataNascimento(dataNascimento);
Connection connection = (Connection) req.getAttribute("conexao");
ContatoDAO dao = new ContatoDAO(connection);//passando a conexao para o construtor do DAO
dao.altera(contato);
RequestDispatcher rd = req.getRequestDispatcher("/lista-contatos-elegante.jsp");
rd.forward(req, res);
System.out.println("Alterando contato ..." + contato.getNome());
}
}
[/code]
O método construto na classe DAO:
[code]public class ContatoDAO {
private Connection con;
public ContatoDAO(Connection connection) {
this.con = connection;
}
[/code]
E o filtro:
[code]package br.com.caelum.agenda.filtro;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import br.com.caelum.jdbc.ConnectionFactory;
public class FiltroConexao implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
Connection connection = new ConnectionFactory().getConnection();
request.setAttribute("conexao",connection);
chain.doFilter(request, response);
connection.close();
} catch (SQLException e) {
throw new ServletException(e);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
[/code]
Estou empacado aqui, o erro que se segue é o seguinte:
10/10/2011 19:24:39 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [controlador] in context with path [/fj21-agenda] threw exception [A lógica de negócios causou uma exceção] with root cause
java.lang.NoSuchMethodError: br.com.caelum.jdbc.ContatoDAO: method <init>()V not found
at org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:95)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at br.com.caelum.mvc.logica.AlteraContatoLogica.executa(AlteraContatoLogica.java:39)
at br.com.caelum.mvc.servlet.ControllerServlet.service(ControllerServlet.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at br.com.caelum.agenda.filtro.FiltroConexao.doFilter(FiltroConexao.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Se alguem puder ajudar agradeço desde ja!