Dúvida de como interromper execução do servlet

6 respostas
leorbarbosa

Boa tarde,

o código abaixo é executado sob uma determinada condição. Se já existir um registro, devo interromper o fluxo e retornar à página de cadastro.

Como fazer isto?
Como colocar um alerta ‘javascript’ e retornar ( com ‘sendRedirect’ ou ‘forward’) ?

// Sql de procura    
    String sql = "SELECT ... FROM TB_... ";
    sql_procura += "WHERE ID_PESSOA = " + id_pessoa;
    PreparedStatement pst = null;
    ResultSet rst = null;
    try
    {
      pst = con.prepareStatement(sql_procura);
      rst = pst.executeQuery();
      if ( rst.first() )
      {
        // Alerta: redirecionar com 'forward' ou 'sendRedirect' ???
        // javaScript ???        
        //response.sendRedirect("profissional.jsp");
      }

Obrigado a quem puder ajudar.

6 Respostas

bruno.leite

kra, pra fazer isso aí do jeito vc quer, vc vai ter q escrever código html no servlet, oq não é recomendado, vc pode jogar um atributo no request falando para o jsp escrever o código do javascript e no lugar de response.sendRedirect vc teria que usar RequestDispatcher rd = request.getRequestDispatcher(“profisional.jsp”);
rd.foward(request, response);

[]'s

rogelgarcia

Tem que dar return no método também… Se não, o servlet continua sendo executado…

rst = pst.executeQuery();  
  if ( rst.first() )  
  {  
    // faz o que vc achar melhor
    return;//se nao tiver esse return o método continua sendo executado..
  }

Mas particularmente eu não gosto muito de fazer essas construções com return no meio do método não… Geralmente eu organizo para ficar mais elegante…

leorbarbosa

Legal,

mas ainda preciso emitir uma alerta ao usuário antes do ‘return’.

att,

bruno.leite

Velho, vc não entendeu?
Não é possivel executar um código javascript no cliente antes de terminar a execução no servidor, ou seja, seu método do servlet vai ter q rodar primeiro, depois seu jsp, pra daí vc ter algo rodando no cliente.

leorbarbosa

Desculpe a ignorância meu velho…

Tô brincando de java baby ainda !

leorbarbosa

Valeu fera pela contribuição,

resolvido com a classe ‘RequestDispatcher’.

if ( rst.first() )
      {
        RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
        request.setAttribute("duplicado", "Já existe um registro....");
        dispatcher.forward(request, response);
        return;
      }
Criado 2 de março de 2010
Ultima resposta 2 de mar. de 2010
Respostas 6
Participantes 3