wollte mich mal erkundigen, wie ihr eure Webapplikationen so aufbaut. Konkret mein ich damit das Zusammenspiel zwischen den verschiedenen JSPs und Seitenelementen. Bin mir nämlich nicht sicher, wie die optimale Lösung aussieht (Frames, keine Frames?).
Bis jetzt arbeite ich mit DIV Layern. Auf meiner Mainpage werden sozusagen verschiedene JSPs includiert (Menü, Header, Footer, Inhalt). Wenn ich im Inhaltsbereich jetzt aber ne andere JSP Seite anzeigen will gehts schon los, dann muss ich irgendwie über GET Parameter oder so Informationen übergeben und im Inhaltsbereich hab ich dann sozusagen nen rießigen switch case Block, der in Abhängigkeit der Parameter nen anderen include durchführt (irgendwie unschön).
Frames sind mir zur Darstellung zu kompliziert und unflexibel, hätten aber den hier beschriebenen Nachteil nicht.
Ne andere Möglichkeit wäre natürlich die gesamte Struktur der Anwendung (also Header, Footer, …) in jeder JSP erneut aufzubauen, aber das begünstigt Inkonsistenzen und Formatierungsfehler.
Die GET-Parameter und Switch-Case Variante ist die zu Beginn gängigste, allerdings ist diese natürlich „dynamisch“ genug. Da ich bisher nur sehr wenig mit JSP/JSF gearbeitet habe und eher aus dem Bereich PHP komme kann ich quasi nur von dem Bereich berichten. Allerdings sollten das was in PHP möglich ist definitv auch mit JSP/JSF möglich sein.
Ich habe es immer so gehändelt: Ich hatte eine View-Klasse welche mir die Views gerendert hat, der View konnte man ein „Layout“ geben welches das Gerüst der Seite darstellte(Header, Menu, RightColumn, Footer). In diesem Layout habe ich den Content Bereich mit einer Variable versehen. In dieser Variable steht später eigenetliche Inhalt. Dann hatte ich eine Controller-Klasse welche verschiedene Methoden beinhaltete, jede Methode war ein View nur mit dem Content. Diese View wurde dann von der View-Klasse in die vorhin erwähnte Variable geladen und in das Layout gerendert, somit hatte ich mein Layout in nur einer Datei und die Inhalte der Seite die ja meist variieren wurden in die Views untergebracht. Wem das jetzt bekannt vorkommt, genau diese Variante findet ebenfalls im CakePHP Framework statt, allerdings habe ich schon vorher es so gemacht bevor ich Cake kannte. Cake hat das ganze aber noch ein ganzes Stück weiter ausgebaut.
Jetzt ist es so, wenn ich wieder PHP mache nehme ich Cake, also ein Framework, genau dasselbe würde ich Dir jetzt auch empfehlen. Sicher ist es was schönes wenn man was eigenes gemacht hat, aber es geht eine Menge der Zeit an Aquisearbeit für sein eigenes Framework verloren die man gut hätte in die eigentliche Anwendung stecken können.
Ich für meinen Teil werde mir demnächst Grails zur Gemüte ziehen, ein Framework geschrieben in Java welches man zudem noch mit Groovy als Scriptsprache betreiben kann.
Ok, nun genug gequatscht, die anderen wollen auch noch
Gut Schuß
VuuRWerK
P.S.: Weil ich gerade lese: Tabellen-Layouts sind strengstens untersagt!!! :o)
Dem von VuuRWerK geschriebenen kann ich mich nur anschliessen. Ich hab groessere Webanwendungen bisher nur mit Ruby On Rails geschrieben, da ist der Mechanismus aber sehr aehnlich.
Dort kann man in spezielle
-Tags sogenannte partials (kleine html-Bausteine) setzen. Das klappt natuerlich auch (und im besonderen) per AJAX.
Das nahezu gleiche kann man aber auch per include machen. Also eine zentrale Layout-JSP, die includes benutzt um speziellen Content in bestimmte Bereiche zu packen.
Aber es gibt garantiert alternative JSP-Renderer-Frameworks, die dir viel Arbeit abnehmen. Mit den JSP-Tags kann man sicherlich auch viel erreichen, aber da kenne ich mich nicht besonders aus. Ich programmier meistens/gerade mit Swing und eben JRoR.
PS: KEINE TABELLEN!! Die Webdesigner werden euch hassen
ich weiß schalentier, deshalb hole ich mir auch für alle Sachen die schön aussehen sollen nen HTML Menschen
Einzige ausnahme ist meine HP die hab ich mir mit iWeb zusammen geklickt :D:D:D:D
Mit „switch-case“ Block meinst du hoffentlich keine Scriptlets!? Weil dann kannste gleich PHP programmieren SCNR.
Kommt auf die Größe des Projekts an. Bei kleineren bis mittleren braucht man kein extra Framework. Ich hab eigentlich für sowas immer ne SessionBean, wo gespeichert wird, was angezeigt werden soll. Und anhand dieser SessionBean kann man dann in der Seite ja ganz leicht unterscheiden was man jetzt anzeigen muss (war das jetzt irgendwie doppelt-gemoppelt )?.
Dummerweise sieht man dem Projekt vorher nicht immer an, wie groß es wird.
Ich bevorzuge daher von vornherein den Einsatz eines Frameworks. Bislang bin ich hier mit Struts ganz gut gefahren. Struts vereinfacht die Entwicklung nach dem MVC-Prinzip und bietet dabei ein hohes Maß an Flexibilität. Überall gibt es Schnittstellen zur Erweiterung und Integration bestehender Softwareelemente. So ist der RequestProcessor für die Abarbeitung eines Request nach dem Chain-Of-Responsibilty-Prinzip aufgebaut.
Für die Trennung der Seite in Bereiche wie Kopf, Navigation, Inhalt verwende ich Tiles. Hierbei wird eine Schablonenseite erstellt, die über eine Konfigurationsdatei mit Leben gefüllt wird. Die Komponenten sind dabei sehr leicht austauschbar.
Für den AJAX-Bereich kann ich empfehlen, sich mal GWT (Google Web Toolkit) anzuschauen. Die Web-Entwicklung erfolgt hier fast vollständig in Java. Das Entwicklungsergebnis wird per Cross Compiler in HTML und JavaScript übersetzt. Da GWT wie viele andere AJAX-Frameworks noch sehr jung ist, ist es noch stark ausbaufähig. Der Cross Compiler arbeitet allerdings bereits erstaunlich zuverlässig.