DB-Tabelle in Servlet einlesen und in JSP anzeigen

Status
Nicht offen für weitere Antworten.

ak

Bekanntes Mitglied
Hallo Leute,

ich habe eine Tabelle namens "dozenten", welche ich in einem Servlet einlese:
Code:
...
      Statement statement = connection.createStatement();
      String sqlQuery="select id, name, nachname from dozent";
      ResultSet resultset = statement.executeQuery(sqlQuery);
      while(resultset.next()){
        //hier kommt noch was...
      }
...
Nachdem die Werte vom Servlet eingelesen wurden wird zu einer JSP umgeleitet:
Code:
...
    RequestDispatcher dispatcher = 
    request.getRequestDispatcher("/WEB-INF/Sites/Dozenten.jsp");
    dispatcher.forward(request, response);
...
Jetzt möchte ich die drei Werte (id, name, nachname) für alle Datensätze im Servlet in einem Vector oder sonstiger Collection speichern und diese Werte dann anschließend in einer JSP ausgeben.

Wie würdet ihr diese Werte speichern, dass diese jeweils für eine session gültig sind? Wie würdet ihr diese Werte in der JSP ausgeben?
Ich habe da so ein paar Ideen bin mir aber nicht so sicher ob diese wirklich elegant sind.

Gruß
 

bronks

Top Contributor
ak hat gesagt.:
Wie würdet ihr diese Werte speichern, dass diese jeweils für eine session gültig sind?
Den ganzen Resultset an die JSP übergeben.

ak hat gesagt.:
Wie würdet ihr diese Werte in der JSP ausgeben?
JSTL mit foreach auf den Resultset anwenden. Siehe auch die beiden Threads mit den Titeln: "Java Standart Tag Library" und "Die sinnvolle Vorgehensweise" in diesem Board auf der ersten Seite.
 

ak

Bekanntes Mitglied
Hallo Bronks, wenn ich das ganze Resultset an die JSP übergebe, dann muss ich meine connection die ganze Zeit geöffnet halten. Das will ich nicht.

Ich habe es jetzt so gelöst, bin aber mit der ausgabe in der JSP nicht ganz zufrieden, da ich zuviel javaquelltext drin habe:

Zuerst frage ich alle dozenten aus der DB ab und speichere das Resultset in einem Vector aus Beanobjekten:
Code:
        Statement sqlstatement = connection.createStatement();
        String sqlQuery = "select D_NR, D_ANREDE, D_VORNAME, D_NACHNAME from"+             
                          "scott.dozent order by D_NR";
        ResultSet doz_resultset = sqlstatement.executeQuery(sqlQuery);

        Vector doz_Vector = new Vector();
        while(doz_resultset.next()){
          Dozenten_BEAN akt_dozent = new Dozenten_BEAN();
          akt_dozent.setDoz_ID(doz_resultset.getInt("D_NR"));
          akt_dozent.setDoz_Anrede(doz_resultset.getString("D_ANREDE"));
          akt_dozent.setDoz_vorname(doz_resultset.getString("D_VORNAME"));
          akt_dozent.setDoz_Nachname(doz_resultset.getString("D_NACHNAME"));
          doz_Vector.add(akt_dozent);
        }
        //Vector an die session übergeben.
        HttpSession session = request.getSession();
        Dozenten_BEAN dozent = (Dozenten_BEAN)session.getAttribute("dozent");
        dozent.setDozentenVector(doz_Vector);
        session.setAttribute("dozent", dozent);
        connection.close();

Jetzt gebe ich die Daten des Vectors in Tabellenform in einer JSP aus:
Code:
   <% 
    if(dozent.getDozentenVector()!=null){
      java.util.Iterator it =  dozent.getDozentenVector().iterator();
      while(it.hasNext()){
	out.println("<tr>");
	coreservlets.Dozenten_BEAN doz =  (coreservlets.Dozenten_BEAN)it.next();
	          
        out.println("<td>"+doz.getDoz_Anrede()+"</td>");
	out.println("<td>"+doz.getDoz_vorname()+"</td>");
	out.println("<td>"+doz.getDoz_Nachname()+"</td>");
	out.println("</tr>");
     }
   }
  %>

