Fragen zu: Servlets, Struts & Hibernate

Status
Nicht offen für weitere Antworten.

shoryuken

Mitglied
Hi folks!

nachdem ich jetzt diverse kleine Servlet-Applikationen mit Struts und Hibernate geschrieben habe steht nun ein etwas größeres Projekt an. Dazu habe ich noch einige Verständnis-Fragen und suche nach Best-Practices.

1. JSP/ActionServlet: Wie funktioniert das Zusammenspiel dieser beiden? Wie kommen die Informationen z.B. eines ActionForms in die JSP Seite ohne, dass das ActionServlet aufgerufen wird? Kommuniziert der TagHandler mit dem ActionServlet oder liest der Handler die struts-config neu ein?

2. Hibernate SessionFactory: Wo plaziert ihr diese? Im Servlet Context?

3. Hibernate: Ein Hibernate POJO ähnelt oft der zugehörigen Logik (bis auf die Methoden). Ist es eurer Meinung erlaubt und/oder tragbar Logik-Methoden in das POJO zu integrieren? (Nach dem MVC Prinzip)

Gruß,

shoryuken
 
S

SlaterB

Gast
1.
ein Aufruf an der Server wird in der struts-config irgendwo gemappt,
entweder auf eine Action oder eine JSP,
bevor dieser User-Code dran kommt, erledigt Struts seine Arbeit,
vor der Action wird das Form gefüllt,

ob vor der JSP auch weiß ich im Moment gar nicht, ich nehme es aber mal an, steht dann als Attribut im Request?
testen

was ist ein TagHandler?

---------

2.
eine andere Möglichkeit ist ein Singelton/ statische Variable

3.
nach dem MVC-Prinzip darf ins Model POJO keine Controller-Logik

wie man das nimmt, nun ja,
also es gibt viele Logik die da nicht zu suchen hat,
andere macht dort oder zumindest nahe am POJO meiner Meinung nach schon Sinn,
z.B. Ausgabeformatierungen oder das Laden zugehöriger Objekte,
wenn dies auch nur aus dem Aufruf anderer Operationen besteht,

schöner wirds vielleicht mit einem Hilfsobjekt, dass dem POJO zugeordnet ist bzw. andersrum
 
G

Guest

Gast
SlaterB hat gesagt.:
1.
ob vor der JSP auch weiß ich im Moment gar nicht, ich nehme es aber mal an, steht dann als Attribut im Request?
testen
was ist ein TagHandler?

Mir ging es um den direkten Aufuf einer JSP Seite. Mit TagHandler meinte ich die Klassen TagSupport und BodyTagSupport. Diese werden für die Struts-eigenen Taglibs benutzt.
Mittlerweile habe ich aber heraus gefunden, dass die Klasse TagUtils Zugriffe auf ActionMappings, MessageResources etc erlaubt. Damit hat sich diese Frage geklärt :)

zu 3. ein Beispiel: Login-Bereich
Frage: Was kommt wohin nach dem MVC Prinzip?

1. Login/Password überprüfung: Wohin packe ich das HQL Statement und/oder die anschließende Passwort Überprüfung (Falls das nicht im Statement mit drin ist)
Darf die Struts-Action Kontakt mit der Model Ebene haben oder muss/darf ich die Überprüfung und den Datenbank-Kontakt in der Logik kapseln.

2. Überprüfung der Session benötigt die HttpServletRequest Instanz. Das request selbst darf aber keinen Kontakt mit der Logik haben. Wohin also damit? :)

3. Was würdet ihr in der Session speichern um den User wiederzuerkennen? Die Hibernate-POJO-Instanz (bzw. die ID) oder ein Bean was diese Instanz kapselt?

Wenn MVC dann auch richtig :)

gruß
 

HLX

Top Contributor
Anonymous hat gesagt.:
1. Login/Password überprüfung: Wohin packe ich das HQL Statement und/oder die anschließende Passwort Überprüfung (Falls das nicht im Statement mit drin ist)
Darf die Struts-Action Kontakt mit der Model Ebene haben oder muss/darf ich die Überprüfung und den Datenbank-Kontakt in der Logik kapseln.

2. Überprüfung der Session benötigt die HttpServletRequest Instanz. Das request selbst darf aber keinen Kontakt mit der Logik haben. Wohin also damit? :)
für beides gibt es die validate-Methode an der ActionForm. Diese ist zur Validierung zu überschreiben. Die Session kannst du auch an der Action überprüfen.

