[ mvasicdo @ 21.05.2008. 08:17 ] @
Pozdrav,

potrebna mi je mala pomoc.... Imam Servlet koji treba da proslijedi podatke iz baze JSP stranici.
Struktura iz tabele je sledeca: id,ime, prezime, adresa.
Na koji nacin da proslijedim podatke a da ne moram u servletu ganerisati HTML?
Gledao sam neke primjere gdje se koristi "bean" kao jedan red podataka, ali sta kad imam vise redova, kako da rezultat queryja proslijedim jsp stranici.
Ako moze neki detaljniji primjer posto sam pocetnik....
[ karas @ 21.05.2008. 08:27 ] @
http://pdf.coreservlets.com/ poglavlja 14 i 15 bi trebalo da ti daju odgovore, sa sve detaljnim primerima.
[ zigizig @ 21.05.2008. 09:37 ] @
Ne znam kakva ti je struktura aplikacije ali pokusacu



Napravis model klasu (npr. User) koja predstavlja tabelu u bazi (id, ime... i svi geteri i seteri)

Napravis klasu koja ce bit pozivana iz jsp strane (npr. UserList).
U njoj definises
* listu model klasa (List<User> listUser;) sa set i get
* public metodu load() u kojoj ces uraditi upit na bazu (kako si vec to osmislio ne znam, mozda direktno u metodi a mozda pozivom druge klase)
zatim ces u for petlji napuniti listUser tako sto u petlji instanciras User i popunis podacima pa dodas u listUser i tako za svaki red rezultata
Jedna user klasa predstavlja jedan red u bazi
listUser = new ArrayList<User>();
for(lista rezultata) {
User user = new User();
user.setId(rezultat.id);
...
listUser.add(user);
}

U jsp strani dodas
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> (dodaj u aplikaciju jstl paket)
<jsp:useBean id="userList" class="putanjaDoKlase.UserList" scope="request" />

Ispod toga napravis scriplet u kojem pozoves load metodu
<%
userList.load();
%>

i tamo gde zelis da izlistas rezultate
<table>
<c:forEach items="${userList.listUser}" var="row" >
<tr>
<td><c:out value="${row.id}" /></td>
<td><c:out value="${row.ime}" /></td>
...
</tr>
</c:forEach>
</table>

Naravno listanje mozes i bez jstl ali je ovako lepse heh
To je otprilike to, nadam se da nisam nesto izostavio ;)
[ mvasicdo @ 21.05.2008. 09:49 ] @
Prvo da se zahvalim na brzim odgovorima.....
Ok, probat cu vase primjere..

Ja sam to pokusao uraditi na ovaj nacin (da napomenem da korisim hibernate framework za konekciju sa bazom):

SERVLET:
Session session = sessions.openSession();
Query query = session.createQuery("select e.id,e.fname,e.lname from Employee e");

Vector v = new Vector();
for(Iterator iter = query.iterate();iter.hasNext();){
Object[] row = (Object[])iter.next();
v.add(new Object[]{row[0],row[1],row[2]});
}
HttpSession sess = request.getSession(true);
sess.setAttribute("Employee", v);

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

JSP:
<body>
<%
Vector v = (Vector)session.getAttribute("Employee");
Iterator i = v.iterator();
while(i.hasNext()){
Object[] row = (Object[])i.next();
%>
<br /> id: <%= (Integer)row[0] %> fname: <%= (String)row[1] %> lname: <%= (String)row[2] %>
<%
}
%>
</body>

ovo radi, ali me interesuju performanse izvrsavanja ovog dijela koda, isto tako ispravnost itd.
[ nedeljko_11460 @ 21.05.2008. 10:45 ] @
Cao , evo resenja koje datira iz perioda dok sam jos bio pocetnik i imao slicne probleme mozda ce ti koristiti. Sve je odradjeno uz upotrebu javine klase Vector mada se savet koji ti je dao zigizig dosta cesce primenjuje .
Code:

