Hallo,
Wie meinst Du das genau? Wenn irgendwo im Designder "Vorname" erscheinen soll, füge ich den in PHP mit <? $vorname ?> ein. Wie macht man das in JSP einfacher? Und der Restliche Code steht dann doch auch an anderer Steller in der Datei, genau wie in PHP, oder? Aber wenn ich z.B. in PHP eine aus einer DB generierte Tabelle erstellen will, dann ist das ein ganz schöner Mischmasch, die Abfrage und der PHP-Code schreibe ich dann halt vor die Tabelle, und die eine Zeile mit den Variablen muß ich mit einer Schleife umschließen. Ist unschön für ewinen Designer, aber geht das überhaupt andes in JSP?
Mit reinem JSP natuerlich nicht. Damit das ganze komfortabler wird sollte man die Logik in Servlet, Beans und eigenen Tags kapseln.
Den Code fuer eine DB Abfrage kann z.B. in eine Klasse ausgelagert werden. Der Designer erhaelt vom Programmierer die notwendigen Daten, die er einfach und fuer ihn verstaendlich in den HTML Code einbinden kann, z.B. durch:
Kunden Name: <%= customer.getName() %>
Diese Zeile soll z.B. den Namen vom Kunden ausgeben - fuer jemanden der HTML etwas versteht sicherlich gut nachzuvollziehbar.
Klar, hier fehlt noch eine wenig Code vorher (1. eine Aufruf wie <jsp:useBean id="customer" scope="page" class="hier.liegt.die.klasse" /> und 2. der aufruf zum "durchlaufen" des resultset wie in php auch). Aber auch dies laesst sich mit benutzerdefinierten Tags noch eleganter loesen:
<cust:show customer_id="13">
Kunden Name: <%= name %>
Ort: <%= ort %>
</cust:show>
Hier ist vorher einiges an Arbeit zu leisten, bis dies funktioniert.
Sieht ein wenig wie ColdFusion aus, bietet aber IMHO nach den Vorteil das ich nicht wie im <cfqeury> die DB Namen, Passwort etc. hinterlegen muss [1]. Oder gibt es hierfuer mittlerweile eine bessere Loesung? Das ist unter Umstaenden ein Sicherheitsproblem. Denn wenn der Parser ausfaellt - egal ob in PHP oder ColdFusion - sieht der Nutzer im Browser Datenbankname und Passwort sofern man diese Informationen nicht "aus der Sichtweite" ausgelagert hat. Auch nicht schoen. Nebenbei: Es gibt in Zusammenhang mit dem IIS4 und aelterer CF Versionen ein Sicherheitsloch, bei dem es sehr einfach war sich diese Informationen anzeigen zu lassen (sofern kein Patch aufgespielt war).
Nur kurz - was sind BEANS?
Beans sind eben fuer diese Trennung von Logik und Design gut geeignet und machen die Wiederverwendung in verschiedenen Anwendungen moeglich. Ein Komponentenmodell halt.
Details gibt es bei Sun http://java.sun.com/products/javabeans/ bzw. auf der faq Seite http://java.sun.com/products/javabeans/FAQ.html.
Naja, das finde ich auch gar nicht so dumm! In eben dieser Datei beziehe ich nich ja auch auf die Abfrage, und wenn jetzt irgendjemand in einer anderen Datei was an der Afrage ändern könnte, dann funktioniert die Datei auf einmal nicht mehr! In welcher Form werden die Abfragen denn ausgelagert?
mmhh, sollte mit den oben genannte Beispielen geklaert sein. Habe da einiges vorweg genommen...
in die eigentliche Datei einbinden und dann kann ich auf alle Abfragen zurückgreifen, wie ich will! Was ist da jetz der Unterschied zu JSP?
Wenn man will kann man es mit JavaServer Pages genau so loesen wie in PHP oder ASP auch. An dieser Stelle weise ich lieber mal drauf hin, dass man durch die JavaServer Pages XML- und HTML-Templates mit Java verwendet. Servlets, Beans und benutzerdefinierten Tag sind wiederum nicht in XML- und HTML-Templates zu verwenden. Servlets, JSP, Beans haben nur die Java Technologie gemeinsam. Einfacher ausgedrueckt: JSP entspricht etwa PHP, Servlets sind eher als Antwort auf CGI zu verstehen.
Ich mache das in einem Verzeichnes, welches nicht pber das Web erreichbar ist. Wenn Du das nicht hast einfach über ein anderes Verzeichnis, z.B. www.server.de/nicht_für_die_öffentlichkeit/
Das ist auch die mir einzig bekannte Moeglichkeit - die ich allerdings nicht fuer so schoen halte. Mit der genannten Resin Engine [2] kann man z.B. die Daten fuer DB Name, User, Passwort, Treiber etc. zentral in einer conf-Datei konfigurieren. Klar laesst sich das auch mit einer Datei in PHP loesen - ich habe halt nur ein unwohles Gefuehl dabei ;-)
Ah, die namen habe ich schon gehört :-) Wie sind denn Solche Server im Vergleich zu Apache/PHP?
Meist werde diese nur aufgesetzt. Resin ist meiner Meinung nach einfacher (als Tomcat) zu konfigurieren. Aber das ist alles eh nicht meine (Lieblings-)Welt ;-)
Ah, Danke! hab zwar erstmal genug mit PHP zu tun, aber vielleicht wird JSP ja mal ne Alternative!
Meiner Meinung nach kann man mit PHP kleine bis mittlere Projekte schnell realisieren. Bei groesseren sollte man sich die Java Technologie mal naeher anschauen. Das soll nicht bedeuten, dass man mit PHP keine umfangreichen Projekte realisieren kann.
Ebenso halte ich ColdFusion unter Umstaenden (und dem noetigen Kleingeld) fuer eine Alternative.
Viele Gruesse
Andreas
[1] sicherlich kann ich mir mit den Java Technologien ein Tag erstellen, dass eine Verbindung zur DB aufbaut: <db:conn dbname="dbname" query="select id,name from tabelle" user="ich" passwort="g-heim">
[2] mit anderen JSP/Servlet Engine sicherlich auch