HTTP Status 500 - Não acho o erro

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;
}

}

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.

[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 …

[quote=Tarc?io][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 …[/quote]


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!!!

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”.