Busca dinâmica em java web

11 respostas
N

Olá amigos do GUJ. Eu tenho um sistema de busca feito em PHP e agora tenho dúvida de como fazer em java web.

Segue o código em php:

Form com os campos da busca.

<form name="form1" method="post" action="index.php?mod=67">
   <fieldset class="fieldset"><legend><b>Filtrar por:</b></legend>
   <br />
    <table border="0" width="995">
     <tr>
       <td width="410" align='left'>Nome Fantasia:</td>          
       <td width="365" align='left'>Ramo de Atividade:</td>
       <td width="200" align='left'></td>
     </tr>
     <tr>
       <td width="410" height="40"><input type=text name="nome" size="60" maxlength="75" tabindex="1"></td>          
       <td width="365" align='left'><input type=text name="ramo" size="53" maxlength="75" tabindex="2"></td>
       <td width="200" align='left'><input type=submit name="btpesquisar" value="Pesquisar"></td>
     </tr>    
    </table>
    <br>                                               
    </fieldset>
   <!--fecha form para procurar job-->
   </form>
   <?php
       //inclui o arquivo que traz o resultado da busca
       include "buscafornecedor.php";
?>

e o arquivo que faz a busca:

<?php
require "conexao.php";

//inicio o critério
$criterio = "";

//se o critério de busca for pelo nome
if ($_POST["nome"]!=""){
    $txt_criterio = $_POST["nome"];
    $criterio = "where NomeFantasia_Pessoas like '%" . $txt_criterio . "%' order by NomeFantasia_Pessoas asc";
}

//se o critério de busca for pelo ramo
if ($_POST["ramo"]!=""){
    $txt_criterio2 = $_POST["ramo"];
    $criterio = "where RamoAtividade_Pessoas like '%" . $txt_criterio2 . "%' order by RamoAtividade_Pessoas asc";
}


//monta a sql com o critério de busca escolhido
   $ssql2 = "select * from fornecedores " .$criterio. " ";   
   $rs = mysql_query($ssql2);
   $total = mysql_num_rows($rs);
?>

<div id="texto"><p><?php if($total>0){ echo "Total de: <b>$total</b> Fornecedores.";}elseif($total==0){ echo "Nenhum resultado para a sua busca.";}?></p></div>
<!--exibir resultado da busca  -->
<table class="titulo" cellspacing="0" cellpadding="0">
  <tr>
    <td class="titulocel" width="100">Número</td>
    <td class="titulocel" width="435">Nome</td>
    <td class="titulocel" width="430">Ramo de Atividade</td>
    <td class="titulocel" width="30"></td>
  </tr>
  <tr>
    <td colspan="6"><div id="conteudo">
    <div id="resultado">
    <table width="975" border="0" cellspacing="1" cellpadding="0">
<?php
  while ($fila = mysql_fetch_array($rs)){
      $idlista = $fila['Numero_Pessoas'];
      $nomelista = $fila['NomeFantasia_Pessoas'];
      $ramolista = $fila['RamoAtividade_Pessoas'];
?>

  <tr valign="middle">
    <td height="30" width="100" align="center" bgcolor="#FFFFFF"><?php echo $idlista;?></td>
    <td height="30" width="435" align="center" bgcolor="#FFFFFF"><?php echo $nomelista; ?></td>
    <td height="30" width="430" align="center" bgcolor="#FFFFFF"><?php echo $ramolista; ?></td>
    <td height="30" width="30" align="right" bgcolor="#FFFFFF"><a href='index.php?mod=4&np=<?php echo $idlista; ?>' title='Selecionar Fornecedor'><img src='img/selecionar.jpg' height="30" width="30" border='0'/></td>
  </tr>
<?php
}
?>
    </table>
   </div>
</div></td>
  </tr>
</table>

A dúvida é como fazer isso com jsp, dao, service e model. Não estou pedindo tudo mastigado, só quero saber o modo fazê-lo orientado a objeto.

Obrigado.

11 Respostas

M

Boa tarde, bem vc pode usar primefaces que vai facilitar a sua vida, lá vc vai encontrar o “autocomplete” que é bem “facim” de fazer! Segue o link para o primefaces:

LINK: http://www.primefaces.org/

Esse framework encapsula o JQuery, então vc vai ver como é fácil de entender e de desenvolver, além da facilidade de configuração. Boa sote!

N

Eu ainda não trabalhei com jsf, ainda sou iniciante, eu estou usando jsp. Você quer dizer então que tenho que fazer isso com ajax?

Ou tem outra maneira?

R

em jsp você pode fazer da mesma forma, quando submeter, vc recupera as váriavies e testa qual veio e compõe o sql da mesma forma que fez no php.

N

Então eu verifico por exemplo se nome está diferente de vazio e faço a sql buscando pelo campo nome?

se for o ramo que estiver diferente de vazio eu faço outra sql buscando pelo campo ramo?

Para cada campo eu faço uma sql diferente?

R

sim pode concatenar os where como fez no php.

N

Então quer dizer que eu faço a verificação e concatenação do where normalmente na classe DAO?
como no esboço abaixo:

public Fornecedor buscar(nome,ramo){

//inicio o critério  
criterio = "";  
  
//se o critério de busca for pelo nome  
if (!nome.equals(""){  
    txt_criterio = nome;
    criterio = "where NomeFantasia_Pessoas like '%" . txt_criterio . "%' order by NomeFantasia_Pessoas asc";  
}  
  
//se o critério de busca for pelo ramo  
if (!ramo.equals(""){  
    txt_criterio2 = ramo; 
    criterio = "where RamoAtividade_Pessoas like '%" . txt_criterio2 . "%' order by RamoAtividade_Pessoas asc";  
}  
 
//monta a sql com o critério de busca escolhido  
  sql = "select * from fornecedores " .criterio. " ";     

}
R

bem esta seria uma forma, apenas similar a que você ja utilizava.
talvez vc pode dividir em métodos cada um para uma sql e assim ficaria mais OO.

quanto ao uso de sql sugiro vc apreender um framework de persistencia tipo Hibernate ou trabalhar com JPA que a padronização dos frameworks de persistencia…

N

O Hibernate eu uso com jsp mesmo?

R

independente da visão que esta utilizando, seja jsp, jsf ou outros vc pode trabalhar com Hibernate sim…

N

Tá bom. Então eu vou tentar aprender sim.

Muito obrigado você me ajudou muito.

M

veja se te ajuda … primefaces

http://www.primefaces.org/showcase-labs/ui/datatableFiltering.jsf

Criado 12 de janeiro de 2012
Ultima resposta 14 de jan. de 2012
Respostas 11
Participantes 4