FJ-21 exercícios opcionais 9.9 nº1

Estou com dúvida de como fazer esse exercício, já criei a lógica de exclusão, mais esta dando erro, será que alguém pode me dar uma ajuda?

E qual o erro?

Tem essa página aqui que é a lista de contatos:

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>

Lista de Contatos
<c:import url="cabecalho.jsp" />
<table border="1px">
	<tr>
		<th>Nome</th>
		<th>E-mail</th>
		<th>Endereço</th>
		<th>Data de Nascimento</th>
		<th colspan="2" bgcolor="grey"></th>
	</tr>
	
	<!-- percorre contatos montando as linhas da tabela-->

	<!-- Antes
	List<Contato> contatos = dao.getLista();
	for (Contato contato : contatos) { 
	 --> 
	
	<c:forEach items="${dao.lista }" var="contato" varStatus="id">
		<tr bgcolor="#${id.count % 2 == 0 ? 'aaee88':'ffffff'}">
			<td>${contato.nome}</td>
			<td>
				<c:choose>
					<c:when test="${not empty contato.email}">
						<a href="mailto:${contato.email}">${contato.email}</a>						
					</c:when>
					<c:otherwise>
						E-mail não informado.
					</c:otherwise>
				</c:choose>
			</td>
			<td>${contato.endereco}</td>
			<td><fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy"/></td>
			<td><a href="fj21-agenda/altera-contato.jsp">Alterar</a></td>
			<td><a href="/RemoveContatoLogic?id=${contato.id}">Excluir</a></td>
		</tr>
	</c:forEach>		
</table>

<c:import url="rodape.jsp" />

E tem essa outra que é onde acontece a lógica:

package br.com.caelum.mvc.logica;

import javax.servlet.RequestDispatcher;
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 RemoveContatoLogic implements Logica {

@Override
public void executa(HttpServletRequest request, HttpServletResponse response)
		throws Exception {

	Contato contato = new Contato();

	long id = Long.parseLong(request.getParameter("id"));

	contato.setId(id);

	ContatoDAO dao = new ContatoDAO();
	dao.exclui(contato);
	
	RequestDispatcher rd = request.getRequestDispatcher("/lista-contatos-elegante.jsp");
	rd.forward(request, response);
	System.out.println("Removendo contato...");
}

}

E por fim o erro:

HTTP status 500

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /lista-contatos-elegante.jsp at line 16

13:
14:
15:
16: <jsp:useBean id=“dao” class=“br.com.caelum.agenda.dao.ContatoDAO”></jsp:useBean>
17:
18: <c:import url=“cabecalho.jsp” />
19:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.agenda.filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:26)
root cause

java.lang.RuntimeException: java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)
br.com.caelum.agenda.ConnectionFactory.getConnection(ConnectionFactory.java:19)
br.com.caelum.agenda.dao.ContatoDAO.(ContatoDAO.java:19)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.agenda.filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:26)
root cause

java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2412)
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:813)
com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
br.com.caelum.agenda.ConnectionFactory.getConnection(ConnectionFactory.java:14)
br.com.caelum.agenda.dao.ContatoDAO.(ContatoDAO.java:19)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.agenda.filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:26)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.

  1. Quando você for postar seu código aqui no guj, coloque entre as tags
  2. Não tenha medo de ler a mensagem de erro. Olha o ela disse: Access denied for user ‘root’@‘localhost’ (using password: YES). Bem claro. [=

erro no acesso a base dados 'java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES) ’

É verdade, obrigado! Acredito que isso eu resolvi, mais continua dando erro, e página não abre…

type Exception report

message

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

exception

org.apache.jasper.JasperException: org.apache.jasper.el.JspELException: /lista-contatos-elegante.jsp(30,2) ‘${dao.lista}’ Error reading ‘lista’ on type br.com.caelum.agenda.dao.ContatoDAO
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:534)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.agenda.filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:26)
root cause

org.apache.jasper.el.JspELException: /lista-contatos-elegante.jsp(30,2) ‘${dao.lista}’ Error reading ‘lista’ on type br.com.caelum.agenda.dao.ContatoDAO
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:112)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspx_meth_c_005fforEach_005f0(lista_002dcontatos_002delegante_jsp.java:172)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:112)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.agenda.filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:26)
root cause

java.lang.NullPointerException
java.util.Calendar.setTime(Unknown Source)
br.com.caelum.agenda.dao.ContatoDAO.getLista(ContatoDAO.java:60)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
org.apache.el.parser.AstValue.getValue(AstValue.java:169)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspx_meth_c_005fforEach_005f0(lista_002dcontatos_002delegante_jsp.java:172)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:112)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.agenda.filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:26)

Alguém pode me dar uma ajuda nessa questão, por favor?

O erro é de nullpointer.

java.lang.NullPointerException

Debuga aí no seu dao para ver como está chegando.

Essa parte foi resolvida, mais ainda não consegui excluir um contato da minha tabela. Da essa mensagem:

HTTP Status 404 -

type Status report

message

description The requested resource () is not available.

Não sei se você resolveu o problema mas pelo que vi esta na url que você esta passando:

Excluir

eu fiz dessa forma e deu certo…

Excluir