Lista com scriplet usando jsp

Sim, estou usando: vou postar o código

package br.com.caelum.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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.caelum.agenda.dao.ContatoDAO;
import br.com.caelum.agenda.modelo.Contato;

@WebServlet(urlPatterns="/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//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 em contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEndereco(endereco);
		contato.setEmail(email);
		contato.setDataNascimento(dataNascimento);
		
		//salva o contato
		ContatoDAO dao = null;
		try {
			dao = new ContatoDAO();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		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>");
	}
}

Fui testar o projeto neste tomcat 7, o que estava funcionando no tomcat 8, agora não está funcionando, deu pau no tomcat 7, o seguinte erro aparece:Server Tomcat v7.0 Server at localhost failed to start.

voce nao startou o servico…

Manda a classe de conexão …

Classe de conexão

package br.com.caelum.agenda;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public Connection getConnection() throws ClassNotFoundException{
		try {
			 //Class.forName("com.mysql.jdbc.Driver");
			DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Essa linha foi a diferença
			 return DriverManager.getConnection(
			 "jdbc:mysql://localhost/fj21", "root", "admin");
		} catch (SQLException e) {
			 e.printStackTrace();
			 throw new RuntimeException(e);
		}
	}
}

Pequena sugestão:

Tenta isso, no caso o stack trace informa que não houve nenhum pacote enviado de volta do servidor de BD, ou seja, ele tenta conectar na bagaça, mas não recebe resposta, talvez por não estar alcançando o servidor. Verifica se o usuário e a senha estão corretos, e o nome do Banco informado na string de conexao, verifique também se há algum problema no servidor de BD, tenta logar nele pelo prompt/terminal, veja se ele responde aos comandos SQL, no demais, não creio que seja problema no tomcat, já que você trocou e não adiiantou nada.

A falha permanece, eu reinstalei o mysql server pois o servidor realmente não respondia, o mysql server agora funciona, mas a lista que eu queria não gera e a falha no tomcat ainda continua.

sim, mas criou o banco e as tabelas denovo? Ele gera o mesmo stack trace? Se não, posta ele aqui.

Não, não criei o banco de novo, removi o projeto, reiniciei o tomcat 7 e digitei o link http://localhost:8080 e abriu o site do tomcat, não sei se gera o mesmo stacktrace, como vejo isso?