Tenho uma tabela, e quando tento excluir um linda da minha tabela eu não consigo.
OBS: No Caso, eu consigo recuperar minha URL, só que não consigo pegar o ID do Objeto. http://localhost:8080/fj21-aprendendo/mvc?logica=SelecionaContatoLogica&codigo=
Meu Erro:
A Logica de negocio causou uma exceçãojava.lang.NumberFormatException: null
<%@page import="DAO.ContatoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!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=UTF-8">
<title>Listando Contato</title>
</head>
<body>
<c:import url="/WEB-INF/template/cabecalho.jsp" />
<br/><br/>
<table border="1">
<tr>
<th>Codigo</th>
<th>Nome</th>
<th>Endereco</th>
<th>email</th>
<th>Data</th>
<th>Remover</th>
<th> Alterar </th>
</tr>
<c:forEach var="contato" items="${contatos}" varStatus="id">
<tr bgcolor="${id.count % 2 == 0 ? 'aaeeff' : 'ffffff'}">
<td style="text-align:center;"><a href="mvc?logica=SelecionaContatoLogica&codigo=${contato.id}">${id.count}</a> </td>
<td>${contato.nome}</td>
<td>${contato.endereco}</td>
<td>
<c:choose>
<c:when test="${not empty contato.email}">
<a href="mailto:${contato.email}"> ${contato.email} </a>
</c:when>
<c:otherwise>
Email não informado
</c:otherwise>
</c:choose>
</td>
<td>
<fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy" />
</td>
<td>
<a href="mvc?logica=RemoveContatoLogica&codigo=${contato.id}">Remover</a>
</td>
<td>
<a href="mvc?logica=SelecionaContatoLogica&codigo=${contato.id}">Alterar </a>
</td>
</tr>
</c:forEach>
</table>
<c:import url="/WEB-INF/template/rodape.jsp" />
</body>
</html>
Minha Logica
public class RemoveContatoLogica implements Logica {
@Override
public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {
int codigo = Integer.parseInt(request.getParameter("nome"));
Contato c = new Contato();
c.setId(codigo);
new ContatoDAO().excluir(c);
return "mvc?logica=ListaContatoLogica";
}
}
Interface
public interface Logica {
public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
Controller
@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pegaParametro = "aprendendo.Servlet." + request.getParameter("logica");
try{
Class classe = Class.forName(pegaParametro); //Pega a Classe
Logica logica = (Logica) classe.newInstance(); //Cria uma Instancia dela que foi implementada pela Logica.
String pagina = logica.executa(request, response); //Executa ela
request.getRequestDispatcher(pagina).forward(request, response); //Encaminha a Página
}catch (Exception e) {
System.out.println("A Logica de negocio causou uma exceção" + e);
}
}
Meu DAO
public void excluir(Contato contato) {
String sql = "delete from contato where id = ?"; try (PreparedStatement stmt = connection.prepareStatement(sql)) { stmt.setInt(1, contato.getId()); stmt.execute(); } catch (SQLException e) { throw new RuntimeException(e); } }