import java.io.*;
import java.util.*;
import java.sql.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class ListaKozmetike extends HttpServlet{
    String upit="";
    String greska="";
    Connection con=null;
    Statement stmt=null;
    ResultSet RS=null;
    
    ServletContext sc=null;
    RequestDispatcher rd=null;
    public void doGet(HttpServletRequest req,HttpServletResponse res)
    throws ServletException,IOException    {
        doPost(req,res);
    }
    public void doPost(HttpServletRequest req,HttpServletResponse res)
    throws ServletException,IOException    {
        
        sc=getServletContext();
        try{
            
            poveziMe(req,res);
            zatvoriKonekciju();
            pozoviJSP(req,res);
        }catch(Exception e){
            greska="Doslo je do greske pokusajte ponovo!";
            proslediGresku(greska,req,res);
            greska="";
            
        }
    }
    public void poveziMe(HttpServletRequest req,HttpServletResponse res){
        HttpSession session=null;
        session=req.getSession(true);
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            String url="jdbc:mysql://localhost:3306/BazaKozmetike";
            con=DriverManager.getConnection(url,"root","admin");
            stmt=con.createStatement();
            String query="SELECT * FROM KOZMETIKA";
            RS=stmt.executeQuery(query);
            int br_proizvoda=0;
            Vector proizvodDetalji=new Vector();
            while(RS.next()){
                br_proizvoda++;
                Vector proizvod=new Vector();
                for(int i=1;i<=5;i++){
                    if(i==1)
                        proizvod.addElement(new Integer(RS.getInt(i)));
                    else if(i==2 || i==3)
                        proizvod.addElement(RS.getString(i));
                    else if(i==4)
                        proizvod.addElement(new Integer(RS.getInt(i)));
                    else
                        proizvod.addElement(new Float(RS.getFloat(i)));
                }
                proizvodDetalji.addElement(proizvod);
            }
            session.setAttribute("proizvodDetalji",proizvodDetalji);
            session.setAttribute("br_proizvoda",new Integer(br_proizvoda));
        }catch(Exception e){
            e.printStackTrace();
            greska="Konekcija sa bazom podataka nije uspela";
            proslediGresku(greska,req,res);
            greska="";
        }
    }
    public void zatvoriKonekciju(){
        if(con!=null){
            try{
                con.close();
            }
        catch(SQLException e){
            e.printStackTrace();
            greska="Greska prilikom zatvaranja konekcije sa bazom podataka";
            //proslediGresku(greska,req,res);
            greska="";
        }
      }
   }
    public void proslediGresku(String s,HttpServletRequest req,HttpServletResponse res){
        HttpSession session=null;
        session=req.getSession(true);
        session.setAttribute("greska", greska);
        rd=sc.getRequestDispatcher("/Greska.jsp");
        try{
            rd.forward(req, res);
            greska="";
        }catch(Exception e){
            
        }
    }
    public void pozoviJSP(HttpServletRequest req,HttpServletResponse res){
        try{
            rd=sc.getRequestDispatcher("/listaKozmetike.jsp");
            rd.forward(req,res);
        }catch(Exception e){
            greska="nije uspelo "+e;
            proslediGresku(greska,req,res);
            greska="";
        }
    }
    
    
}



i jsp strana za prikaz liste
Code:

<%@ page language="java"%>
<%@ page import ="java.util.*"%>

<html>
<head><title>Lista kozmtike</title></head>
<body bgColor="#F7E179">
<center><font face="Verdana,Arial"><h3>Lista proizvoda</h3></font></center>
<%!int br_proizvoda;%>
<%!Vector proizvodi;%>
<%!Vector proizvodDetalji;%>
<%
    br_proizvoda=(new Integer(session.getAttribute("br_proizvoda").toString())).intValue();
    proizvodDetalji=(Vector)session.getAttribute("proizvodDetalji");
%>

<table width="600" border="0" align="center">
<tr>
    <td bgColor="#66999cc"><b><font face="Verdana" size="2" color="#FFFFFF"> ID </font></b></td>
    <td bgColor="#66999cc"><b><font face="Verdana" size="2" color="#FFFFFF">IME</font></b></td>
    <td bgColor="#66999cc"><b><font face="Verdana" size="2" color="#FFFFFF">OPIS</font></b></td>
    <td bgColor="#66999cc"><b><font face="Verdana" size="2" color="#FFFFFF">KOLICINA</font></b></td>
    <td bgColor="#66999cc"><b><font face="Verdana" size="2" color="#FFFFFF">CENA</font></b></td>
</tr>
<%for(int m=0;m<br_proizvoda;m++){%>
<%proizvodi=(Vector)proizvodDetalji.elementAt(m);%>
<tr>
    <td bgcolor=="#FFFFCC">
        <div align="left"><b><font face="Verdana" size="2" color="#000066"><%=(Integer)proizvodi.elementAt(0)%>
        </font></b></div>
    </td>
    <td bgcolor=="#FFFFCC">
        <div align="left"><b><font face="Verdana" size="2" color="#000066"><%=(String)proizvodi.elementAt(1)%>
        </font></b></div>
    </td>
    <td bgcolor=="#FFFFCC">
        <div align="left"><b><font face="Verdana" size="2" color="#000066"><%=(String)proizvodi.elementAt(2)%>
        </font></b></div>
    </td>
    <td bgcolor=="#FFFFCC">
        <div align="left"><b><font face="Verdana" size="2" color="#000066"><%=(Integer)proizvodi.elementAt(3)%>
        </font></b></div>
    </td>
    <td bgcolor=="#FFFFCC">
        <div align="left"><b><font face="Verdana" size="2" color="#000066"><%=(Float)proizvodi.elementAt(4)%>
        </font></b></div>
    </td>
    <%}%>
</tr>
</table>

</body>
</html>
[ franticnick @ 21.05.2008. 13:35 ] @
Za jednostavne stvari standardni SQL Tag Library odradjuje posao:

http://java.sun.com/javaee/5/docs/tutorial/doc/bnald.html