Zum Inhalt springen

Einfache Abfrage mit jsp oder servlet? und wenn ja, wie?


Empfohlene Beiträge

Geschrieben

Hallo,

ich bin noch recht neu, daher bitte ich um Nachsicht, falls ich etwas nicht sofort verstehe (ich werde aber darauf hinweisen und es mir aneignen).

Herausforderung:

Ich möchte eine Server-Anwendung die im Browser läuft schreiben und folgende Dinge tut:

Eingabe (Eingabe einer Zahl), Button (sollte auf Enter drücken reagieren).

Nach der Eingabe (und Enter-drücken bzw. klick auf den button) soll in einer Datenbank der Wert passend zur Eingabe gesucht werden.

Das Ergebnis soll in einer fortlaufenden Tabelle (die immer grösser nach unten wird) angezeigt werden und der Focus soll gleich wieder im Feld landen, so dass man sofort die nächste Zahl eingeben kann.

Den Java-Code (Zugriff auf die DB, auslesen der Werte etc. habe ich soweit fertig).

Was mir noch fehlt, ist der Aufbau und die technischen Mittel:

jsp mit frameset? Servlet?

Es sollte halt performant sein und ich würde gern während der ganzen Zeit die Connection zur DB offen halten und nicht immer neu aufbauen. Also wäre ein ständiger reload eher schlecht.

Hier ein hardcodiertes HTML-Beispiel wie es sein soll:

Beispiel mit Eingabe und Tabelle

War das verständlich?

Wie könnte das passende Gerüst dazu aussehen? Gibt es da "best practices"?

Vielen Dank!

Geschrieben

Das du den Code mit deiner Business Logik (DB-Zugriff) und den Rest der Anwendung trennen willst ist schon mal sehr gut. DB Connections bei einem Statuslosen Protokoll wie HTTP offen zu halten ist eine ganz schlechte Idee. Denn du weist ja nicht ob das jetzt die letzte Anfrage des Nutzer war oder ob da vielleicht noch ein paar hundert kommen werden. Hinzu kommt das diese Anfrage ja theoretisch nicht nur ein Nutzer machen kann sondern viele tausend. Deshalb bieten die meisten Servletcontainer (tomcat und co) die Möglichkeit an das Connectionpooling für dich zu übernehmen. Also die halten dann eine ausrechenden Anzahl an DB Verbindungen für dich bereit. Das solltest du nicht selbst programmieren.

Servlets wirst du im JEE Umfeld immer mal wieder finden. Selbst wenn heute viel über REST Schnittstellen und HTML und JavaScript gemacht wird. Solltest du die Servlet Grundlagen drauf haben und verstanden haben wie die Daten von deinem Browser an deinen Server gelangen und dort verarbeitet werden. Von daher würde ich zu einem Servlet Ansatz raten. Denn selbst wenn du später auf einen HTML und JavaScript Ansatz (z.B. GWT) wechseln solltest die Restschnittstelle ist Tief im inneren immer noch ein Servlet und wenn du die Grundlagen drauf hast ist das dann "nur" noch API.

Als Grundgerüst würde ich jetzt auf ein ganz normales Servlet Web development tutorial zurückgreifen und das durcharbeiten. Die meisten machen auch sowas Ähnliches wie du vor hast.

Geschrieben

Vielen Dank für den Input!

Das Connection-Pooling ist natürlich ein guter HInweis, danke dafür.

Ich habe nun ein Servlet, dort die GET-Methode überschrieben und schreibe folgenden HTML-Code heraus:

<html>

<head>

</head>

<body>

<form name="valueForm" action="/sample/drs" method="GET">

<p>Suche nach Wert<br><input name="key" type="text" size="10" maxlength="10"><input type="submit" value="Absenden">

</form

<script type="text/javascript">

document.valueForm.key.focus();

</script>

</body>

</html>

Mein Problem nun:

der Focus wird nicht gesetzt.

Aber warum? Wo liegt der Fehler?

Oder ist es, weil der Code vom Servlet produziert wird?

Geschrieben
Oder ist es, weil der Code vom Servlet produziert wird?

Du musst bitte auch unterscheiden zwischen Code der auf dem Server ausgeführt wird, in deinem Fall das Servlet und dem Code der im Browser ausgeführt wird. Das ist JavaScript in deinem Fall. Dem Browser und auch JavaScript ist es egal ob es von einem Servlet ausgespielt wird oder von einem PHP Script.

Geschrieben
Ich möchte eine Server-Anwendung die im Browser läuft schreiben und folgende Dinge tut:

Die Frage ist: lohnt es sich dafür Java einzusetzen? Oder bist Du da frei?