Anonymous hat gesagt.:
3. Was würdet ihr in der Session speichern um den User wiederzuerkennen? Die Hibernate-POJO-Instanz (bzw. die ID) oder ein Bean was diese Instanz kapselt?

Ich würde die POJO-Instanz speichern, aber nur dann wenn ich die enthaltenen Informationen bei weiteren requests benötige.
 
S

SlaterB

Gast
ich rate jetzt auch nur mal:

1.)
die Action ruft eine Logikklasse mit Username/ Passwort auf
checkLogin(user,pass);
und bekommt dann einen String oder ein User-Objekt zurück,
oder null wenn Passwort nicht erfolgreich

sie hat natürlich Kontakt zur Model-Ebene in dem Sinne, dass sie viele PoJOs hin- und herreicht,
aber keinen direkten Kontakt zur DB-Ebene, wenn auch ein Befehl wie checkLogin praktisch einem "Select User" entspricht

2.)
macht die Action?!

3.)
ich bin für Username/ Id oder gleich POJO, warum nicht,
dafür ist es ja plain, damit es ganz losgelöst vor irgendwelchen Ladevorgängen überall und lange Zeit genutzt werden kann
 

shoryuken

Mitglied
HLX hat gesagt.:
für beides gibt es die validate-Methode an der ActionForm. Diese ist zur Validierung zu überschreiben. Die Session kannst du auch an der Action überprüfen.

Die validate Methode der Action Form ist aber nur für eine syntaktische Validierung gedacht. Die semantische Überprüfung sollte eben nicht im Controller Bereich stattfinden (ob die ActionForm zum View oder Controller Bereich gehört darüber streiten ja die Geister. Ist hier ja auch nicht von Belang).

Bleibt immer noch die Frage ob die Model Ebene in den Logik Beans gekapselt werden sollte oder der Controller Bereich Zugriff auf die Model Ebene hat.

SlaterB hat gesagt.:
sie hat natürlich Kontakt zur Model-Ebene in dem Sinne, dass sie viele PoJOs hin- und herreicht,
aber keinen direkten Kontakt zur DB-Ebene, wenn auch ein Befehl wie checkLogin praktisch einem "Select User" entspricht ?

Genau dieses hin und herreichen habe ich befürchtet .. Ich weiß nicht ob ich das so sinnvoll finde kommt aber auch auf das Problem drauf an.

gruß
 

HLX

Top Contributor
shoryuken hat gesagt.:
Die validate Methode der Action Form ist aber nur für eine syntaktische Validierung gedacht. Die semantische Überprüfung sollte eben nicht im Controller Bereich stattfinden (ob die ActionForm zum View oder Controller Bereich gehört darüber streiten ja die Geister. Ist hier ja auch nicht von Belang).

Um Himmels willen! :shock: Weder Controller und schon garnicht View! Die ActionForm gehört definitiv ins Model!

Zur Erläuterung - MVC in Struts:
View= AUSSCHLIESSLICH JSP
Model= ActionForm (Datenhaltung des Views) + Backend
Controller= Action: Verbindung zum Model (ActionForm + Backend) und Auswahl der View (--> findForward)

In der Validate-Methode sollten Dinge validiert werden, die möglichst vor Erreichen des Controllers abgefangen werden sollen.
 

shoryuken

Mitglied
HLX hat gesagt.:
Um Himmels willen! :shock: Weder Controller und schon garnicht View! Die ActionForm gehört definitiv ins Model!

Diese Diskussion wurde schon viel geführt. Ich sehe das anders:

Die ActionForm bietet nicht wesentlich mehr als einen vereinfachten Zugriff auf das request Objekt. Das ist sicherlich nicht wirklich View aber definitiv nicht Model, da:

HLX hat gesagt.:
Model= ActionForm (Datenhaltung des Views) + Backend

In der Validate-Methode sollten Dinge validiert werden, die möglichst vor Erreichen des Controllers abgefangen werden sollen.

der Kontakt zur View Ebene da ist - und das wäre nach dem MVC Prinzip unzulässig, wenn die ActionForm im Model-Bereich wäre. Ich würde die ActionForm neben den Actions im Controller Bereich ansiedeln.

gruß
 

HLX

Top Contributor
:noe:

Du sollstest dich auf jeden Fall nochmal mit dem MVC-Prinzip auseinandersetzen - und dich noch mehr über Struts informieren. Es gibt ziemlich eindeutige Indikatoren dafür, wo die ActionForm anzusiedeln ist:

