Ajuda para montar uma estrutura

9 respostas
F

Senhores, estou matutando aqui uma forma ideal de fazer uma busca no banco de forma padronizada e correta…A esturutra do sistema está assim

Jsp->Servlet->Beans->Persistencia(Inserts, updadets, selects…)

Bom vou tentar explica:

O Jsp envia a requisição de uma busca no banco, essa requisição é “capturada” pelo servlet e tratada…Agora vem minha dúvida, tenho os Beans com os gets e sets…Agora como a persistencia retornará esses resultados??? inserindo direto nos sets dos beans e o servlet recuperando para exibir na jsp com os gets desse mesmo beans?? Mas o ideal seria retornar uma Collection , já que serão vários resultados…Não sei se vc entederam, mas qual a melhor forma…ex:

// classe persistencia
public void busca(String query{
        con=cx.getConect();
        ResultSet rs=null;
        Statement st=null;
        try{
        st=con.createStatement();
        rs=st.executeQuery(query);
        while(rs.next()){
        //aqui como seria??? instanciaria a classe beans e colocaria
        beanInstanciado.setNome(rs.getString("nome"));
.............
        }
        }

O lance que assim , a cada resultado um sobreporia o outro com certeza…

Usando a colectioj

// classe persistencia
public void busca(String query{
        con=cx.getConect();
        ResultSet rs=null;
        Statement st=null;
        try{
        st=con.createStatement();
        rs=st.executeQuery(query);
        while(rs.next()){
        //usando um vetor
       vetor.addElement(rs.getString("nome"));
.............
        }
        }

Então retornaria o vetor…mas teria que “Distrincha-lo” na jsp isso estaria incorreto…

Valeu!! Deem uma luz ae!!! :lol:

9 Respostas

M

Resposta simples, use jstl, para isto consulte os tutoriais aqui do PJ.

:okok:

I

vc deu a resposta, ve só:

public void busca(String query{
        con=cx.getConect();
        ResultSet rs=null;
        Statement st=null;
        try{
        st=con.createStatement();
        rs=st.executeQuery(query);
        while(rs.next()){
        vetor.addElement( new instanciaNovoBean.setNome(rs.getString("nome")) ); 

.............
        }
        }

daí tu retorna a collection de beans.

G

De acordo com a dica do Marcos, para exibir os dados que você obteve na persistência, utilize um foreach:

<c:forEach items='${sua_colection}' var='itens'>

   <c:out value='${itens}'/>

</c:forEach>

Se não ficou claro, poste a dúvida FelipeSS_2.

:wink:

F

“marcossousa”:
Resposta simples, use jstl, para isto consulte os tutoriais aqui do PJ.

:okok:

Sim , , estou usando Tl sim…Minha dúvida é na formação da colection e como ela deve ser entregue!!

F
"JavaPlayer":
De acordo com a dica do Marcos, para exibir os dados que você obteve na persistência, utilize um foreach:
<c:forEach items='${sua_colection}' var='itens'>

   <c:out value='${itens}'/>

</c:forEach>

Se não ficou claro, poste a dúvida FelipeSS_2.

:wink:

Valu cara é isso mesmo que estou fazendo.....Mas continuo sem saber como formular passando pelos Beans...só concigo fazer funcionar da persist direto para o servlet ou Tl

"indivito":
vc deu a resposta, ve só:
public void busca(String query{
        con=cx.getConect();
        ResultSet rs=null;
        Statement st=null;
        try{
        st=con.createStatement();
        rs=st.executeQuery(query);
        while(rs.next()){
        vetor.addElement( new instanciaNovoBean.setNome(rs.getString("nome")) ); 

.............
        }
        }

daí tu retorna a collection de beans.

Não entendi..como assim?? Tem como explicar melhor

G
"FelipeSS_2":
"JavaPlayer":
De acordo com a dica do Marcos, para exibir os dados que você obteve na persistência, utilize um foreach:
<c:forEach items='${sua_colection}' var='itens'>

   <c:out value='${itens}'/>

</c:forEach>

Se não ficou claro, poste a dúvida FelipeSS_2.

:wink:

Valu cara é isso mesmo que estou fazendo.....

Quanto a dúvida de como formar a Collection:

// classe persistencia
public void busca(String query{

        con=cx.getConect();
        ResultSet rs=null;
        Statement st=null;

        List dados = new ArrayList(); 

        try{
        st=con.createStatement();
        rs=st.executeQuery(query);

        while(rs.next()){

               Bean pessoa = new Bean();
               pessoa.setNome(rs.getString("nome"));
               pessoa.setNome(rs.getString("idade"));
   
               dados.add(pessoa); 

        }
}

Para retornar a Collection para o JSP:

request.setAttribute("dados");

e no JSP:

<c:forEach items="${dados}" var="dados" >
       <tr>
          <td>
               <c:out value="${dados}"/>
           </td>
       </tr>
</c:forEach>

Bom.. é basicamente isso aí!

:wink:

F
"JavaPlayer":
"FelipeSS_2":
"JavaPlayer":
De acordo com a dica do Marcos, para exibir os dados que você obteve na persistência, utilize um foreach:
<c:forEach items='${sua_colection}' var='itens'>

   <c:out value='${itens}'/>

</c:forEach>

Se não ficou claro, poste a dúvida FelipeSS_2.

:wink:

Valu cara é isso mesmo que estou fazendo.....

Quanto a dúvida de como formar a Collection:

// classe persistencia
public void busca(String query{

        con=cx.getConect();
        ResultSet rs=null;
        Statement st=null;

        List dados = new ArrayList(); 

        try{
        st=con.createStatement();
        rs=st.executeQuery(query);

        while(rs.next()){

               Bean pessoa = new Bean();
               pessoa.setNome(rs.getString("nome"));
               pessoa.setNome(rs.getString("idade"));
   
               dados.add(pessoa); 

        }
}

Para retornar a Collection para o JSP:

request.setAttribute("dados");

e no JSP:

<c:forEach items="${dados}" var="dados" >
       <tr>
          <td>
               <c:out value="${dados}"/>
           </td>
       </tr>
</c:forEach>

Bom.. é basicamente isso aí!

:wink:

Beleza valeu cara, mas mesmo assim , não vejo a nescessidade do Bean , saca....Não sei se vc entendeu , mas posso passar a colection direto, sem setar o Bean e ir lendo os elementos na pagina...Como fazer o procedimento eu tenho conhecimento("transporte" para a srvlet, "destrinchamento arg :) da collection no JSTL..."O lance é ..estou tentando implementar uma forma correta MVC, saca....Mas beleza , já deu uma luz legal valeu java player

M

Salve,

bem pelo que eu vi, você está com dúvidas quanto a organização da estrutura… bem eu faço da seguinte maneira… Tenho um Controlador que passa as operações para beans tipo cliente, produto etc e pego os valores retornados a ele e jogo como atributo da solicitação e redireciono para um jsp… Bem tem na JavaMagazine um exemplo disto, mas eu não lembro qual edição.

:okok: :pensativo:

I

“FelipeSS_2”:

Beleza valeu cara, mas mesmo assim , não vejo a nescessidade do Bean , saca…Não sei se vc entendeu , mas posso passar a colection direto, sem setar o Bean e ir lendo os elementos na pagina…Como fazer o procedimento eu tenho conhecimento(“transporte” para a srvlet, "destrinchamento arg :slight_smile: da collection no JSTL…"O lance é …estou tentando implementar uma forma correta MVC, saca…Mas beleza , já deu uma luz legal valeu java player

felipe,
ta certo que vc nao PRECISA do bean pra enviar os dados. mas o motivo dele eh simples: encapsulamento!!!
isso é um dos principios da OO

flw

Criado 4 de julho de 2005
Ultima resposta 6 de jul. de 2005
Respostas 9
Participantes 4