Bis Du bei Java einen Webserver an's laufen bringst ist das eine ganz schöne Zeremonie.

Nur mal so zum Vergleich:


// Load the http module to create an http server.

var http = require('http');


// Configure our HTTP server to respond with Hello World to all requests.

var server = http.createServer(function (request, response) {

  response.writeHead(200, {"Content-Type": "text/plain"});

  response.end("Hello World\n");

});


// Listen on port 8000, IP defaults to 127.0.0.1

server.listen(8000);


// Put a friendly message on the terminal

console.log("Server running at http://127.0.0.1:8000/");

Das reicht aus, um unter NodeJs ein Hello World zu schreiben.

Ich möchte eine Server-Anwendung die im Browser läuft schreiben und folgende Dinge tut:

Eingabe (Eingabe einer Zahl), Button (sollte auf Enter drücken reagieren).

Nach der Eingabe (und Enter-drücken bzw. klick auf den button) soll in einer Datenbank der Wert passend zur Eingabe gesucht werden.

Das Ergebnis soll in einer fortlaufenden Tabelle (die immer grösser nach unten wird) angezeigt werden und der Focus soll gleich wieder im Feld landen, so dass man sofort die nächste Zahl eingeben kann.

Das ist nicht unbedingt Rocket-Science. Das kannst Du quasi mit fast allem bauen.

Es sollte halt performant sein

*LOL* Bei der Anforderung dürfte quasi alles performant sein.

Einfache Abfrage mit jsp oder servlet?

Weder noch. für eine derart geringe Anforderung tut's auch eine self-contained-Anwendung, die Du mit Spark - A small web framework for Java zusammenklebst. Du benötigst lediglich 2 Routen: eine zum Ausliefern Deines HTMLs und eine zweite, über die Du die Daten nachziehst. fertig.

Also wäre ein ständiger reload eher schlecht.

Das läßt sich bequem als SPA implementieren.

Hier noch ein bisschen was gegen Langeweile:

Tinkering with Spark: A Micro Web Framework for Java

Spring MVC + Hibernate + Maven: CRUD operations example | Java Code Geeks

https://github.com/joshlong/a-walking-tour-of-all-of-springdom

Spring and Hibernate Application with Zero XML | Javalobby

Spring 3 MVC hello world example

https://github.com/spring-projects/spring-petclinic/

https://github.com/swaldman/c3p0

Spring

Hibernate - JBoss Community

https://www.codeschool.com/courses/try-jquery

https://www.codeschool.com/paths/javascript

https://www.codeschool.com/paths/html-css

@Schiller256

DB Connections bei einem Statuslosen Protokoll wie HTTP offen zu halten ist eine ganz schlechte Idee. Denn du weist ja nicht ob das jetzt die letzte Anfrage des Nutzer war oder ob da vielleicht noch ein paar hundert kommen werden.

WebSocket - Wikipedia, the free encyclopedia

WebSocket is a protocol providing full-duplex communications channels over a single TCP connection

Apache Tomcat 7 (7.0.47) - WebSocket How-To

Servlets wirst du im JEE Umfeld immer mal wieder finden. Selbst wenn heute viel über REST Schnittstellen und HTML und JavaScript gemacht wird. Solltest du die Servlet Grundlagen drauf haben und verstanden haben wie die Daten von deinem Browser an deinen Server gelangen und dort verarbeitet werden. Von daher würde ich zu einem Servlet Ansatz raten.

Zum einen braucht man für derartigen Pipifax nicht zwingend Servlet, zum anderen würde ich heutzutage kein Servlet mehr selbst schreiben. Auch, wenn es für diesen Anwendungsfall hier Overkill ist, würde ich dennoch empfehlen, schnell einen Spring-Container samt MVC und Sping-Data aufzusetzen -ist heute auch keine Zauberei mehr- und dann hat man meist alles, was man so braucht. Ist pflegeleicht im Umgang und wächst prima mit den Anforderungen im Projekt mit.

Geschrieben

Bevor jemand der noch nie eine Webanwendung gebaut hat hier wild mit Frameworks los werkelt, sollte er doch wenigstens die Grundlagen verstanden haben. Genau dafür ist ein Servlet gut. Denn egal was du Heute einsetzt sei es für Webservices (JAX-RS, JAX-WS) oder auch Portlets ist es am Ende des Tages immer wieder ein Servlet was deine Anfragen verarbeitet und weiterleitet. Genau das gleiche macht auch Spring mit seinem Dispatcher Servlet.

Ich habe jeden Tag mit Leuten zu tun die meinen gleich mit super schicken Frameworks starten zu müssen ohne die Grundlagen drauf zu haben. Das geht dann meist gehörig in die Hose und dann wird entweder auf der Framework und/oder auf JEE im allgemeinen geschimpft. Das Problem sitz aber doch recht häufig vor dem PC und hat einfach die Grundlagen nicht verstanden!

