Applet - Servlet-Kommunikation
Habe ich aufgegeben meine früheren quest, um das applet kommuniziert direkt mit der Datenbank, obwohl die Benutzer und die Webseiten, die gesagt haben, dass es möglich ist. Ich bin jetzt versucht, meine applet, um Informationen (String und boolean-format) Eingabe in Textfeldern oder die durch angezeigte Kontrollkästchen, und geben diese an das servlet, welches dann speichert Sie entsprechend in der Datenbank. Ich habe die applet-front-end - GUI - gebaut, und die servlet - Datenbank-Verbindung wird auch aufgebaut. Das einzige problem ist die Verbindung zwischen den beiden, applet und servlet. Wie würde man pass String-Daten aus einem applet ein servlet?
Dank,
Joseph G.
- Es ist möglich, aber nur unter der Bedingung, dass der Zugriff auf die Datenbank von außen auf einem bestimmten port (üblicherweise port 3306 für MySQL). Die meisten Website-hosts haben diese port aber geschlossen. Ich würde versuchen zu tun GET/POST an die URL, die für die servlet: stackoverflow.com/questions/2484119/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, müssen Sie bestätigen, dass Sie kann nur mit dem server kommunizieren, von wo das applet heruntergeladen wurde, aus, dass auch die port-Nummer, es sei denn, Sie möchten mess around mit Berechtigungen, applet signieren und alle, die malarky. Dies ist auch nicht nur ein Applet Einschränkung, das gleiche gilt für Flash und JavaScript (obwohl im Fall von JavaScript gibt es tricks, diese zu umgehen).
Entweder mit der "getCodeBase () oder getDocumentBase ()" - Methode für das Applet, erhalten Sie eine URL, von der aus Sie können die Komponente erforderlichen Teile zum Aufbau einer neuen URL, lassen Sie Sie aufrufen, ein servlet.
So, in Ihrem Applet werden müssen, bedient zu werden von dem gleichen server, dem servlet gehostet wird.
z.B., wenn das Applet ist auf der folgenden Seite:
http://www.example.com/myapplet.html
...es heißt, Sie können Anrufe zu jeder beliebigen URL, die beginnt mit
http://www.example.com/
...relativ leicht.
Folgenden ist ein grobes, ungetestet, dieses Beispiel zeigt, wie Aufruf ein Servlet. Dies setzt Voraus, dass dieses code-snippet aufgerufen wird, der innerhalb einer Instanz des Applets.
Dann im servlet, können Sie den text geschickt durch überschreiben doPost() und Lesen des input-Streams aus der Anfrage (kein exception-handling gezeigt und liest nur die erste Zeile der Eingabe):
Natürlich, das ist nur ein Ansatz. Sie könnten auch nehmen Sie Ihre Eingaben und Aufbau eines query-string wie folgt aus (URLEncoding nicht gezeigt):
und Anhängen, dass zu Ihrer URL:
Allerdings scheint es relativ Häufig zu aufzubauen, eine Art von string-und stream es dem servlet statt in diesen Tagen.
Empfohlene format wäre JSON, da es semi-strukturierten und dennoch einfach zu Lesen und es gibt genügend (de)serialisierungsprogramme um diese Arbeit sollte in Ihrem Applet und in Ihrem servlet. Dies bedeutet, dass Sie haben ein schönes Objekt-Modell für Ihre Daten, die Sie teilen konnte zwischen Ihrem Applet und Servlet. Aufbau eines query-string der komplexen Eingänge kann ein Geist bender.
Ebenfalls, Sie könnten tatsächlich verwenden Java serialisieren und stream-Binärdatei auf Ihrem Servlet, welches dann verwendet Java serialisieren zum erstellen der entsprechenden Java-Objekte. Jedoch, wenn Sie an so etwas wie JSON, werde es bedeutet, dass dein servlet ist mehr offen für re-verwenden, da Java serialisieren wurde nie umgesetzt außerhalb von Java (die ich mir bewusst bin).
connection.getInputStream()
Hm, ich denke mal das applet und das servlet in zwei separaten Java-Prozesse. In diesem Fall müssen Sie einige remoting-Technologie, z.B. ein http-Aufruf auf localhost. In der Tat, das ist es, was servlets sind hauptsächlich verwendet und implementiert für: Annehmen und Bearbeiten von http-Anfragen.