Jsp + servlet

7 respostas
C

Bom dia,

pessoal é o seguinte eu tenho um programa de cadastro de clientes, ele cadastra normal e me retorna “Cliente cadastrado com sucesso”
só que não estou conseguindo fazer o false por exemplo, caso o usuário não preencha todos os campos. A página só fica em branco e não
aparece o erro, que no caso seria “Erro ao cadastrar”. Poderiam me ajudar?

Servlet

if (obj_cad_dao.Adiciona(obj_cad_vo)) {   
  request.setAttribute("cadastro",true || false);   
  
                    RequestDispatcher rd = request.getRequestDispatcher("erro_cadastro.jsp");   
                    rd.forward(request,response);   
                       
            }  
if (obj_cad_dao.Adiciona(obj_cad_vo)) {
  request.setAttribute("cadastro",true || false);

                    RequestDispatcher rd = request.getRequestDispatcher("erro_cadastro.jsp");
                    rd.forward(request,response);
                    
            }

dao

public boolean Adiciona(cadastro_vo obj_cad_vo) throws SQLException {   
       {   
  
           String sql = "INSERT INTO cliente (razao,CNPJ,IE,endereco,estado,cidade,DDD,telefone,email_cli,senha) VALUES (?,?,?,?,?,?,?,?,?,?)";   
           boolean retorno = false;   
           try {   
               //Prepared Statement para Inserção   
               PreparedStatement stmt = connection.prepareStatement(sql); //relativo à conexão   
  
               //Seta os Valores   
               stmt.setString(1, obj_cad_vo.getRazao());  // para preencher os valores que são do tipo String, passando a posição (começando em 1) da interrogação no SQL   
               stmt.setString(2, obj_cad_vo.getCnpj());   
               stmt.setString(3, obj_cad_vo.getInscricao());   
               stmt.setString(4, obj_cad_vo.getEnd());   
               stmt.setString(5, obj_cad_vo.getEst());   
               stmt.setString(6, obj_cad_vo.getCidade());   
               stmt.setString(7, obj_cad_vo.getDdd());   
               stmt.setString(8, obj_cad_vo.getTel());   
               stmt.setString(9, obj_cad_vo.getEmail());   
               stmt.setString(10, obj_cad_vo.getSenha());   
  
               //Executa   
               stmt.execute();   
               stmt.close();   
               retorno = true;   
               // TODO Ver com o professor como retornar false   
                 
           } catch (SQLException e) {   
               throw new RuntimeException(e);   
           }finally{   
  
           return retorno;   
  
       }   
       }

E a jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   
   "http://www.w3.org/TR/html4/loose.dtd">   
  
<html>   
    <head>   
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">   
        <title>JSP Page</title>   
    </head>   
    <body>   
  
        <%Boolean ok = (Boolean) request.getAttribute("cadastro");%>   
            <%if(ok){%>   
            Cliente cadastrado com sucesso.   
            <%}else{%>   
            Erro ao cadastrar.   
            <%}%>   
  
            <br><a href="cadastro.jsp">Voltar ao Menu</a>   
    </body>   
</html>

7 Respostas

luiz_renato

Cara,

Vc precisa verificar se os seus parametros estão todos preenchidos p. ex atraves de um método que retorne boolean e chamar esse método no seu DAO, alterando o retorno da sua inserção de acordo com o resultado do método.

C

Não entendi direito… poderia me dar um exemplo disso na prática?

C

???

luiz_renato

Cara,
Pensa: vc tem vários parâmetros vindos do form, que estão no teu cadastro_vo certo? ANTES de fazer isso:

stmt.setString(1, obj_cad_vo.getRazao()); stmt.setString(2, obj_cad_vo.getCnpj()); // ....
vc faria: if (! validaVo(obj_cad_vo) ) { // retorna false no método Adiciona
O método : private boolean validaVO(cadastro_vo obj_vo) { //checa se os atributos são validos if (obj_cad_vo.getCnpj()==null || obj_cad_vo.getCnpj().equals("") ) { return false; } //faz o mesmo com os outros atributos , se nenhuum for nulo ou vazio retorna true
O ideal seria vc testar os parametros vindos do form ANTES de atribuir ao VO…

C

Ok, entendi o qe vc quiz dizer…
mais não consegui implementar este código que vc passou no meu código.

luiz_renato

Vamo lá!!

Como está seu código?

C

Meu código está como lá em cima…

como faço para implementar o que vc me passou ai na minha dao?

Criado 31 de março de 2011
Ultima resposta 31 de mar. de 2011
Respostas 7
Participantes 2