Die Rückgabe von Daten aus der Servlet-Java-Client
Hallo ich habe ein problem mit dem zurückgeben von Daten aus der Servlet-Java-Client.
Dies ist immer das erste mal, dass ich ein servlet.
Alle Beispiele, die ich gesehen habe auf der web-return-Daten zu einer HTML-Seite, aber ich möchte eine Server-Client-software auf dem Server etwas tun und return eine String-Liste.
Wie kann ich zurück von einer GET - /POST-Methode ein Array, um einen Client? Was muss ich einstellen in setContentType?
Ich nicht verstehen, wie kann ich in der Antwort die Informationen, die ich will (wie int , array , String) und an den Client zurückgeben.
Wenn das jemand machen könnte ein Beispiel, wo ein Java-Client stellen Sie eine POST-Anforderung als auch ein Servlet ist, ihn wieder zu einem Array oder einer ArrayList würde ich mich sehr freuen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie laufen in das problem der Serialisierung. Serialisierung ist, wo Sie konvertieren Sie Daten in einem format übertragen werden kann. Es gibt mehrere Möglichkeiten, dies zu tun, einige sind erwähnt in anderen Antworten.
Ich würde vorschlagen, mit JSON als format an. Können Sie ein schönes JSON-Bibliothek für java von json.org. Dann können Sie einfach erstellen Sie eine JSON-array mit der Bibliothek und schreibt Sie in die servlet-der Ausgabestrom.
Nun von Ihrem client, können Sie stellen Sie den Antrag und wieder Ihre ArrayList etwa so:
Scheinen Sie zu brauchen, einen RESTful-Dienst über http. Sie sollten den Weg wählen, die Sie serialisieren möchten Ihre Objekte. Die typische Wahl ist JSON - Sie serlialize das Objekt zu JSON und schreiben Sie die Antwort (mit
Content-Type
eingestelltapplication/json
Gibt es frameworks, die das tun - werfen Sie einen Blick auf Spring MVC oder Jersey/Resteasy
Wenn Sie etwas mehr low-level, Sie können RMI oder sockets direkt, ohne Verwendung einer servlet. Servlets ausgerichtet sind, um Antworten auf HTTP-Anfragen, die können nur senden, textuellen Daten.
IMO werden Sie wollen, um die Daten entweder als XML oder JSON, das macht die client-generation viel leichter. Ohne zu wissen, was Ihr Kunde wirklich ist, ist es schwierig, sehr hilfreich sein, wenn.
Senden nativen Objekte können nicht erreicht werden, aber JSON ist eine günstige alternative.
Benutzen Sie eine Bibliothek wie GSON zu serialisieren /Deserialisieren nach /von JSON.
Konnte Sie nur wickeln Sie den response-stream-Ausgabe innerhalb einer
ObjectOutputStream
- und schreiben Sie Ihre Java-Objekt (das würde serialisierbar sein sollen), um dieObjectOutputStream
. Auf der client-Seite, wickeln Sie die input-stream innerhalb einesObjectInputStream
verwendenreadObject
, und warf das Ergebnis mit dem erwarteten Objekttyp.Dies macht natürlich das servlet nur nutzbar, die von clients in Java geschrieben, und die teilen sich den gleichen Klassen wie der server. In der Regel, ein service bietet eine HTTP-Schnittstelle verwendet werden soll, die von jeder Art von client-und einer eher offenen format gewählt, wie XML oder JSON. Aber wenn es das ist, was Sie brauchen, warum nicht verwenden systemeigene Serialisierung. Das ist es, was Spring HttpInvoker tut, BTW.