ResultSet aus Bean an JSP übergeben

Status
Nicht offen für weitere Antworten.

digital_doom

Mitglied
wie kann ich einn ResultSet aus einer Bean übergeben?
Hab eine Datenbank in der User gespeichert sind. Nun möchte ich in einer Funktion der Bean alle User auslesen und in einem ResultSet speichern und dieses per return an die jsp Seite zurückgeben. doch wenn ich dann in der jsp Seite mit rs.next() durch das ResultSet iterieren will wirft er mir st#ndig eine NullPointerException.
Hier die betreffenden Code Zeilen:

Code:
public ResultSet getAllEntries()
	{
		ResultSet rs = null;
		String query = "SELECT * FROM st_user";
		
		try
		{
			this.connectDB();
			Statement st = con.createStatement();
			rs = st.executeQuery(query);
		}catch(SQLException e)
		{
			e.printStackTrace();
			System.out.println("Fehler in getAllEntries()");
		}
		
		return rs;
	}

con ist ein Connection Objekt das ich als Member der Bean deklariert habe. In connectDB() wird die Verbindung hergestellt. Habs auch schon probiert mit der Statement Variable als Member der Bean geht auch nicht. Und bevor ich weiter herumpfusche wollte ich mal hier um Hilfe bzw Tipps fragen.
hier noch das jsp Dokument:

Code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.sql.ResultSet"%>
<html>

<jsp:useBean id="user" class="StudyTalk.ST_user" scope="application"></jsp:useBean>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<%
		ResultSet rs = user.getAllEntries();
		System.out.println(rs);
	 %>
	 <table>
	 	<tr><th>ID</th><th>FirstName</th><th>LastName</th><th>MatNumber</th><th>Username</th><th>Password</th>
	 	<%
	 	
	 		while(rs.next())
	 		{
	 	%>
	 			<tr>
	 				<td><%=rs.getInt("U_ID") %></td>
	 				<td><%=rs.getString("FirstName") %></td>
	 				<td><%=rs.getString("LastName") %></td>
	 				<td><%=rs.getString("MatNumber") %></td>
	 				<td><%=rs.getString("UserName") %></td>
	 				<td><%=rs.getString("Password") %></td>
	 			</tr>
	 			
	 	<%	
	 		}
	 	%>
	 		<tr><th>--</th><th>------</th><th>------</th><th>------</th><th>------</th><th>------</th>
	 </table>
</body>
</html>

Vielleicht könnt ihr mir helfen. Ich glaub ich hab das Mit der Lebensdauer von Statement, ResultSet und Connection noch nicht ganz verstanden.
mfg[/code]
 

Niki

Top Contributor
Ich habe zwar mit jsps keine/kaum Erfahrung, aber ich vermute dass das nicht zulässig ist. Du solltest ein POJO bauen, welches du mit den Daten aus dem ResultSet befüllst und dieses der JSP übergeben (wie gesagt, ich weiß nicht ob das korrekt ist)
 

digital_doom

Mitglied
das heisst also ich soll ein objekt mit den gleichen membern wie datenbank spalten schreiben?
und halt die member als collections? damit ich alle einträge gescheit auslesen kann?
wird das nicht viel zu speicher und rechenintensiv wenn mal ich sag mal 500 user drinn stehen als beispiel?
aber schonmal danke für den tip. jetzt hab ich ja zumindest schon mal eine alternative :)
 

Niki

Top Contributor
500 User sind ja keine Größe. Das sollte kein Problem sein. Genauso hab ich es gemeint, du gibst einfach eine Collection von User-Objekten zurück.

EDIT:
noch was. du solltest das ResultSet und das Statement auch wieder schließen:
Code:
List erg = new ArrayList();
try{
  stmt = con.createStatement();
  rs = stmt.executeQuery("...");
  while(rs.next()){
    //befülle neues POJO und füge es der Ergebnisliste hinzu
    User u = new User();
    u.set....
    erg.add(u);
  }
}catch(....){
}finally{
  if(rs != null)
    rs.close();
  if(stmt != null)
    stmt.close();
}
return erg;
 
M

maki

Gast
Ist zwar zuläsasig, aber sehr hässlich und bringt eine Menge Probleme.

Solltest die Daten von einem Serlvet holen und aufbereiten lassen, die JSP stellt diese dann nur dar, am besten mit Taglibs (JSTL) und der EL.

Wo kommt denn die NPE?
 

Niki

Top Contributor
@maki: mich würde interessieren wie das ausschaut, sich aus der jsp die Daten über ein Servlet zu holen. Wie schickt man die Anfrage und was/wie bekomm ich das Ergebnis zurück?
 
M

maki

Gast
Grundsätzlich sollte jede Anfrage an ein Servlet gehen, den Controller. Dieser sorgt dann dafür, dass zuerst die benötigten Aktionen ausgeführt & Daten(Model) aufbereitet werden, danach leitet der Controller weiter an die jeweilige View (JSP).
Die Daten werden vom Controller in die Session oder den Request gehängt, wo die JSP sie sich später holt um sie anzuzeigen.
 

ms

Top Contributor
Niki hat gesagt.:
500 User sind ja keine Größe. Das sollte kein Problem sein.
Abgesehen davon bezweifle ich, dass du wirklich 500 User auf einer Seite darstellen willst.
Du wirst wahrscheinlich eine Blätterlogik einbauen wollen.
Im ersten Schritt spielt das aber keine Rolle.
Erstmal schön mit Servlet machen wie maki gesagt hat.

ms
 

Niki