Auch bei WebSockets hier sollte man erstmal Grundsätzlich verstanden haben wie eine Webanwendung arbeitet und nicht gleich den "neusten" Hype nachrennen ohne das man ihn brauchen würde.

Ich habe nicht gesagt das man niemals Frameworks einsetzen sollte. Nur sollte man speziell wenn man beginnt erstmal drauf verzichten und sich eine gewisse Basis schaffen.

Geschrieben (bearbeitet)

Denn egal was du Heute einsetzt sei es für Webservices (JAX-RS, JAX-WS) oder auch Portlets ist es am Ende des Tages immer wieder ein Servlet was deine Anfragen verarbeitet und weiterleitet. Genau das gleiche macht auch Spring mit seinem Dispatcher Servlet

Ja. Allerdings schreibt niemand das Dispatcher Servlet selbst, sondern nutzt das mitgelieferte.

Bevor jemand der noch nie eine Webanwendung gebaut hat hier wild mit Frameworks los werkelt, sollte er doch wenigstens die Grundlagen verstanden haben

Das Argument läßt sich ad libitum erweitern: Wer nicht verstanden hat, was Java-Bytecode ist, sollte kein Java programmieren. Wer nicht weiß, wie C geschrieben wird ... usw.

Ich finde nicht, dass es notwendig ist, en Detail zu wissen, was ein Servlet ist (es schadet aber auch nicht).

Wichtiger ist, dass man weiß wie HTTP funktioniert und was Uniform Resource Identifier sind und wie das Konzept von "Routing" damit umgesetzt wird. Wer das Verstanden hat, kann sich sowohl unter Express wie Rails oder anderen Frameworks bewegen. Um "Autofahren" zu können muß ich zunächst nicht wissen wie das Auto intern funktioniert, sondern wie ich von A nach B komme.

Ich habe jeden Tag mit Leuten zu tun die meinen gleich mit super schicken Frameworks starten zu müssen ohne die Grundlagen drauf zu haben.

Und was sagt uns das? Willst Du von einer beschränkten Gruppe auf die Allgemeinheit schließen?

Das geht dann meist gehörig in die Hose und dann wird entweder auf der Framework und/oder auf JEE im allgemeinen geschimpft.

Aber es liegt nicht daran, dass diese Menschen Frameworks benutzen.

Auch bei WebSockets hier sollte man erstmal Grundsätzlich verstanden haben wie eine Webanwendung arbeitet und nicht gleich den "neusten" Hype nachrennen ohne das man ihn brauchen würde.

Mit der Einstellung würden wir heute noch auf den Bäumen sitzen.

Es gibt heutzutage viele Fälle in denen Echtzeitkommunikation gewünscht ist (evtl. auch beim TO); die läßt sich mittles Websockets wesentlich bequemer umsetzen als mittels long-polling/COMET o.ä. Und eine Technik abzuurteilen, nur weil sie "neu" ist, halte ich für ungerechtfertigt.

Nur sollte man speziell wenn man beginnt erstmal drauf verzichten und sich eine gewisse Basis schaffen.

Umgekehrt wird ein Schuh draus: Gerade, wenn man in die zeitgemäße Entwicklung einsteigen möchte, wäre es gut, sich mit einem Framework zu beschäftigen: Vorallem wenn man Frameworks hat, die einem "Arbeit" abnehmen. Wenn man ein "Gefühl" dafür bekommen hat, wie Anwendungen mit Frameworks konzipiert werden können, lohnt es sich in die Details abzutauchen.

Ein gutes Beispiel finde ich dabei Spring-Data. Spring Data abstrahiert weitestgehend von Datenbanken. Es erlaubt e.g. einen einheitlichen Zugriff mittels Repository-Interface-Deklaration, d.h. es reicht lediglich die Deklaration einer Interfacemethode, und schon kann man die entsprechende Daten aus der Datenbank beziehen. Der Rest wird wegabstrahiert und per Reflection während der Laufzeit generiert. Das heißt nicht, dass man nicht auch nativ SQL nutzen kann; aber es ist nicht (immer) notwendig.´

Ich finde es didaktisch sinnvoller einen schnellen und bequemen Einstieg in Webentwicklung zu bieten als mühselig vom Abakus über Lochkarten und Disketten zur modernen Webentwicklung zu gelangen.

Nicht das wir uns falsch verstehen: Es geht lediglich darum einen Einstiegspunkt zu definieren, der mitnichten ein Endpunkt darstellt.

Bearbeitet von lilith2k3

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...