Wie kann ich die Ausgabe in der JSP besser lösen? Bitte mit Quelltextangabe wenn es geht.

Gruß
 

bronks

Top Contributor
ak hat gesagt.:
... dann muss ich meine connection die ganze Zeit geöffnet halten. Das will ich nicht ...
Genau das ist m.E. das tollste Feature bei Servlets. Schon beim zweiten Zugriff auf die DB hast Du performancetechnisch gewonnen.

Blos so aus Neugier: Warum willst Du das nicht?
 

ak

Bekanntes Mitglied
Ich habe mal gelesen, dass man eine db-connection nicht allzulange offen halten sollte, wegen der Performance. Natürlich kostet es Zeit die connection jedes mal neu zu öffnen, bin mir aber nicht so sicher ob das bei Webanwendungen wirklich so gut ist. Ich schaue mir mal an wie das mit dem Connectionpooling funktioniert.
Wenn du denkst, dass ich da auf dem Holzweg bin, dann berichtige mich bitte. Bin noch relativer JSP und Servlet Neuling.

P.S. Obwohl ich die Connection jedesmal nach dem Einlesen schließe, ist die Geschwindigkeit ab dem zweiten Mal Einlesen deutlich schneller.
 

Jaraz

Bekanntes Mitglied
Jetzt gebe ich die Daten des Vectors in Tabellenform in einer JSP aus:
Code:
   <% 
    if(dozent.getDozentenVector()!=null){
      java.util.Iterator it =  dozent.getDozentenVector().iterator();
      while(it.hasNext()){
	out.println("<tr>");
	coreservlets.Dozenten_BEAN doz =  (coreservlets.Dozenten_BEAN)it.next();
	          
        out.println("<td>"+doz.getDoz_Anrede()+"</td>");
	out.println("<td>"+doz.getDoz_vorname()+"</td>");
	out.println("<td>"+doz.getDoz_Nachname()+"</td>");
	out.println("</tr>");
     }
   }
  %>

Wie kann ich die Ausgabe in der JSP besser lösen? Bitte mit Quelltextangabe wenn es geht.[/quote]

Code:
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<c:forEach var="dozent" items="${ requestScope.dozent }">
<tr><td>${dozent.Doz_Anrede}</td><td>${dozent.Doz_vorname}</td><td>${dozent.Doz_Nachname}</td><tr>
</c:forEach>

Gruß Jaraz

PS: Die schreibweise geht nur mit der webapp Version 2.4
[<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"> ]
 

Jaraz

Bekanntes Mitglied
@ bronks
Das ResultSet hat übrigens in der JSP nix zu suchen.

Die Ansicht sollte mit einem Datenmodell arbeiten das von der Datenhaltung unabhängig ist.
Wenn du das ResultSet bis zur jsp durch reichst, kannst du nie mit anderen Datenquellen als JDBC arbeiten.

@ak
Bei einer Web Anwendung brauchts du keinen Vector nehmen, eine ArrayList reicht und ist schneller da nicht synchronisiert.

Gruß Jaraz
 

bronks

Top Contributor
Jaraz hat gesagt.:
@ bronks
Das ResultSet hat übrigens in der JSP nix zu suchen.
Würde ich mir auch denken, wenn ich nicht die passenden JSTL-Tags kennen würde. Nur zu demonstrationszwecken hat man die sicher nicht entwickelt.
 

ak

Bekanntes Mitglied
Hallo Jaraz,

danke für deine Hilfe. So geht es sehr schön, wie ich es mir vorgestellt habe:

Code:
   <c:forEach items="${dozent.dozentenVector}" var="doz">
      <tr>
       <td>${doz.doz_Anrede}</td>
       <td>${doz.doz_vorname}</td>
       <td>${doz.doz_Nachname}</td>
      <tr>
    </c:forEach>

Werde mal sehen, ob ich jetzt besser ne Arraylist nehme.
 

Jaraz

Bekanntes Mitglied
bronks hat gesagt.:
Jaraz hat gesagt.:
@ bronks
Das ResultSet hat übrigens in der JSP nix zu suchen.
Würde ich mir auch denken, wenn ich nicht die passenden JSTL-Tags kennen würde. Nur zu demonstrationszwecken hat man die sicher nicht entwickelt.

OK, dann konkretisiere ich meine Aussage.
Wenn man eine größere Anwendung proggt und sich an das MVC Prinzip halten will, hat das ResultSet in der JSP nix zu suchen.

Will man nur eine einfache Telefonliste aus einer JDBC Datenbank anzeigen, kann man wegen meiner auch die JSTL Tags benutzen.

Zufrieden? ;)