Die ActionForm hält die Daten der JSP-Datei.
View und Controller halten per Definition NIEMALS irgendwelche Ein-/Ausgabe-Daten. Damit gibt es keine Diskussion über die Einordnung der ActionForm.

Um den Zusammenhang Struts-MVC genauer zu erläutern: Hinter deiner Anwendung steckt ja nun ein bisschen mehr als nur die JSP und die beiden Klassen. Die einzelnen MVC-Bestandteile spiegeln sich also nicht nur darin, sondern auch im Struts-Framework wider.
Will heißen: der Controller besteht nicht nur aus deiner Action, sondern auch teilweise in den Verarbeitungsmechanismen von Struts. Es gibt tatsächlich keine direkte Kommunikation zwischen View und Model, da Bestandteile von Struts den Zugriff regeln. Durch Actions ist es dir freigestellt, den Controller zu erweitern. Dies ist in JSF z.B. nicht vorgesehen. Hier gibt es ein FacesServlet. Controller-Aktivitäten sind hier durch die Config-Datei festzulegen. Es gibt keinen zusätzlichen Code. In Struts ist das anders. Aber auch hier sind große Teile der MVC-Kommunikation im verborgenen. Genau gesehen wird also in der Validate-Methode alles abgearbeitet, was vor DEINEN Controller-Aktivitäten geschehen soll. Tatsächlich war hier der Controller schon aktiv.

Der Controller beschäftigt sich nur mit der Anwendungssteuerung. Er kommuniziert mit Model und View. Er bekommt aus Validierung und Backend-Operationen ein Ergebnis und entscheidet daraufhin über die Ausgabe (View).

Ich hoffe, das ich damit einige Zusammenhänge zwischen MVC und Struts etwas besser verdeutlichen konnte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Fragen zu Servlets Allgemeines EE 5
J paar Fragen zu JSF2/JEE6 Anwendung mit JBoss 7.1.1 Allgemeines EE 6
O Java EE in Netbeans + allgemeine Fragen Allgemeines EE 5
M Einige Fragen zu JEE Allgemeines EE 17
E Portlet 2 Fragen Allgemeines EE 2
A Fragen zum Einstieg in Java EE Allgemeines EE 11
ARadauer generelle Architektur Fragen Allgemeines EE 44
B Allgemeine Fragen zu JSP JSF Allgemeines EE 4
P Anfänger JavaBeans Fragen. o_0 Allgemeines EE 9
M Grundlagen Portlets.ein paar(anfänger) Fragen Allgemeines EE 6
G Fragen zu hosting und shared/private Tomcat Allgemeines EE 4
K Servlets Allgemeines EE 1
B Intellij + WebSphere, Servlets aufrufen Allgemeines EE 1
S JSP, JSF Servlets etc. Empfehlung Allgemeines EE 13
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
c_sidi90 Gute Bücher/Tutorials für Einstieg in JSP/Servlets Allgemeines EE 3
A Startseite bei Servlets Allgemeines EE 2
R Sourcen einbinden von J2EE bzw auch für Servlets in Eclipse Allgemeines EE 8
W Übliche Art "lokale" Parameter an Servlets zu über Allgemeines EE 2
D AJAX oder Servlets Allgemeines EE 6
J Sicherheit von Servlets Allgemeines EE 3
G Response bei Servlets Allgemeines EE 5
K Sriplets & Servlets: Offline Projekt auf Server realisie Allgemeines EE 2
M Servlets und Webcrawler Allgemeines EE 4
D JSP/Servlets Buchempfehlung Allgemeines EE 11
C Servlets in Eclipse ausführen Allgemeines EE 5
D Servlets richtig verstehen Allgemeines EE 23
A Servlets: Service-Methoden generell Allgemeines EE 2
I JBOSS IDE EJB 3.0 Servlets JSP Applikation --> JSF sinnvo Allgemeines EE 2
M Servlets | work - Klassen nicht im WAR File Allgemeines EE 5
J Bean in der init-Methode des Servlets instanzieren Allgemeines EE 9
T Servlets: doGet, doPost und service Allgemeines EE 4
M Hosting (inkl. Servlets) Allgemeines EE 25
P JSP Servlets/ Java Klassen für FTP FileUpload (Bilder) + DB Allgemeines EE 3
D Controller-Klassen eines Servlets testen mit JUnit Allgemeines EE 3
M Kommunikation zwischen zwei Servlets Allgemeines EE 5
S gibts ne spezielle möglichkeit applets mit servlets auszugeb Allgemeines EE 3
S aufrufende url bei servlets herausfinden Allgemeines EE 4
I Zusammenspiel Portlets, Servlets und JSPs Allgemeines EE 3
Z Property Datei in Servlets Allgemeines EE 2
S Umlaute und Servlets Allgemeines EE 5
F Servlets und JSP Allgemeines EE 6
P E-mails alias über Servlets einrichten bei Strato- Allgemeines EE 16
G Verständnisfrage zu EJB vs. Servlets Allgemeines EE 3
A Servlets bei Tomcat-Startup starten Allgemeines EE 5
L SVG & Servlets Allgemeines EE 9
J Buchempfehlung: Servlets, JSP, Struts, JSTL Allgemeines EE 3
P Wie Log4J in JSP's, Beans und Servlets am besten einbinden Allgemeines EE 2
M Probleme beim Performancetuning des Servlets Allgemeines EE 2
C JSP funzt in Tomcat, Servlets nicht Allgemeines EE 5
G Servlets und Bilder Allgemeines EE 13
G JSP und Servlets (einfaches MVC-Modell) Allgemeines EE 2
G Mehrere Probleme mit Servlets/Java Allgemeines EE 15
T Grundlegendes Verständnis - Beans, JSP und Servlets Allgemeines EE 3
F Servlets aufrufen Allgemeines EE 5
thE_29 Allg. Frage zu JSP/Servlets Allgemeines EE 2
T Jsp die mehrere Servlets aufruft erzeugt Fehler Allgemeines EE 10
F relativer Pfad in Servlets für Dateien Allgemeines EE 2
R Servlets in ECLIPSE programmieren Allgemeines EE 3
X servlets und character encoding Allgemeines EE 4
A Frage zu Servlets Allgemeines EE 5
M Cookies mit Servlets Allgemeines EE 6
J Servlets und PrintWriter Allgemeines EE 5
H Servlets nacheinander abarbeiten Allgemeines EE 3
B Servlets werden gemappt --- aus und schluß, so ist es! Allgemeines EE 4
T Zwei Buttons in derselben FORM rufen unterschied. Servlets a Allgemeines EE 10
K Sun Application Server - Servlets laufen nicht Allgemeines EE 2
J Connectionpools mit BEA und Servlets Allgemeines EE 4
T Servlets und Dateizugriff auf dem Server Allgemeines EE 5
T Servlets in eclipse schreiben !! Allgemeines EE 5
S Servlets zum laufen bringen mit J2EE Allgemeines EE 3
A Leerzeilen in HTML-Seite, nach Erzeugen des Servlets Allgemeines EE 3
S Struts 2 datetimepicker Allgemeines EE 3
W Struts Tutorial für EE Noobs? Allgemeines EE 2
N Struts vs JSF ? Allgemeines EE 7
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
Lex Property per html:link schreiben in struts Allgemeines EE 2
Shihan Line Breaks in <br /> umwandeln (Struts) Allgemeines EE 7
S Struts: zwei JSP's nutzen eine Action Allgemeines EE 5
G Struts: ActionMessage value in JSP anzeigen Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
S Struts und Session Allgemeines EE 2
K Struts - FormBean mit 2 Listen - Anzeigen und Speichern Allgemeines EE 2
S Probleme mit struts - ActionServlet Allgemeines EE 6
C Struts in iFrame Allgemeines EE 2
Z Struts: Formularfelder initialisieren Allgemeines EE 3
S Struts: Wert in einem iterierten Drop-Down Menü selektieren Allgemeines EE 7
T Struts 2 Allgemeines EE 6
R Struts-Action in JSP abfragen? Allgemeines EE 2
J struts: Bild als submit-button Allgemeines EE 2
J Internationalization mit Struts Allgemeines EE 2
E bei struts inhalte über mehrere seite verteilen Allgemeines EE 6
velaluka Struts- falsches Character-Encoding? Allgemeines EE 3
M URL Darstl. und Struts Allgemeines EE 2
G Struts beans Allgemeines EE 7
D Struts + Table Allgemeines EE 6
L Struts - Action auslösen bei Browser Back Allgemeines EE 2
N Struts - Problem mit <html:link> Action Allgemeines EE 3
netspy Struts, Spring oder ... ? Allgemeines EE 5
S Struts - Direktaufruf eines URL verhindern Allgemeines EE 11

Ähnliche Java Themen

Neue Themen


Oben