Servlet + JSP: JSP-Seite ein Array/ArrayList überliefern vom Controller-Servlet

Bitte aktiviere JavaScript!
Hallo Leute,

erst mal: Ich hab nicht viel Ahnung von Servlets + JSPs und bin dort etwas neu. Für meine Projektstudie im Studium hab ich folgenden Fall.

Ich möchte im Controller-Servlet eine Methode aufrufen die ein Array oder eine ArrayList mit Objekten füllt (die Objekte sind von einer Klasse, die ich erstellt habe). Anschließend möchte an eine .jsp Datei das Array(List) übergeben um die darin enthaltenen Daten auszulesen und anzuzeigen.

Das ganze soll ohne Session passieren (man kann der Session ja Objekte zuweisen) - nur ich hab keine Ahnung, wie das geht. Könnt ihr mir da auf die Sprünge helfen bzw. alternativ Lösungen erläutern? Wichtig ist, das ich im Controller in der doGet() Methode eine Session erstelle, allerdings soll in dieser keine Objekte gespeichert sein. Ist es auch möglich, von der JSP "Daten" an den Controller zu schicken (den dieser dann verarbeitet)?

Bin übrigens Anfänger in Java, also macht mich nicht fertig, wenn das hier etwas nach Anfänger klingt :D
 
Zuletzt bearbeitet:
S

SlaterB

alternativ zur Session gibt es noch das Requst-Objekt, da kann man auch beliebige Sachen ablegen

die JSP kommt erst nach dem Servlet dran, normalerweise findet keine Kommunikation in diese Richtung statt,
die JSP stellt der Lehre nach nur Daten dar, es gibt nichts was diese leistet, was den Controller interessieren könnte,
bzw. nicht schon eh weiß,
was genau stellst du dir da vor?
 
alternativ zur Session gibt es noch das Requst-Objekt, da kann man auch beliebige Sachen ablegen

die JSP kommt erst nach dem Servlet dran, normalerweise findet keine Kommunikation in diese Richtung statt,
die JSP stellt der Lehre nach nur Daten dar, es gibt nichts was diese leistet, was den Controller interessieren könnte,
bzw. nicht schon eh weiß,
was genau stellst du dir da vor?
Wie kann ich dieses Objekt nutzen? request....?

Ich stell mir das so vor:

index.jsp -> Start-Button wird gedrückt -> Controller doGet() wird aufgerufen + Session erstellt + ArrayList mit Daten erzeugt -> ArrayList wird übergeben und auf ausgabe.jsp ausgegeben -> ausgabe.jsp gibt Controller "ich bin fertig" zurück -> Controller schließt session. Oder muss ich dann von der ausgabe.jsp eine andere Methode vom Controller aufrufen?
 
N

nillehammer

In der doGet-Methode des Servlets hast Du den Request als Methodenparameter. In diese kannst du mit setAttribute Deine ArrayList mit einem bestimmten Namen adden. In der JSP dann entweder mit Java-Code und getParameter oder mit jsp:useBean aus dem Request laden.
 
S

SlaterB

@Korrak
was du zur Session geschrieben hast habe ich der ersten Antwort lieber ignoriert, aber nun schon wieder,
was ist das für eine Session die geöffnet und geschlossen wird?
meinst du wirklich die HttpSession? die ist doch der Definition nach nur sinnvoll wenn man sie über mehrere Request verwendet,
wenn nicht kannst du sie auch gleich ignorieren

technisch bietet sich für deine Idee wohl ein Filter an, der kommt nach Erstellung der JSP automatisch wieder dran
um dann bei dir irgendwas aufzuräumen
Filtering Requests and Responses

edit: zudem könnte das Servlet schon aufräumen, bevor es an die JSP weitergeht,
lieber nur fertige Nutzdaten übergeben, die nicht noch offene Session (?) erfordern,
klingt jetzt wahrlich nach DB, meinst du dort die Hibernate-Session?

https://community.jboss.org/wiki/OpenSessionInView?_sscc=t
OpenSessionInView ist natürlich durchaus ein bekanntes Konzept


------

> Wie kann ich dieses Objekt nutzen? request....?
solche Grundlagen stehen in 500 Seiten-Büchern, die man wochenlang liest, Beispiele anschaut

hier in etwa ein Link dazu
JSP/Servlet setAttribute Problem @ tutorials.de: Tutorials, Forum & Hilfe

der JSP-Zugriff mit eingebetteten Java-Code ist dabei relativ unschön, gibt auch Tag-Libraries und wie das alles heißt,
"{request.xy}" usw.
aber wenn man mit der Session schon so verfährt, dann hier wohl auch ok,
wenn man mit der Session einen besseren Zugriff hat, dann auf den Request analog
 
Zuletzt bearbeitet von einem Moderator:
In der doGet-Methode des Servlets hast Du den Request als Methodenparameter. In diese kannst du mit setAttribute Deine ArrayList mit einem bestimmten Namen adden. In der JSP dann entweder mit Java-Code und getParameter oder mit jsp:useBean aus dem Request laden.
wie funktioniert das mit jsp:useBean bzw. getParameter?

mach ich dann auf der ausgabe.jsp -> "request.getParameter("name")"?
 
S

SlaterB

Achtung Unterscheidung:
- Parameter im Request sind das was als ? im Request-String vom Client kommt, Strings
- Attribute im Request sind innerhalb der Verarbeitung gesetzte Objekte
(in der Session gibt es logischerweise nur Attribute)

weiter möchte ich persönlich aber nicht beitragen, in meinem Link steht schon etwas,
generell ein Thema für unzählige Tutorials/ Lehrbücher überall
 
N

nillehammer

Hat sich zwar schon erledigt, aber ich wollte nachträglich SlaterB nochmal Recht geben. Das war eine Nachlässigkeit von mir, getParameter mit getAttribute zu verwechseln.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben