Fala galera beleza?
Estou iniciando em Java Web e estou enroscado em uma parada. Tentei diversas coisas para corrigir mas continua exibindo a mesma mensagem de erro no navegador:
No corpo estão a DAO, modelo e jsp
HTTP Status 500 – Internal Server Error
Type Exception Report
Message An exception occurred processing JSP page [/listarcontatos.jsp] at line [4]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing JSP page [/listarcontatos.jsp] at line [4]
1: <%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
2: pageEncoding=“ISO-8859-1”%>
3: <%@ taglib uri=“<a href="http://java.sun.com/jsp/jstl/core">http://java.sun.com/jsp/jstl/core</a>” prefix=“c” %>
4: <jsp:useBean id=“contato” class=“Modelo.ContatoDAO”/>
5:
6:
7:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:598)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:495)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/meubanco
Persistencia.ConnectionFactory.getConnection(ConnectionFactory.java:12)
Modelo.ContatoDAO.(ContatoDAO.java:18)
org.apache.jsp.listarcontatos_jsp._jspService(listarcontatos_jsp.java:124)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/meubanco
java.sql.DriverManager.getConnection(DriverManager.java:689)
java.sql.DriverManager.getConnection(DriverManager.java:247)
Persistencia.ConnectionFactory.getConnection(ConnectionFactory.java:11)
Modelo.ContatoDAO.(ContatoDAO.java:18)
org.apache.jsp.listarcontatos_jsp._jspService(listarcontatos_jsp.java:124)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/8.5.34
DAO
public class ContatoDAO {
private static Connection connection;
public ContatoDAO() {
ContatoDAO.connection = new ConnectionFactory().getConnection();
}
public void inserirContato(Contato contato) {
String sql = "insert into contatos (nome,email,endereco,dataNascimento) values (?,?,?,?)";
try{
PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
stmt.setString(1, contato.getNome() );
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new java.sql.Date(Calendar.getInstance().getTimeInMillis()));
stmt.execute();
stmt.close();
} catch(SQLException e) {System.out.println(e);}
}
public Contato selecionarContato(int id) {
String sql ="select * from contatos where id=?";
try {
Contato contato = new Contato();
PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
stmt.setInt(1, id);
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
}
rs.close();
stmt.close();
return contato;
} catch (SQLException e) { throw new RuntimeException();}
}
public List<Contato> todosContatos() {
String sql ="select * from contatos";
try {
List<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
} catch (SQLException e) { throw new RuntimeException();}
}
public void deletarContato(int id) {
String sql = "delete from contatos where id=?";
try {
PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
stmt.setInt(1, id);
stmt.execute();
stmt.close();
} catch(SQLException e) {throw new RuntimeException();}
}
public void alterarContato(int id, Contato contato) {
String sql = "update contatos set nome=?,email=?,endereco=?,dataNascimento=? where id=?";
try {
//Contato contato = new Contato();
PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new java.sql.Date(Calendar.getInstance().getTimeInMillis()));
stmt.setInt(5, id);
stmt.execute();
stmt.close();
} catch(SQLException e) {System.out.println(e);}
}
}
Modelo.Contato
package Modelo;
import java.util.Calendar;
public class Contato {
private Long id;
private String nome;
private String email;
private String endereco;
private Calendar dataNascimento;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public Calendar getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Calendar dataNascimento) {
this.dataNascimento = dataNascimento;
}
}
JSP
<%@ 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” %>
<jsp:useBean id=“contato” class=“Modelo.ContatoDAO”/>
<body>
<table>
<c:forEach var="contato" items="${dao.contatos}">
<tr>
<td>${contato.nome}</td>
<td>${contato.email}</td>
<td>${contato.endereco}</td>
<td>${contato.dataNacimento}</td>
</tr>
</c:forEach>
<tr><td>