Gruß Jaraz
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
feinperligekohlensaeure JSF Keine Tabelle / Buttons werden unter Windows angezeigt + Apple schon Allgemeines EE 9
H Suche dynamische Ajax-Tabelle Allgemeines EE 2
A JSF: Welchen Button in Tabelle gedrückt? Listener? Allgemeines EE 2
G JSF: horizontale Tabelle aufbauen mit 1 Zeile Allgemeines EE 6
R Bilder in HTML Tabelle ermitteln Allgemeines EE 2
P JSP - Ausgabe von Bildern in Tabelle von nem Filesystem Allgemeines EE 2
G Daten aus Inputfeldern in Tabelle speichern Allgemeines EE 6
N JSF-Checkboxen in Tabelle mit Buttons dahinter Allgemeines EE 4
P Struts Anwendung- FormBean Tabelle mit input type=text Allgemeines EE 2
G Jakarta Servlet API 5.0 Allgemeines EE 1
pkm Frage wegen AJAX-Zugriff auf ein Servlet Allgemeines EE 1
Dimax Servlet Servlet Kommunikation Allgemeines EE 18
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
Dimax Servlet läuft in Eclipse, aber nicht im Browser Allgemeines EE 74
M URL Servlet Request getParameter Allgemeines EE 2
M Servlet Methoden Aufruf im Servlet Allgemeines EE 10
J 404 Not found (Servlet) Allgemeines EE 1
J Asynchrones Servlet löst NullPointerException aus Allgemeines EE 5
E Servlet Servlet das richtige? Allgemeines EE 11
B HTTP-Header-Inspektor-Servlet Allgemeines EE 1
N JSP Servlet mit JSP ansprechen Allgemeines EE 2
F Mehrere Bilder aus MySQL DB via Servlet darstellen. Allgemeines EE 1
J FTP und Servlet Allgemeines EE 11
H Post an Servlet Allgemeines EE 2
A Binärdatei vom Servlet erzeugen lassen Allgemeines EE 3
S Servlet Authentication Filter Allgemeines EE 0
S LDAP JAAS oder Servlet Allgemeines EE 0
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
F eigene Anwendung per Servlet Container starten Allgemeines EE 9
F Servlet Daten im Speicher ablegen Allgemeines EE 3
L Servlet ClassNotFoundException Servlet Allgemeines EE 3
G Allgemeine Frage zu Authentifizierung mittels Servlet API Allgemeines EE 2
J Servlet "package does not exist" Allgemeines EE 5
K Servlet-Mapping Allgemeines EE 9
0 Servlet mit ArrayList Allgemeines EE 3
E Servlet unter mehreren Adressen Allgemeines EE 16
S Pfad-Zugriff über Servlet-init() Allgemeines EE 2
E Servlet Wie kann ich ohne Hilfe von Eclipse in JBoss mein servlet aufrufen Allgemeines EE 2
S Servlet.service() threw exception Allgemeines EE 4
A Servlet erkennt request Objekt nicht Allgemeines EE 8
G Direkter Zugriff auf Servlet- doPost Allgemeines EE 15
G Servlet doGet, doPost Allgemeines EE 3
A Kodierungsproblem bei Parameterübergabe von Browser an Servlet (GET) Allgemeines EE 2
Antoras servlet-mapping auf dynamische URLs Allgemeines EE 17
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
MQue Ajax - Servlet Allgemeines EE 2
MQue Servlet Allgemeines EE 9
S [Design] Dynamischer EJB Aufruf von Servlet Allgemeines EE 3
S Servlet auf JBoss 5? Allgemeines EE 11
B HttpSession bekommen wenn nicht in Servlet Allgemeines EE 8
MQue Servlet / Button Allgemeines EE 5
S In Eclipse werden die "Servlet-Klassen" nicht gefu Allgemeines EE 2
U javax.faces und javax.servlet cannot be resolved Allgemeines EE 2
W Potentielles Memory Leak bei Servlet Allgemeines EE 6
B unterschied servlet und bean Allgemeines EE 2
Escorter Servlet .sar und jede Menge .jar Archive Allgemeines EE 2
N Servlet und JSF (URL-Rewriting)? Allgemeines EE 3
A jsf: Servlet aufrufen, wie geht das? web.xml Fehler? Allgemeines EE 13
N Servlet zyklisch aktualisieren Allgemeines EE 2
zilti Verbindung Applet <-> Servlet Allgemeines EE 5
ARadauer Servlet Bild Rückgabe Allgemeines EE 2
I Über Formular Daten zu Servlet Allgemeines EE 36
H Servlet - Zwischenmeldung anzeigen bei längerer Berechnung Allgemeines EE 2
G Ordner mit Umlauten einlesen - Servlet Allgemeines EE 3
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
M Zwei Buttons in einem Servlet Allgemeines EE 2
M Servlet lässt sich nicht aufrufen Allgemeines EE 6
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
B Servlet Allgemeines EE 3
G EJB - EJB wird nicht ins Servlet geladen Allgemeines EE 3
K load-on-startup -> in der Servlet Klasse Allgemeines EE 6
G Objekt an Servlet übergeben - oder Objekt global definieren? Allgemeines EE 4
W Was bei Servlet-Entwicklung alles beachten? Allgemeines EE 8
R Zugriff auf Filter Servlet Allgemeines EE 10
I JBOSS Jsp Files Pfad im Servlet? Allgemeines EE 4
N Servlet-Request abbrechen? Allgemeines EE 3
D Java Servlet mit Radio Buttons Allgemeines EE 2
G Servlet debugging Allgemeines EE 8
N Thread von Servlet aus starten Allgemeines EE 16
N JSP: Collection im Servlet überwachen (mit AJAX)? Allgemeines EE 5
J Socket daten darstellen per jsp,servlet Allgemeines EE 2
W servlet über https Allgemeines EE 2
L Servlet kann Funktion nicht aufrufen Allgemeines EE 3
B Parameterübergane von Servlet an JSP funktioniert nicht ? Allgemeines EE 2
M Aus einem Servlet auf ein anderes zugreifen ? Allgemeines EE 2
G Servlet Serializable Allgemeines EE 2
B Servlet-Api.jar auf JBoss? (Migration von Tomcat zu JBoss) Allgemeines EE 4
H Servlet - Importieren von Code Allgemeines EE 2
P Java Servlet - Umgang mit Verlinkungen Allgemeines EE 7
M Wert aus Servlet an normale Klasse übergeben Allgemeines EE 2
E Servlet soll JFRame öffnen. Jframe.setvisible schlägtfehl Allgemeines EE 2
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
D Servlet Problem über Server Allgemeines EE 26
K Servlet per Formular aufrufen Allgemeines EE 8
L sessions mit servlet oder jsp ? Allgemeines EE 9
B JSF - Servlet mit Parametern über einen Link öffnen Allgemeines EE 3
D Binärdaten im Servlet entgegen nehmen, aber wie? Allgemeines EE 5
T Servlet-Instanzen und ServletContext Allgemeines EE 2
L speichern von daten mittels servlet in xml Allgemeines EE 8
N Collection überwachen (Servlet + AJAX) Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben