Mensagem de erro. DAO para Servlet

Boa noite,
Tenho um metodo/classe DAO que faz determinas operacoes,
Por exemplo,
Possuo um metodo chamado



public  void verificaEstoque(){
.....

}

na minha servlet eu o chamo


 dao.verificaEstoque();

Ate ai tudo bem.

nesse verifica estoque() - ele analisa se o estoque esta igual ou menor a 1, se sim eu estou fechando a conexao pra que nao seja feita baixa a partir desse criterio… {forma nao muito certa, mas pra efeitos de estudos por enquanto }

A questao é:

COMO FAZER A SERVLET EXIBIR UMA MENSAGEM DE ERRO SE O METODO PARTE DO MEU “DAO”?

colocar out.println(“xxxxxx”);… depois do verficaEstoque() - nao da certo nao…ja testei…

POR FAVOR NÃO POSTE TÍTULOS USANDO LETRAS MAIÚSCULAS.
COMO VOCÊ PODE TER SENTIDO NESSE COMENTÁRIO, DÁ A IMPRESSÃO QUE ESTOU GRITANDO COM VOCÊ.

Ok chefe,

mas sobre a minha pergunta, os que manja muito ai, alguma dica?

Vc pode dar um throw exception no DAO, capturar no Servlet em um try/catch e depois colocar a mensagem de erro no request para o usuário. [=

caro amigo, jakefrog:

no meu metodo:



public  void verificaEstoque(){
		   try {
				 List<Produto> produtos = new ArrayList<Produto>();
				 PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto");
				 ResultSet rs = stmt.executeQuery();
				
				 while (rs.next()) {
				 // criando o objeto Produto
				 Produto produto = new Produto();
				 
				 produto.setCodigo(rs.getLong("codigo"));
				 produto.setNumNotaFiscal(rs.getString("numNotaFiscal"));
				 produto.setN_peca(rs.getString("n_peca"));
				 produto.setUnidade_descricao(rs.getString("unidade_descricao"));
				 produto.setDescricao(rs.getString("descricao"));
				 produto.setVlrcompra(rs.getString("vlrcompra"));
				 produto.setTotal(rs.getString("total"));
				 produto.setEstoque(rs.getString("estoque"));
				 produto.setCritico(rs.getString("critico"));
				
				 // montando a data através do Calendar
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("dataCadastro"));
				produto.setDataCadastro(data);
				produto.setSecaoProduto(rs.getString("secaoProduto"));
				produto.setFornecedor(rs.getString("fornecedor"));
				  
	           // adicionando o objeto à lista
				 produtos.add(produto);
				 
				 
				 
				 int qtde = (rs.getInt(("estoque")));
				 
				 if(qtde <= 1)
				 {
					 System.out.println("quantidade menor que = " +qtde);
					 
					 BaixaEstoqueDAO.connection.close();
					 throw new SQLException(" >> ATENCAO - A quantidade em Estoque esta menor ou igual a 1, favor abastecer o ESTOQUE.");     // e coloquei o throw aki
				 }else
				 {
					 
				 }
				 
				 
				 }
				 rs.close();
				 stmt.close();
				 return;
				} catch (SQLException e) {
					throw new RuntimeException(e);   // coloquei o Throw aki 
				 }
				
			}
	}

na servlet:

ele chama meu metodo assim:




 BaixaEstoqueDAO dao = new  BaixaEstoqueDAO();
	
  dao.verificaEstoque(); // aki chamando o metodo ja na servlet
		
   dao.adiciona(baixaestoque);

dai criei uma pagina erro.jsp e coloque [code]

<%=exception.toString()%> [/code]

resultado = Erro java.lang.RuntimeException: java.sql.SQLException: >> ATENCAO - A quantidade em Estoque esta menor ou igual a 1, favor abastecer o ESTOQUE.

Ate ai tudo bem, esta ate como eu quero, MAs como tirar esses: java.lang.RuntimeException: java.sql.SQLException? da mensagem?

Ao invés de fazer throw new RuntimeException(e); // coloquei o Throw aki crie sua própria exceção e coloque um campo descrição.

E na tela você coloca minhaException.getMensagem();

Caro amigo JakeFrog,

criei minha classe:



package br.controle.excecoes;

import java.sql.SQLException;

public class BaixaEstException extends SQLException{
// O que implementar aki??????????
}



To sem ideia do que implementar na minha classe que é uma excecao personalizada, sou novo em java web, e venho me deparando com novos assuntos a cada dia… Se puder dar uma forca ai … agradecemos!!! :slight_smile:

Ela ira extender de SQLException? ou RuntimeException, porque dai terei q chamar la na minha servlet… Ou nada a ver?

O que você poderia fazer agora é coloca o atributo lá dentro.

Dentro da sua Exception, você coloca por exemplo mensagemParaUsuario. Nesse cara vc trataria colocaria a mensagem que seria exibida para o usuário.

Só lembro que você pode “jogar” essa exception lá do seu DAO e apenas repassar para cima. e lá no seu dao vc faria meuErro.setMensagemParaUsuario(“deu erro manow”);

Depois, na sua JSP vc pega a exceção e mostra. como se fosse um objeto qualquer.

So consigo fazer dessa forma … se alguem poder analisar e ver se isso nao é uma boa pratica favor comentar…

Final das Contas - queria exibir uma mensagem LIMPA ao usuario…

veja se isso ai da pra engolir… rsrsr

no meu metodo :

public  void verificaEstoque() throws RuntimeException{

// vai mais N coisas aki......

//etc


 }
				 rs.close();
				 stmt.close();
				 return;
				} catch (SQLException e) {
				throw new RuntimeException("- A quantidade em Estoque esta menor ou igual a 1, favor abastecer o ESTOQUE.");
				
				
				}
				
			}
	}


So ta dando certo com esse Runtime para exibir qq tipo de MSG.

e na servlet chamei o metodo normalmente;;


dao.verificaEstoque();

e isso tudo vai pra uma errorPage.jsp

pegando a msg por [code]

<%=exception.getMessage()%>

[/code]