Servlet Servlet das richtige?

ErikS

Mitglied
Hallo,
ich kann ein wenig(klitzeklein ;-) ) Java programmieren und wollte mich mal weg von den .jar Programmen auf der Festplatte bewegen und ins Internet+ Datenbank rein.
Also erstmals normal in Java ein Programm erstellt welches mit einer Datenbank kommunizieren kann.
Recht einfach: Es gibt einen Namen und eine zufällige Zeichenfolge welche zusammen mit einer Positionsnummer an ein PHP Skript übergeben wird. Das Skript schreibt die werte dann in die DB. Mann kann nun im Java Programm über die Zeichenfolge z.B. die Positionsnummer rausbekommen (simples php)
Zusätzlich wird die aktuelle Zeichenfolge als QR Code dargestellt (Eingebundenes Externes JAR File)

So...Nun würde ich das ganze gerne komplett in eine Webseite packen.
Ganz wichtig ist mir dabei, dass es in jedem aktuellen Browser (Auch Mobilgeräte) läuft ohne dass man irgendwas haben (JVM) oder installieren muss. Also fallen Applets ja weg.

Bevor ich mit mit Servlet auseinander setze und dabei kann es nicht funktionieren ein paar Fragen:
Servlets benötigen nur auf dem Server Java (Tomcat o. ä.) und benötigen von Clientseite nix?
Eine GUI macht man mit HTML/CSS und nicht mit Java Swing?
Kann man komplett Java mit externen JARs verwenden? (Das QR erzeugen benötigt z.B. ein Graphics 2D Element)
Wenn ich eh den kompletten Quellcode quasi neu machen muss, kann ich auch gleich was anderes nehmen.


Und die wichtigste Frage: Würdet ihr das überhaupt mit Servlets machen oder einen komplett anderen Weg gehen? Andere Sprache etc?

Ganz grob soll es so aussehen, da soll später noch ein Suchen Feld rein und evtl anderes Zeug was ich jetzt noch nicht weiß 🙂

 
Servlets benötigen nur auf dem Server Java (Tomcat o. ä.) und benötigen von Clientseite nix?
Ja, das ist richtig.
Eine GUI macht man mit HTML/CSS und nicht mit Java Swing?
Ja.
Kann man komplett Java mit externen JARs verwenden? (Das QR erzeugen benötigt z.B. ein Graphics 2D Element)
Ja.

Und die wichtigste Frage: Würdet ihr das überhaupt mit Servlets machen oder einen komplett anderen Weg gehen? Andere Sprache etc?

Nein, würde ich vermutlich nicht. Ich würde einfach die bestehende php Anwendung erweitern.
 
Also von der JavaEE Seite her hast du mehrere Möglichkeiten: Vom Standard her gibt es Servlet, JSP, JSF (wobei Letzteres der IST-Standard ist). Kaum zu erwähnen, dass auf diesen Frameworks andere mächtige Frameworks aufbauen (Bsp: Spring).
Grundsätzlich brauchst du bei allen oben genannten Technologien einen Application-Server (Glassfish, Wildfly, etc.... HIER eine Auflistung).

Backend wird mit Java und JavaEE Elementen programmiert, wie du schon richtig erkannt hast. Kann mit normalen JavaEE passieren oder eben Web-Frameworks wie Spring.

Zum Frontend gibt es jetzt zig Variationen. Um im Java EE Standard zu bleiben mach es mit JSF/JSP (JSF ist bevorzugt). Sonst gehts auch mit Spring/Vaadin/Angular.JS/php/... (solltest einmal auf Google suche gehen, was es nicht alles gibt).
 
Für Servlets reicht ein einfacher Web-Container.

Und ein Servlet, welches 3 Form-Parameter entgegennimmt, ist auch in 5 Minuten fertig. Die JavaEE Application-Server-Keule zu schwingen ist da total "overpowered".

Mal ganz abgesehen davon findet man unter Garantie auch php Scripts zum erzeugen von QR Codes. Warum also nicht auf Bestehendes zurückgreifen und entsprechend ergänzen, sondern stattdessen eine Ressourcenhungrige Java-Anwendung für so einen Kleinkram hochziehen?
 
@stg Aye, natürlich reicht für Servlets ein einfacher Web-Container.
Ich hatte die Frage ein wenig missinterpretiert und dachte alles sollte in einem JEE Umfeld gemacht werden.
 
Da die Layer vermischt sind, leuchtet eine rote Lampe in meinem Kopf und schrillt die Sirene.

Dass dem so ist, ist für mich erst einmal eine haltlose Unterstellung. Woher nimmst du diese Info? Ich sehe hier nix, was darauf hindeutet. (Außer der Tatsache, dass ein Anfänger die Frage stellt und Anfänger solche Fehler fast immer machen 😉)

Die Datenbank-Anbindung über das php Script gibt es ja außerdem schon, er will primär wohl nur Java benutzen, um den QR Code zu erzeugen.

JSF ist super bei komplexen Forms-Anwendungen mit nem Haufen an Validierungen, Templating, asynchronen Abläufen undundund ... aber bei nem einfachen Formular mit drei Eingabefeldern? Das ist mit HTML/JS auch in 5 Minuten fertig. Welchen nennenswerten Vorteil ziehst du da aus der Verwendung von JSF?
 
Ich hatte mich auf dem Link bezogen, den ich geschickt hatte. Desweiteren habe ich gedacht, dass der TO die Datenbankanbindung auch mit dem Servlet machen wollte. Bei der Nutzung von JSF kann ich z.B. mit xhtml eine datatable bauen. Ich finde die codeweise Abtrennung der Darstellung(XHTML) vom Code(Java) wichtig. Dass im Codebeispiel. das ich gegeben habe, von der Datenbankanbindung bis zur Darstellung alles in einer Methode ist, finde ich persönlich ... gewöhnungsbedürftig. Den "Anfänger" lasse ich mal so im Raum stehen 🙂.
 
Ich finde die codeweise Abtrennung der Darstellung(XHTML) vom Code(Java) wichtig.
Ja klar, das ist es ohne Frage. Aber das hat so ziemlich gar nix mit den verwendeten Technologien zu tun.
Die Darstellungs-Schicht kannst du übrigens auch in Java schreiben, da spricht ersteinmal nichts gegen. (siehe zB Vaadin)
Und bei JSF wird ja letzten Endes natürlich auch von nem Servlet mit Hilfe von stinknormalem Java Code der HTML Output generiert.

Dass im Codebeispiel. das ich gegeben habe, von der Datenbankanbindung bis zur Darstellung alles in einer Methode ist, finde ich persönlich ... gewöhnungsbedürftig.
Der Code in dem Beispiel ist auch großer Mist. Aber das Code-Beispiel hast DU ja hier ins Spiel gebracht. 😕

Bei der Nutzung von JSF kann ich z.B. mit xhtml eine datatable bauen.
Kann ich mit HTML+JS auch...

Ich bin ja selbst großer Fan von Java EE, aber im genannten Fall (insbesondere, wenn man berücksichtigt, dass vieles bereits in einer bestehenden php Anwendung gelöst ist) ist das doch einfach total überdimensioniert. Ich fahr ja auch nicht mit nem 40-Tonner Brötchen kaufen.
 
War das jetzt ein verzweifeltes "Der Klügere gibt nach", geschuldet der Tatsache, dass mir gerade langweilig ist und ich einfach nicht die Klappen halten will? 🙂

Ich hoffe einfach mal, dass mein Anliegen nicht allzu falsch rüberkam. Mein Mentor sagte mir mal "Choose the right tool for the job", als ich ihn mit Fragen zu Problemen gelöchert habe, die ich mir durch die falsche Wahl der Technologien selbst geschaffen habe.

Ach ja, um das ganze noch ein wenig weiter breitzutreten:
Ich hab im CodeReview schon mehr als einmal gesehen, dass in einer getter-Methode, die eine JSF datatable füttert, die Daten erst einmal aufbereitet werden. Sogar auch, dass dort Daten aus der Datenbank geholt werden. Wenn ich so ein Beispiel posten würde, dann kämst du vermutlich auch nicht auf die Idee zu sagen, dass JSF doof ist, weil man damit keine saubere Schichten-Trennung vornimmt. Wenn der Handwerker besoffen ist, dann kann das Material noch so gut sein...

Ganz allgemein: Ja, JSF ist toll. Aber der TE fängt ja gerade erst an mit der Web-Programmierung in Java. Da muss man dann vielleicht nicht direkt mit den HighLevel APIs anfangen. Ich bin grundsätzlich eigentlich immer ein Freund davon, dass man die LowLevel APIs wenigstens grundsätzlich vom Prinzip her verstanden haben sollte.

Und gerade bei kleineren Anwendungen ist weniger oft auch mehr.
Für die Umsetzung im konkreten Fall hier würde ich eine xhtml + BackingBean für die UI haben. Ohne weitere Frameworks wie z.B. PrimeFaces wird es schon schwierig mit gestreamten Content (das QR-Bild) Alternativ könnte ich natürlich auch das Bild generieren, auf der Platte speichern und dann von da aus auslesen, aber das ist auch wieder unschön. Weiter muss ich mir einen Service aufsetzen (z.B. mittels eine Stateless EJB), welche in geeigneter Weise mit der bestehenden php Anwendung kommuniziert, auf Fehler reagiert usw.
Auf der anderen Seite kann ich aus der bestehenden php Anwendung heraus aber einen ganzen simplen Request an ein Servlet schicken, welches mir den QR Code generiert und dann wie gewünscht den Response weiterverarbeiten. Oder ich verzichte hier ganz auf Java und suche mir eine php Lib, die das für mich macht. Oder ich erstelle den QR Code sogar im Client mit JavaScript.
Die einzigen plausiblen Gründe hier auf JSF zu setzen wären für mich: Entweder man ist im Umgang mit JSF und Co so geübt (und mit den anderen Technologien nicht), dass man deutlich schneller eine saubere Lösung schreiben kann. Oder man macht das einfach aus Jux und Dollerei, um zu lernen. Beides ist natürlich total legitim.

Jetzt lass ich dich und die anderen aber auch mit meinem Geschwafel in Ruhe und fahr nach Hause. Feierabend für heute 🙂
 
Danke für eure Beiträge. "Anfänger" kann man stehen lassen. Ich habe im Studium ein paar Semester Java gelernt. Da dies bisher meine einzige richtige (an)gelernte Sprache ist, habe ich halt erstmal damit was gemacht.
Das was ich jetzt vorhabe soll später auch von anderen Personen genutzt werden über das Internet, aber nur im kleinen privaten Kreis.
Geplant ist in Zukunft auch einen Android App (Mit Java 😀 ) welche dann den QR Code einließt und somit die Zeichenkette hat und dann damit die Position suchen kann.
Schon deswegen habe ich die (momentan sehr simplen) php skripte zum einfügen/löschen/suchen in der DB.
Mal schauen wie das mit HTML/CSS klappt und wie das zusammenspiel mit PHP funktioniert.
So wie ich das aus den Antworten rausgelesen habe, wird das ja auch empfohlen.
Bootstrap soll als CSS ja ganz nett sein z.B.
Aber ich komme eh erst in einer Woche dazu mich intensiv damit zu befassen.
 

Zurück
Oben