Top Contributor
Danke schon mal für die Antwort. Verstehe ich das also so richtig:
Die jsp wird im Browser angezeigt, der Benutzer klickt etwas in einem Formular, die Anfrage wird an ein Servlet geschickt welches die Daten holt, aufbereitet... und dann die Daten ins Model stellt. Das Model steht dann z.B. in der Session. Anschließend macht das Servlet ein forwarding auf eine jsp um die Daten anzeigen zu lassen.
Ist das korrekt?
 

Niki

Top Contributor
Wieder was dazu gelernt...

Ich hätte schon viel früher den Arbeitgeber wechseln sollen, leider war ich die ersten 4-5 Jahre meiner Programmiertätigkeit mit SWING beschäftigt und bin jetzt erst dabei auf WebApplikationen umzusteigen. Da ist das Umdenken vom Eventbasierten Programmieren auf Request/Response nicht so einfach (Ok, mit JSF kann man mittlerweile auch ganz fein Event-basiert programmieren)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S problem mit resultset Web Tier 6
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
G HTML Fragment in Bean erzeugen? Web Tier 1
W JSF Probleme mit Zugriff zur Managed Bean Web Tier 11
R get-methode der Managed-Bean wird immer 3 mal ausgeführt Web Tier 4
F JSF Bean funktioniert nicht immer.. Web Tier 3
I CSS von Client -> an Bean senden Web Tier 0
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
S Java Bean und Java Servlet Web Tier 2
G jsf bean erstellen die mir die aktuelle uhrzeit ausgibt als xhtml Web Tier 5
M viele Objekte des Managed Bean Web Tier 3
S [JSF] Zugriff auf Bean (Eclispe,JBoss) Web Tier 12
P JSF Prob mit xhtml / Bean / JS Web Tier 6
J JSF Initialisierung einer ApplicationScoped Bean Web Tier 2
B Berechnen und Anzeigen von Formeln aus der Chemie und Physik mit JSP und Bean Web Tier 14
H Bean-Objekte aus XML erstellen Web Tier 2
L expression language Bean && Bean Web Tier 3
C JSF Methoden in Backing-Bean als JSF-Property Web Tier 3
P JSF Merkwürdiges Verhalten einer Bean Web Tier 11
S CDI: Bean aus einem anderen jar Web Tier 3
X Managed Bean Scope zwischen Request und Session gesucht Web Tier 6
D JSF EL #{not null bean.property} Parse exception Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B JSF Servlectexception: Verwalteter Bean "..bean" kann nicht erstellt werden Web Tier 2
G JSF Bean Vererbung Web Tier 5
J Validieren abhängiger Felder mit JEE6/Bean validation Web Tier 33
F Leere Bean? Web Tier 7
S JSF2: Managed bean aus anderer Dependency Web Tier 7
W MVC mit Bean, JSP und Servlet Web Tier 6
S Style bei fehlerhafter Eingabe (Bean Validation) ändern Web Tier 2
H Managed Bean Aufruf auf Stack legen Web Tier 10
P JSP: Liste in Bean über Session aufbauen Web Tier 6
S Bean Validation (JSF 2.0) funktioniert nicht. Web Tier 4
V Vector aus Bean "holen" / JSP Web Tier 3
B JSF session bean mit worker thread updaten Web Tier 7
K bean methode von jslt aufrufen Web Tier 7
I Eine Bean von einer anderen Bean aufrufen Web Tier 2
J Managed bean und javascript kommunikation (JSF 2) Web Tier 2
G JSF javax.faces.bean Web Tier 2
K Anfängerfrage in JSF: <h:inputText> aus Managed Bean ansprechen Web Tier 6
S Managed bean nicht initialisiert Web Tier 2
A JSF+Glassfish: Probleme mit Managed Bean Web Tier 2
E Methode einer Bean aus anderer Bean aufrufen Web Tier 10
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
N MessageResources von Struts in Form-Bean Web Tier 4
N java bean in eclipse Web Tier 6
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
S JSF: Frage wegen managed-bean Web Tier 3
pusteblume Mehrere Objekte einer Bean Web Tier 10
M Problem mit JSP und Bean Web Tier 2
O 2 Fragen zu JSP und Bean Web Tier 4
E value übergabe an bean! aber wie? Web Tier 3
F Datei von bean aus laden Web Tier 3
N JSF kann Bean nicht finden! Web Tier 7
H JSF - Bean (scope session) - Verfallsdatum? Web Tier 3
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
M JSF - Bean aus SessionScope direkt im JSF Code auslesen Web Tier 1
G Eine Instanz pro Managed Bean? Web Tier 2
M JSF JSF: Methode bei versteckt aufrufen & Parameter übergeben Web Tier 6
K JSP Parameter in die Bohne übergeben Web Tier 3
M JSP Objekt in eine JavaBean übergeben Web Tier 7
D Parameter übergeben und auslesen Web Tier 7
M STRUTS2 - Array als Parameter übergeben Web Tier 2
Gossi JSP Map an JSP übergeben? Web Tier 3
P Mit EL Parameter an Methode übergeben Web Tier 5
T Button im Servlet - Werte übergeben Web Tier 2
J werte per post an servlet übergeben und auswerten Web Tier 3
F JSP übergeben von id + namen Web Tier 21
T Array übergeben an JS oder anders ? Web Tier 2
7 Struts iterator index JS-Funktion übergeben?? Web Tier 2
M JSP Parameter übergeben Web Tier 9
P Ist es möglich einen Returnwert einem httpRequest zu übergeben Web Tier 3
El Gringo Parameter in CommandLink übergeben Web Tier 4
S Bild hochladen mit JSP - Parameter übergeben Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben