Problemas na execução de página JSP

3 respostas
I

Pessoal,

Estou iniciando meus estudos em JSP e estou seguindo a apostila web-fj21 da Caelum. Estou com problemas em um dos exercícios que utilizam JSP.

Instalei e configurei o Tomcat conforme explicado na apostila. Criei uma tabela CONTATO e criei a classe Contato (um JavaBean) contendo os atributos da tabela e métodos get e set para acesso aos mesmos. Também criei uma classe ContatoDAO, responsavel por estabelecer uma conexão com o banco MySQL e que possui rotinas para adicionar, alterar, remover e retornar a listagem de contatos do banco.

Quero listar os dados de contatos em uma página JSP. Criei o arquivo listascriptlet.jsp com o seguinte conteúdo:
<html>

<%@ page import="br.com.cej.jdbc.dao.ContatoDAO"
%>

<ul>
<%
ContatoDAO dao = new ContatoDAO();
//Contato contato = new Contato();
%>
</ul>

</html>

No entanto, quando vou executá-lo no browser, recebo o erro abaixo:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /listascriptlet.jsp:8

5: 
6: <ul>
7: <%
8: ContatoDAO dao = new ContatoDAO();
9: //Contato contato = new Contato();
10: %>
11: </ul>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

javax.servlet.ServletException: com.mysql.jdbc.Driver
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.listascriptlet_jsp._jspService(listascriptlet_jsp.java:61)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.sql.SQLException: com.mysql.jdbc.Driver
	br.com.cej.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:14)
	br.com.cej.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:18)
	org.apache.jsp.listascriptlet_jsp._jspService(listascriptlet_jsp.java:49)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Se eu comentar a linha "ContatoDAO dao = new ContatoDAO();" funciona, mas não consegui descobrir o que há de errado nessa classe. Ela funciona perfeitamente em uma aplicação console.

Alguém pode me ajudar? O que estou fazendo de errado? Qualquer dica é bem vinda!

Obrigada!

Ps.: Desculpem pelo longo post, mas procurei explicar bem meu problema.

3 Respostas

otaviofcs

A sua classe contatodao está dando um erro ao se conectar com o Mysql e está dando um throw que derruba o seu jsp. Verifique seu ConnectionFactory como descrito no erro. Pode ser problema nos parâmentros do mysql mas parece ser um problema na consulta da sua dao. Você criou a tabela dos clientes no mysql? Está passando o banco correto na conexão?

I

Olá otaviofcs,

Acho que a classe ConnectionFactory está correta, pois eu consigo utilizar ela em um projeto console, só nesse projeto JSP que está dando problema. A tabela Contato está criada no banco.

A classe está assim:

package br.com.cej.jdbc;

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

public class ConnectionFactory {
	public static Connection getConnection() throws SQLException{
		try {
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://localhost/jdbc", 
					"root", "senha");
		} catch (ClassNotFoundException e) {
			throw new SQLException(e.getMessage());
		}
	}
}
Você consegue identificar algum problema nela?

Obrigada.

I

Um colega me deu a dica de colocar o o driver do MySQL (mysql-connector-java-5.0.5-bin.jar) na pasta “meuprojeto\web\WEB-INF\lib”. Antes o jar estava no build path do projeto, mas estava fisicamente localizado em outro diretorio, por isso que estava dando erro.

Deixo aqui a solução pro caso de outra pessoa ter o mesmo problema.

Valeu!

Criado 27 de março de 2007
Ultima resposta 29 de mar. de 2007
Respostas 3
Participantes 2