FJ21 - JSTL - 7.7 - Exercícios: forEach

2 respostas
jstljspjava
wellcam

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>

2 Respostas

J

adicionou o driver do mysql no “Build Patch” do seu projeto?

Se sim, também é necessário registrar ele como no exemplo abaixo:

Class.forName("com.mysql.jdbc.Driver");  /* Aqui registra */
    Connection conexao = 
    DriverManager.getConnection("jdbc:mysql://localhost:3306/bancoDeDados","root"," senha");

    conexao.close();

Caso tenha feito esses passos, posta o código da sua “connectionFactory” pra gente ver.

wellcam

Jovem valeu pela ajuda. Fiz a alteração e o erro se foi, agora só fica a pagina em branco. Acredito que não estão conseguindo puxar os dados do banco. Para desencargo segue o código do factory:

public Connection getConnection() throws ClassNotFoundException{
	try {
		Class.forName("com.mysql.jdbc.Driver");
		return DriverManager.getConnection("jdbc:mysql://localhost:3306/meubanco", "root", "");			
	} catch (SQLException e) { throw new RuntimeException(e);}
}

}

Arquivo jsp

<%@ page language=java contentType="text/html; charset=ISO-8859-1"

pageEncoding=ISO-8859-1%>

<%@ taglib uri=<a href="http://java.sun.com/jsp/jstl/core">http://java.sun.com/jsp/jstl/core</a>” prefix=“c” %>

<jsp:useBean id=“contato” class=“Modelo.ContatoDAO”/>
<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>
Criado 16 de novembro de 2018
Ultima resposta 16 de nov. de 2018
Respostas 2
Participantes 2