Java Web - Drive MySQL

Boa noite,

Estou estudando Java Web pela Apostila FJ21 da Caelum. O problema é quando executo o projeto pela web(acessando o site pelo navegador) ocorre erro não encontrando o drive do Mysql.

Se executar uma classe de teste direto no Eclipse, não da erro.

O .jar já está na pasta WEB-INF/lib.

****************************Erro:

java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:14)
br.com.caelum.jdbc.teste.TesteConexao.testarConexao(TesteConexao.java:17)
br.com.caelum.servlet.adicionaContatoServlet.service(adicionaContatoServlet.java:58)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

*****************************Códigos:

@Override
protected void service(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	
	PrintWriter out = response.getWriter();
	
	String nome = request.getParameter("nome");
	String endereco = request.getParameter("endereco");
	String email = request.getParameter("email");
	Calendar dataNascimento = null;
	
	try{
		String dataEmTexto = request.getParameter("dataNascimento");
		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
		dataNascimento = Calendar.getInstance();
		dataNascimento.setTime(date);
	} catch(ParseException e){
		out.println("Erro na conversão da data");
		return;
	}
	
	Contato contato = new Contato();
	contato.setNome(nome);
	contato.setEndereco(endereco);
	contato.setEmail(email);
	contato.setDataNascimento(dataNascimento);
	
	ContatoDao dao = new ContatoDao();
	dao.adiciona(contato);

	out.println("<html>");
	out.println("<body>");
	out.println("Contato " + contato.getNome() + " adicionado com sucesso.");
	out.println("</html>");
	out.println("</body>");
}

}

public class ContatoDao {

private Connection connection = null;

public ContatoDao() {
	System.out.println("TENTOU CONECTAR");
    this.connection = new ConnectionFactory().getConnection();
    System.out.println("Conectou no banco de dados - Construtor - ContratoDao");
}

public void adiciona(Contato contato) {
    String sql = "INSERT INTO contatos "
            + "(nome, email, endereco, dataNascimento)"
            + " VALUES (?, ?, ?, ?)";

    try (PreparedStatement stmt = connection.prepareStatement(sql)) {

        stmt.setString(1, contato.getNome());
        stmt.setString(2, contato.getEmail());
        stmt.setString(3, contato.getEndereco());
        stmt.setDate(4, (java.sql.Date) new Date(contato.getDataNascimento().getTimeInMillis()));

        stmt.execute();
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }

}


public class ConnectionFactory {

public Connection getConnection() {
    try {
        return DriverManager.getConnection(
        		"jdbc:mysql://localhost/fj21", "root", "mysql123");
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}
}

No console aparece “TENTOU CONECTAR” e gera a exceção.
Criei uma classe para executar direto no Eclipse, e reconhece o driver normalmente, porém tive que adicionar no projeto.

Alguém pode ajudar? Porque quando executo pelo servidor/navegador, não reconhece o drive?

Esse trecho…

return DriverManager.getConnection(
    		"jdbc:mysql://localhost/fj21", "root", "mysql123");

Tente isso…

Class.forName("com.mysql.jdbc.Driver"); 
return DriverManager.getConnection(
    		"jdbc:mysql://localhost/fj21", "root", "mysql123");