Busca dinâmica em java web

11 respostas
newuser

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!

newuser

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.

newuser

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.

newuser

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…

newuser

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…

newuser

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