Auf List mit JSP zugreifen

Status
Nicht offen für weitere Antworten.
R

rbrose

Gast
Ich habe eine Seite aufgebaut mit Struts.

Und ich habe jetzt ein problem und zwar:
Ich lese mit Hibernate eine Tabelle aus der Datenbank aus und füge die Daten in eine LIST

Meine Frage ist jetzt wie bekomme ich die Daten von der List in der .java in eine JSP?

hier der Code
Code:
/**
 * Created by IntelliJ IDEA.
 * User: rbrose
 * Date: 20.10.2004
 * Time: 15:45:27
 * To change this template use File | Settings | File Templates.
 */

import org.apache.struts.action.*;

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.util.Date;
import java.util.List;

import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;

public class HelloWorldAction extends Action
{
    private SessionFactory sessionFactory;

    String username;
    String email;
    String homepage;
    String icq;
    String wohnort;
    String kommentar;
    String radio1;

    public ActionForward execute(ActionMapping actionMapping,
                                 ActionForm actionForm,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws IOException, ServletException
    {
        loginForm form = (loginForm) actionForm;

        username = form.getUsername();

        email = form.getEmail();
        homepage = form.getHomepage();
        icq = form.getIcq();
        wohnort = form.getWohnort();
        kommentar = form.getKommentar();
        radio1 = form.getRadio1();

        initDatabase();
        setDatabaseSource(username,email,homepage,icq,wohnort,kommentar,radio1);

        request.setAttribute("radio1", radio1 );
        request.setAttribute("kommentar", kommentar);
        request.setAttribute("wohnort", wohnort);
        request.setAttribute("icq", icq);
        request.setAttribute("homepage", homepage);
        request.setAttribute("email", email);
        request.setAttribute("user", username);

        // test output

        List events = getDatabaseSource();
			for (int i = 0; i<events.size(); i++) {
				Event theEvent = (Event) events.get(i);
				System.out.println("Event " + theEvent.getName() + " Time: " + theEvent.getDate() + " ICQ: " + theEvent.getIcq());
			}
        

        //--------------


        return actionMapping.findForward("success");
    }

    public void initDatabase()
    {
          try {
			System.out.println("Initializing Hibernate");
			sessionFactory = new Configuration().configure().buildSessionFactory();
			System.out.println("Finished Initializing Hibernate");
		} catch (HibernateException e) {
			e.printStackTrace();
		}
    }

     public void setDatabaseSource(String name, String email, String homepage, String icq, String wohnort, String kommentar,String radio1)
    {
         Date datum = new Date();
         try {
            Session session = sessionFactory.openSession();
            Transaction tx = session.beginTransaction();

            Event theEvent = new Event();

            theEvent.setName(name);
            theEvent.setEmail(email);
            theEvent.setHomepage(homepage);
            theEvent.setIcq(icq);
            theEvent.setWohnort(wohnort);
            theEvent.setKommentar(kommentar);
            theEvent.setRadio1(radio1);

            theEvent.setDate(datum);

            session.save(theEvent);

            tx.commit();
            session.close();

        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }

    public List getDatabaseSource()
    {
        try {
			Session session = sessionFactory.openSession();
			Transaction tx = session.beginTransaction();

			List result = session.find("from Event");

			tx.commit();
			session.close();

			return result;
		} catch (HibernateException e) {
			throw new RuntimeException(e.getMessage());
		}
    }
}

Und die List die ich ausgelesen hab muss hier sein

Code:
<table>
<tr>
   <td>
        Name:  
   </td>
   <td>
       E-Mail:
   </td>
   <td>
       ICQ:
   </td>
   <td>
       Homepage:
   </td>
   <td>
       Wohnort:
   </td>
   <td>
       Kommentar:
   </td>

</tr>
</table


Die Tabelle muss also sich aufbauen, das heisst die Tabelle muss in eine Schleife.


Danke schonmal für die Hilfe
 
B

bygones

Gast
speichere die Liste in einem Bean ab und speichere den Bean in dem Request in der Action. Auf der success Seite holst du dir den Bean aus dem Request und damit dann auch die Liste....
 
R

rbrose

Gast
Kann du mit Beispiel geben Sourcecode?
Ich weiss nicht wie ich das mache
 
B

bygones

Gast
Bleiglanz hat gesagt.:
Hä? Die Liste selbst kannst du mit setAttribute in den Request scope legen und auf der jsp-Seite einfach wieder mit <jsp:useBean rausholen
klar - das natürlich auch :D
 

baer1208

Aktives Mitglied
hy @ all!

hab so ähnliches problem:
wills mit setAttribute machen...doch in welche Bean muss ich das schreiben?? in der Bean, wo die Liste erzeugt wird??
Code:
persons.setAttribute(personen, persons);
??
oder doch wo anders?
danke schon mal für die antwort(en)!

sAn
ciao baer
 

KSG9|sebastian

Top Contributor
Welchen Typ verwendet ihr ?

java.util.List oder die ListenImplementation von Hibernate ? Wenn ihr die von Hibernate verwendet solltet ihr über die Liste iterieren ( List#iterator() ) und die Daten in ne andere Struktur bringen.

Dann schreibt ihr den Bean einfach in den Request:

Code:
List a = getDataFromDb(); //Daten mittels Hibernate auslesen
//In der Liste befinden sich nun die Daten, und zwar in Form von
//objekten der jeweiligen Tabelle/Klassen
request.setAttribute("daten", a);

Dann könnt ihr mittels jsp:useBean ... drauf zugreifen und mit

logic:iterate über die Liste iterieren

//Edit:

Ich koppelt doch for nen FormBean ne ActionForm, nehm ich mal an! Dann schreibt ihr das ganze in die ActionForm. Ist aber nicht die sauberste Lösung. Die beste Lösung wäre, wenn ihr den FormBean in der ActionForm mit Daten befüllt, auch gleich die DB-Daten mitgeben.
 

KSG9|sebastian

Top Contributor
Sieht dann so aus:

Code:
/**
* Created by IntelliJ IDEA.
* User: rbrose
* Date: 20.10.2004
* Time: 15:45:27
* To change this template use File | Settings | File Templates.
*/

import org.apache.struts.action.*;

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.util.Date;
import java.util.List;

import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;

public class HelloWorldAction extends Action
{
    private SessionFactory sessionFactory;

    String username;
    String email;
    String homepage;
    String icq;
    String wohnort;
    String kommentar;
    String radio1;

    public ActionForward execute(ActionMapping actionMapping,
                                 ActionForm actionForm,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws IOException, ServletException
    {
        loginForm form = (loginForm) actionForm;

        username = form.getUsername();

        email = form.getEmail();
        homepage = form.getHomepage();
        icq = form.getIcq();
        wohnort = form.getWohnort();
        kommentar = form.getKommentar();
        radio1 = form.getRadio1();

//Change
        form.setData(<Hier die Daten aus der DB>);
//Change Ende
        initDatabase();
        setDatabaseSource(username,email,homepage,icq,wohnort,kommentar,radio1);

        request.setAttribute("radio1", radio1 );
        request.setAttribute("kommentar", kommentar);
        request.setAttribute("wohnort", wohnort);
        request.setAttribute("icq", icq);
        request.setAttribute("homepage", homepage);
        request.setAttribute("email", email);
        request.setAttribute("user", username);

        // test output

        List events = getDatabaseSource();
         for (int i = 0; i<events.size(); i++) {
            Event theEvent = (Event) events.get(i);
            System.out.println("Event " + theEvent.getName() + " Time: " + theEvent.getDate() + " ICQ: " + theEvent.getIcq());
         }
       

        //--------------


        return actionMapping.findForward("success");
    }

    public void initDatabase()
    {
          try {
         System.out.println("Initializing Hibernate");
         sessionFactory = new Configuration().configure().buildSessionFactory();
         System.out.println("Finished Initializing Hibernate");
      } catch (HibernateException e) {
         e.printStackTrace();
      }
    }

     public void setDatabaseSource(String name, String email, String homepage, String icq, String wohnort, String kommentar,String radio1)
    {
         Date datum = new Date();
         try {
            Session session = sessionFactory.openSession();
            Transaction tx = session.beginTransaction();

            Event theEvent = new Event();

            theEvent.setName(name);
            theEvent.setEmail(email);
            theEvent.setHomepage(homepage);
            theEvent.setIcq(icq);
            theEvent.setWohnort(wohnort);
            theEvent.setKommentar(kommentar);
            theEvent.setRadio1(radio1);

            theEvent.setDate(datum);

            session.save(theEvent);

            tx.commit();
            session.close();

        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }

    public List getDatabaseSource()
    {
        try {
         Session session = sessionFactory.openSession();
         Transaction tx = session.beginTransaction();

         List result = session.find("from Event");

         tx.commit();
         session.close();

         return result;
      } catch (HibernateException e) {
         throw new RuntimeException(e.getMessage());
      }
    }
}

In dem Bean müsst ihr eben nen Getter und Setter bzw. das Attribut dazu machen
 

baer1208

Aktives Mitglied
sorry für meinen zwischenpost! mein problem hat sich erledigt..funzt!

danke für die tollen posts in diesem forum!

ciao baer
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N GWT - RPC String-Array in einer List Allgemeines EE 2
S JSP Expression Language java.util.List Allgemeines EE 2
T Servlet-Mapping und Welcome-File-List unter Websphere? Allgemeines EE 2
G list in session schreiben Allgemeines EE 4
V List ausgeben Allgemeines EE 4
T Wie kann ich eine große Datenmenge vorhalten, damit ich seitens Frontend darauf zugreifen kann? Allgemeines EE 17
J Maven: mit JUnit auf Test- und Main-Classes zugreifen Allgemeines EE 3
T Einstieg in J2EE: Remote auf Bean zugreifen Allgemeines EE 11
B Tomcat6/axis1.4 kann nicht auf Dateien zugreifen Allgemeines EE 3
A Im PhaseListener auf Stateful Session Bean zugreifen Allgemeines EE 6
T Auf GlassFish JDBC-Ressourcen zugreifen Allgemeines EE 4
S Auf Datei ausserhalb des Tomcat zugreifen Allgemeines EE 4
A Aus einer JSP zugreifen auf ein Objekt einer anderen JSP Allgemeines EE 4
H JSF: Mit BenutzerId auf Nutzerdaten zugreifen Allgemeines EE 6
M Aus JSP auf EJB zugreifen Allgemeines EE 7
boxi JSF von einem Bean auf ein anderes Bean zugreifen Allgemeines EE 3
M Web Anwendung soll auf Basisobjekte zugreifen können Allgemeines EE 2
M Aus einem Servlet auf ein anderes zugreifen ? Allgemeines EE 2
ARadauer aus j2se anwendung auf j2ee elemente zugreifen Allgemeines EE 2
F Wie auf request.params mittels ${} zugreifen? Allgemeines EE 7
J Servlet Parameter aus web.xml übergeben, wie zugreifen? Allgemeines EE 2
K JSP mit JavaBeans auf Oracle zugreifen Allgemeines EE 3
H Von einem Servlet auf ein anderes zugreifen Allgemeines EE 4
M JSP/Servlet auf Festplatte zugreifen Allgemeines EE 8
J auf AppServer aus dem Internet zugreifen Allgemeines EE 3
clemson [Struts] Innerhalb Action auf form zugreifen Allgemeines EE 4
S jsp auf Servlet Context zugreifen Allgemeines EE 1

Ähnliche Java Themen


Oben