HTTP Status 500 - Não acho o erro

4 respostas
T

Sou iniciante em java, e estou com algun problemas em um projeto da faculdade…

Criei uma classe java no Eclipse para cadastro de produtos, criei o bando no MySQL.

pelo MySQL insiro dados na tabela e consigo consultar por um jsp que fiz, mas não consigos inserir por um outro jsp.

Onde estou errando???

o erro que me é retornado é o seguinte:

type Exception report

message

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

exception

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 21 in the jsp file: /capitulo05/exemplo10b.jsp

The method incluir() is undefined for the type Produto

18:    objProduto.setQuantidade(Integer.parseInt(quantidade));

19:    objProduto.setCusto(Double.parseDouble(custo));

20:    objProduto.setVenda(Double.parseDouble(venda));

21:    if (objProduto.incluir())

22:       out.println(

Sucesso na gravação do produto

”);
23: else
24: out.println(“

ERRO na gravação do produto

”);
Stacktrace:

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)

org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)

org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:435)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)

org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.27 logs.


Cadastro de Produtos Inserção de Dados

Exemplo 10

Exemplo 10 - Cadastro de Produtos



Descrição:
Quantidade:
Preço de Custo:
Preço de Venda:



Gravação do dados ( onde gera o erro )

<%@page import=“capitulo02.Produto”%>

Exemplo 10

Exemplo 10 - Grava Produto


