Boa noite,
Tenho um metodo/classe DAO que faz determinas operacoes,
Por exemplo,
Possuo um metodo chamado
publicvoidverificaEstoque(){.....}
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Ê.
leandro.augusto
Ok chefe,
mas sobre a minha pergunta, os que manja muito ai, alguma dica?
Hebert_Coelho
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. [=
leandro.augusto
caro amigo, jakefrog:
no meu metodo:
publicvoidverificaEstoque(){try{List<Produto>produtos=newArrayList<Produto>();PreparedStatementstmt=(PreparedStatement)this.connection.prepareStatement("select * from produto");ResultSetrs=stmt.executeQuery();while(rs.next()){// criando o objeto ProdutoProdutoproduto=newProduto();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 CalendarCalendardata=Calendar.getInstance();data.setTime(rs.getDate("dataCadastro"));produto.setDataCadastro(data);produto.setSecaoProduto(rs.getString("secaoProduto"));produto.setFornecedor(rs.getString("fornecedor"));// adicionando o objeto à listaprodutos.add(produto);intqtde=(rs.getInt(("estoque")));if(qtde<=1){System.out.println("quantidade menor que = "+qtde);BaixaEstoqueDAO.connection.close();thrownewSQLException(" >> 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(SQLExceptione){thrownewRuntimeException(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
<td><%=exception.toString()%></td>
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?
Hebert_Coelho
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();
leandro.augusto
Caro amigo JakeFrog,
criei minha classe:
packagebr.controle.excecoes;importjava.sql.SQLException;publicclassBaixaEstExceptionextendsSQLException{// 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!!!
Ela ira extender de SQLException? ou RuntimeException, porque dai terei q chamar la na minha servlet… Ou nada a ver?
Hebert_Coelho
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.
leandro.augusto
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 :
publicvoidverificaEstoque()throwsRuntimeException{// vai mais N coisas aki......//etc}rs.close();stmt.close();return;}catch(SQLExceptione){thrownewRuntimeException("- 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.