Problema c/ MVC (nao consigo realizar a lógica de adicionar)

Estou utilizando a apostila da caelum e estou com problemas no desafio que tem no final da apostila, nao conseguir realizar a lógica de adiciona contato, ta dando erro na conversão da data, segue codigo e mensagem de erro:

A classe adiciona contato é essa:

package logica;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
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 modelo.Contato;
import pctdao.ContatoDao;

public class AdicionaContatoLogic implements Logica {
	
	@Override
	public String executa(HttpServletRequest req, HttpServletResponse res)
			throws IOException, ServletException {
		
		PrintWriter out =	res.getWriter();
		
		//pegando os parâmetros do request
		String nome = req.getParameter("nome");
		String endereco = req.getParameter("endereco");
		String email = req.getParameter("email");
		String dataEmTexto = req.getParameter("dataNascimento");
		Calendar dataNascimento = null;
		
		//fazendo a conversao da data
		try {
			Date date = new SimpleDateFormat("dd/mm/yy").parse(dataEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(date);
		} catch(ParseException e) {
			out.println("Erro de conversao da data");
			return dataEmTexto; //para a execução do método
		}
		
		//monta um objeto contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEmail(email);
		contato.setEndereco(endereco);
		contato.setDataNascimento(dataNascimento);
		contato.setId((long) 1000);
		
		try {
			ContatoDao	dao = new ContatoDao();
			dao.adiciona(contato);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return "adiciona-contato.jsp";
	}
}

A JSP de adiciona-contato.jsp é essa:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="caelum" %>
<!DOCTYPE html>

<html>

<head>
	<meta charset="ISO-8859-1">
	<title>Insira contatos aqui</title>
	<link href="css/jquery-ui.css" rel="stylesheet">
	<link href="css/jquery-ui.min.css" rel="stylesheet">
	<script src="js/jquery.js"></script>
	<script src="js/jquery-ui.js"></script>
	
	<!--
	<script>
		$(function() {
			$("#dataNascimento").datepicker({
				changeMonth: true,
				changeYear: true
			});
		});
	</script>
	-->
</head>

<body>
	<c:import url="cabecalho.jsp" />
	
	<h1> Formulario para Preencher os dados</h1>
	<hr />
	
	<fieldset>
		<form action = "add">
			<input type="hidden" name="logica" value="AdicionaContatoLogic"/>
			Nome: <input type="text" name="nome" /><br />
			Email: <input type="text" name="email"/><br />
			Endereco: <input type="text" name="endereco" /><br />
			Data Nascimento: <caelum:campoData id="dataNascimento" /><br />
			<input type="submit" value="Gravar"/>
			<input type ="reset" value="Limpar"/>
    	</form>
	</fieldset>
	
	<c:import url="WEB-INF/jsp/rodape.jsp" />
</body>

</html>

A classe listar contatos logic:

package logica;

import java.util.List;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import modelo.Contato;
import pctdao.ContatoDao;
import logica.Logica;

public class ListaContatosLogic implements Logica {
	
	public String executa(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		List<Contato> contatos = new ContatoDao().getLista();
		request.setAttribute("contatos",contatos);
		return "lista-contatos.jsp";
	}
}

A jsp de de listar contatos é essa:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@	taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="caelum" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>

<html>

<head>
	<meta charset="ISO-8859-1">
	<title>Listar contatos com JSTL</title>
</head>

<body>
	<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
	<c:import url="cabecalho.jsp"/>
	
	<table border = "1">
		<tr>
			<td>Nome</td>
			<td>Email</td>
			<td>Endereço</td>
			<td>Data Nascimento</td>
		</tr>
		
		<c:forEach var="contato" items="${contatos}">
			<tr>
				<td>${contato.nome}</td>
				<td>
					<c:if test="${not empty contato.email}">
						<a href="mailto:${contato.email}">${contato.email}</a>
					</c:if>
					
					<c:if test="${empty contato.email}">
						Email não informado. 
					</c:if>
				</td>
				<td>${contato.endereco}</td>
				<td>
					${contato.dataNascimento.time}
				</td>
				<td>
					<a href="mvc?logica=RemoveContatoLogic&id=${contato.id}">Remover</a>
				</td>
				<td>
					<a href="mvc?logica=AlteraContatoLogic&id=${contato.id}">Alterar</a>
				</td>
				<td>
					<a href="mvc?logica=AdicionaContatoLogic&id=${contato.id}">Adicionar Contato</a>
				</td>
			</tr>
		</c:forEach>	
	</table>
	
	<c:import url="/WEB-INF/jsp/rodape.jsp" />
</body>

</html>

MENSAGEM DE ERRO:

mar 22, 2019 8:10:08 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [servlets.ControllerServlet] in context with path [/TesteServlet] threw exception [A lógica de negócios causou uma exceção] with root cause
java.lang.NullPointerException
	at java.text.SimpleDateFormat.parse(Unknown Source)
	at java.text.DateFormat.parse(Unknown Source)
	at logica.AdicionaContatoLogic.executa(AdicionaContatoLogic.java:37)
	at servlets.ControllerServlet.service(ControllerServlet.java:28)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at filtro.FiltroTempoDeExecucao.doFilter(FiltroTempoDeExecucao.java:31)
	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:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Parece que esse código req.getParameter("dataNascimento"); está retornando um valor nulo. Rode o programa em modo de debug e verifique.

Não to sabendo debugar essa pagina, quando faço isso aparece o erro: 404 não é possível localizar a página.

Você não vai debugar a página, vai debugar a classe de lógica.