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