<% String descricao = request.getParameter("descricao"); String quantidade = request.getParameter("quantidade"); String custo = request.getParameter("custo"); String venda = request.getParameter("venda"); Produto objProduto = new Produto(); objProduto.setDescricao(descricao); objProduto.setQuantidade(Integer.parseInt(quantidade)); objProduto.setCusto(Double.parseDouble(custo)); objProduto.setVenda(Double.parseDouble(venda)); if (objProduto.incluir()) out.println("

Sucesso na gravação do produto

"); else out.println("

ERRO na gravação do produto

"); %>

Classe Java ( Produtos )

package capitulo02;

public class Produto {

private int idproduto = 0;

private String descricao = “”;

private int quantidade = 0;

private double custo = 0;

private double venda = 0;
public void setIdproduto(int idproduto) {
	this.idproduto = idproduto;
}

public int getIdproduto() {
	return this.idproduto;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public String getDescricao() {
	return this.descricao;
}

public void setQuantidade(int quantidade) {
	this.quantidade = quantidade;
}

public int getQuantidade() {
	return this.quantidade;
}

public void setCusto(double custo) {
	this.custo = custo;
}

public double getCusto() {
	return this.custo;
}

public void setVenda(double venda) {
	this.venda = venda;
}

public double getVenda() {
	return this.venda;
}

}

4 Respostas

antonioedirane
Pelo que eu vi, a sua classe Produto não tem um método chamado incluir. E na sua página de gravação de dados você chama este método na linha:
if (objProduto.incluir())
Por isso não roda. Você está chamando um método que não existe. Você tem que construir um método incluir na classe java chamada Produto. Ficaria mais ou menos assim:
package capitulo02;

public class Produto {
	private int idproduto = 0;
	private String descricao = "";
	private int quantidade = 0;
	private double custo = 0;
	private double venda = 0;

	public void setIdproduto(int idproduto) {
		this.idproduto = idproduto;
	}

	public int getIdproduto() {
		return this.idproduto;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDescricao() {
		return this.descricao;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public int getQuantidade() {
		return this.quantidade;
	}

	public void setCusto(double custo) {
		this.custo = custo;
	}

	public double getCusto() {
		return this.custo;
	}

	public void setVenda(double venda) {
		this.venda = venda;
	}

	public double getVenda() {
		return this.venda;
	}

	public void incluir() {
		// ... seu código para incluir o produto no banco de dados
	}
}

Obs. quando colocar o seu código no fórum.
coloca ele entre as tags [code] pois fica mais fácil de ler. E assim fica mais fácil o pessoal te ajudar.

T

[quote=antonioedirane]Pelo que eu vi, a sua classe Produto não tem um método chamado incluir.
E na sua página de gravação de dados você chama este método na linha:

if (objProduto.incluir())
Por isso não roda. Você está chamando um método que não existe.
Você tem que construir um método incluir na classe java chamada Produto.
Ficaria mais ou menos assim:

package capitulo02;

import java.sql.*;

public class Produto {
	private int idproduto = 0;
	private String descricao = "";
	private int quantidade = 0;
	private double custo = 0;
	private double venda = 0;

	public void setIdproduto(int idproduto) {
		this.idproduto = idproduto;
	}

	public int getIdproduto() {
		return this.idproduto;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDescricao() {
		return this.descricao;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public int getQuantidade() {
		return this.quantidade;
	}

	public void setCusto(double custo) {
		this.custo = custo;
	}

	public double getCusto() {
		return this.custo;
	}

	public void setVenda(double venda) {
		this.venda = venda;
	}

	public double getVenda() {
		return this.venda;
	}

	public void incluir() {
		// ... seu código para incluir o produto no banco de dados
	}
}

Obs. quando colocar o seu código no fórum.
coloca ele entre as tags code pois fica mais fácil de ler. E assim fica mais fácil o pessoal te ajudar.

Bom fiz o que vc me disse… mas ainda não estou conseguido inserir pelo formulário no banco… o meu código inserir ficou assim:

public boolean incluir() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = 
"insert into aluno(descricao,quantidade,custo,venda) ";
		sql +=
 "values('"+this.descricao+"',"+this.quantidade+",";
		sql += this.custo+","+this.venda+")"; 
		try {
			Statement st = con.createStatement();
			st.executeUpdate(sql);
			resultado = true;
		} catch(SQLException e) {
			resultado = false;
		} catch(Exception e) {
			resultado = false;
		}
		return resultado;
	}

	public boolean alterar() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = "update produto ";
		sql += "set descricao = '"+this.descricao+"', ";
		sql += "quantidade = "+this.quantidade+", ";
		sql += "custo = "+this.custo+", ";
		sql += "venda = "+this.venda;
		sql += " where idproduto = "+this.idproduto;

		try {
			Statement st = con.createStatement();
			int numRegs = st.executeUpdate(sql);
			if (numRegs>0)
			   resultado = true;
			else
			   resultado = false;
		} catch(SQLException e) {
			   resultado = false;
		} catch(Exception e) {
			   resultado = false;
		}
		return resultado;
	}

	public boolean excluir() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = "delete from produto ";
		sql += "where idproduto = "+this.idproduto;

		try {
			Statement st = con.createStatement();
			int numRegs = st.executeUpdate(sql);
			if (numRegs>0)
				   resultado = true;
				else
				   resultado = false;
		} catch(SQLException e) {
			   resultado = false;
		} catch(Exception e) {
			   resultado = false;
		}
		return resultado;
	}

	public boolean buscar() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = "select * from produto";
		sql += " where idproduto="+this.idproduto;
		try {
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);
			if (! rs.next()) {
				resultado = false;
			}
			else {
				this.descricao  =
 rs.getString("descricao");
				this.quantidade =
 rs.getInt("quantidade");
				this.custo      = rs.getDouble("custo");
				this.venda      = rs.getDouble("venda");
				resultado = true;
			}
		} catch(SQLException e) {
			resultado = false;
		} catch(Exception e) {
			resultado = false;
		}
		return resultado;
	}

O sistema me retorna (Erro na gravação do produto…) da condição que fiz na hora de inserir …

T

[quote=Tarc?io]

antonioedirane:
Pelo que eu vi, a sua classe Produto não tem um método chamado incluir.
E na sua página de gravação de dados você chama este método na linha:

if (objProduto.incluir())
Por isso não roda. Você está chamando um método que não existe.
Você tem que construir um método incluir na classe java chamada Produto.
Ficaria mais ou menos assim:

package capitulo02;

import java.sql.*;

public class Produto {
	private int idproduto = 0;
	private String descricao = "";
	private int quantidade = 0;
	private double custo = 0;
	private double venda = 0;

	public void setIdproduto(int idproduto) {
		this.idproduto = idproduto;
	}

	public int getIdproduto() {
		return this.idproduto;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDescricao() {
		return this.descricao;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public int getQuantidade() {
		return this.quantidade;
	}

	public void setCusto(double custo) {
		this.custo = custo;
	}

	public double getCusto() {
		return this.custo;
	}

	public void setVenda(double venda) {
		this.venda = venda;
	}

	public double getVenda() {
		return this.venda;
	}

	public void incluir() {
		// ... seu código para incluir o produto no banco de dados
	}
}

Obs. quando colocar o seu código no fórum.
coloca ele entre as tags code pois fica mais fácil de ler. E assim fica mais fácil o pessoal te ajudar.

Bom fiz o que vc me disse… mas ainda não estou conseguido inserir pelo formulário no banco… o meu código inserir ficou assim:

public boolean incluir() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = 
"insert into aluno(descricao,quantidade,custo,venda) ";
		sql +=
 "values('"+this.descricao+"',"+this.quantidade+",";
		sql += this.custo+","+this.venda+")"; 
		try {
			Statement st = con.createStatement();
			st.executeUpdate(sql);
			resultado = true;
		} catch(SQLException e) {
			resultado = false;
		} catch(Exception e) {
			resultado = false;
		}
		return resultado;
	}

	public boolean alterar() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = "update produto ";
		sql += "set descricao = '"+this.descricao+"', ";
		sql += "quantidade = "+this.quantidade+", ";
		sql += "custo = "+this.custo+", ";
		sql += "venda = "+this.venda;
		sql += " where idproduto = "+this.idproduto;

		try {
			Statement st = con.createStatement();
			int numRegs = st.executeUpdate(sql);
			if (numRegs>0)
			   resultado = true;
			else
			   resultado = false;
		} catch(SQLException e) {
			   resultado = false;
		} catch(Exception e) {
			   resultado = false;
		}
		return resultado;
	}

	public boolean excluir() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = "delete from produto ";
		sql += "where idproduto = "+this.idproduto;

		try {
			Statement st = con.createStatement();
			int numRegs = st.executeUpdate(sql);
			if (numRegs>0)
				   resultado = true;
				else
				   resultado = false;
		} catch(SQLException e) {
			   resultado = false;
		} catch(Exception e) {
			   resultado = false;
		}
		return resultado;
	}

	public boolean buscar() {
		boolean resultado = false;
		Connection con = Conexao.getConnection();
		String sql = "select * from produto";
		sql += " where idproduto="+this.idproduto;
		try {
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);
			if (! rs.next()) {
				resultado = false;
			}
			else {
				this.descricao  =
 rs.getString("descricao");
				this.quantidade =
 rs.getInt("quantidade");
				this.custo      = rs.getDouble("custo");
				this.venda      = rs.getDouble("venda");
				resultado = true;
			}
		} catch(SQLException e) {
			resultado = false;
		} catch(Exception e) {
			resultado = false;
		}
		return resultado;
	}

O sistema me retorna (Erro na gravação do produto…) da condição que fiz na hora de inserir …


GALERA… ACHEI O ERRO… EU ESTAVA MANDANDO INSERIR NA TABELA ALUNO… E NÃO NA PRODUTO… MAS MUITO OBRIGADO PELAS DICAS! … ESSE TÓPICO JÁ PODE FICAR POR AQUI!!!

antonioedirane

Parece que o comando sql esta tentando inserir o produto na tabela errada.
Na linha 5 do método incluir() está assim “insert into aluno”, sendo que voce esta tentando salvar um produto.
provavelmente deve ser “insert into produto”.

Criado 19 de julho de 2009
Ultima resposta 19 de jul. de 2009
Respostas 4
Participantes 2