Wie zu verwenden Servlets und Ajax?
Ich bin sehr neu in web-Anwendungen und Servlets und ich habe folgende Frage:
Immer wenn ich etwas drucken innerhalb des servlet und rufen Sie mit dem webbrowser, es gibt eine neue Seite mit diesem text. Gibt es eine Möglichkeit, den text zu drucken, die in der aktuellen Seite, die mit Ajax?
InformationsquelleAutor Amir Rachum | 2010-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Tat, das Schlüsselwort ist "ajax": Asynchronous JavaScript and XML. Aber die letzten Jahre ist es mehr als oft Asynchronous JavaScript and JSON. Im Grunde, Sie lassen JS ausführen eines asynchronen HTTP-Anforderung, und aktualisieren Sie die HTML-DOM-Baum basierend auf der response-Daten.
Da ist es ziemlich ein mühsam Arbeit zu machen es funktioniert in allen Browsern (vor allem Internet Explorer im Vergleich zu anderen), es gibt viele JavaScript-Bibliotheken aus, die vereinfacht dieses in einzelnen Funktionen und deckt möglichst viele browser-spezifische bugs/Macken unter der Haube, wie jQuery, Prototyp, Mootools. Seit jQuery ist sehr beliebt in diesen Tagen, ich ' ll verwenden Sie es in der folgenden Beispiele.
Kickoff Beispiel bei der Rückkehr
String
als plain textErstellen Sie eine
/some.jsp
wie unten (Hinweis: der code nicht erwarten, dass die JSP-Datei platziert wird, in einem Unterordner, wenn Sie dies tun, ändern-servlet-URL entsprechend anpassen):Erstellen Sie ein servlet mit einem
doGet()
Methode, die wie folgt Aussehen:Karte dieses servlet auf ein URL-Muster der
/someservlet
oder/someservlet/*
wie unten (natürlich der URL-Muster ist frei, um Ihre Wahl, aber Sie brauchen, zu ändern, diesomeservlet
URL in JS-code-Beispiele, die über alle Ort entsprechend):Oder, wenn Sie nicht auf einem Servlet-3.0-kompatibel-container, die noch (Tomcat 7, Glassfish 3, JBoss AS 6, etc. oder neueren), ordnen Sie es in
web.xml
auf die altmodische Weise (siehe auch unsere Servlets wiki-Seite):Öffnen Sie nun die http://localhost:8080/context/test.jsp in den browser und drücken Sie die Taste. Sie werden sehen, dass der Inhalt des div-aktualisiert mit der servlet-Antwort.
Rückkehr
List<String>
als JSONMit JSON statt der Klartext-als-Antwort-format können Sie sogar einige Schritte weiter. Es sorgt für mehr Dynamik. Erste, Sie möchten ein tool für die Konvertierung zwischen Java-Objekten und JSON-strings. Es gibt viele von Ihnen (siehe unten auf dieser Seite für eine übersicht). Mein persönlicher Favorit ist Google Gson. Herunterladen und Ihre JAR-Datei in
/WEB-INF/lib
Ordner für Ihre Webanwendung.Hier ist ein Beispiel, das zeigt
List<String>
als<ul><li>
. Das servlet:Den JS code:
Tun, beachten Sie, dass jQuery automatisch parst die Antwort als JSON und gibt Sie direkt ein JSON-Objekt (
responseJson
) als Funktion argument, wenn Sie die response-content-typeapplication/json
. Wenn Sie vergessen zu setzen, oder sich auf einen Standard vontext/plain
odertext/html
, dann dieresponseJson
argument würde nicht geben Sie ein JSON-Objekt, sondern ein plain-vanilla-string und Sie müssten manuell rumfummeln mitJSON.parse()
danach, das ist also völlig unnötig, wenn Sie die content-type-Recht in den ersten Platz.Rückkehr
Map<String, String>
als JSONHier ist ein weiteres Beispiel, das zeigt
Map<String, String>
als<option>
:Und die JSP:
mit
Rückkehr
List<Entity>
als JSONHier ist ein Beispiel, das zeigt
List<Product>
im<table>
wo dieProduct
Klasse hat die EigenschaftenLong id
,String name
undBigDecimal price
. Das servlet:Den JS code:
Rückkehr
List<Entity>
als XMLHier ist ein Beispiel, das funktioniert genauso effektiv wie die Vorherige, aber dann mit XML statt JSON. Bei der Verwendung von JSP als XML-output-generator, sehen Sie, dass es weniger langweilig zu code, der die Tabelle und alle. JSTL ist auf diese Weise sehr viel nützlicher als Sie tatsächlich verwenden können, um die Ergebnisse Durchlaufen und führen Sie server-Seite Daten-Formatierung. Das servlet:
Den JSP-code (Hinweis: wenn Sie die
<table>
im<jsp:include>
es kann wiederverwendbar sein, anderswo in einem nicht-ajax-response):Den JS code:
Werden Sie jetzt wahrscheinlich erkennen, warum XML so viel stärker als JSON für den besonderen Zweck der Aktualisierung ein HTML-Dokument mit Ajax. JSON ist komisch, aber nachdem alle in der Regel nur sinnvoll, für so genannte "öffentliche web-services". MVC-frameworks wie JSF Verwendung von XML unter der Abdeckungen für Ihre ajax-Magie.
Ajaxifying ein vorhandenes Formular
Können Sie jQuery verwenden
$.serialize()
leicht ajaxify bestehenden POST-Formulare ohne hantieren mit der Sammlung und Weitergabe der individuellen form-input-Parameter. Ausgehend von einer bereits bestehenden form, die perfekt funktioniert gut ohne JavaScript/jQuery (und damit degradiert anmutig, wenn Anwender hat JavaScript deaktiviert):Können Sie schrittweise Verbesserung mit ajax wie folgt:
Können Sie im servlet unterscheiden zwischen normalen Anforderungen und ajax-Anfragen wie folgt:
Den jQuery Form plugin tut mehr oder weniger das gleiche wie oben jQuery Beispiel, aber es hat zusätzliche transparente Unterstützung für
multipart/form-data
Formen, wie Sie durch Datei-uploads.Manuelles senden des request-Parameter, um servlet
Wenn Sie nicht über ein Formular, sondern wollte nur die Interaktion mit dem servlet "in den hintergrund", wobei Sie VERÖFFENTLICHEN möchten einige Daten, dann können Sie mit jQuery
$.param()
Sie leicht umwandeln ein JSON-Objekt an einen URL-kodierten query-string.Den gleichen
doPost()
Methode, wie hier gezeigt, über wiederverwendet werden können. Bitte beachten Sie, dass diese syntax funktioniert auch mit$.get()
in jQuery unddoGet()
im servlet.Manuelles senden JSON-Objekt an servlet
Wenn Sie jedoch beabsichtigen, zu senden, die das JSON-Objekt als ganzes und nicht als einzelne request-Parameter aus irgendeinem Grund, dann würden Sie brauchen, um es zu serialisieren, um einen string mit Hilfe
JSON.stringify()
(nicht Teil von jQuery) und weisen jQuery zu setzen request content-typeapplication/json
anstelle von (Standard -)application/x-www-form-urlencoded
. Dies kann nicht getan werden, über$.post()
Komfort-Funktion, die aber getan werden muss, um über$.ajax()
als unten.Tun, beachten Sie, dass eine Menge der Vorspeisen-mix
contentType
mitdataType
. DiecontentType
stellt die Art der Anfrage Körper. DiedataType
stellt die (erwartete) Art der Antwort Körper, die in der Regel nicht notwendig, da jQuery bereits autodetects es aufgrund der Reaktion derContent-Type
header.Dann, um die JSON-Objekt in das servlet, die nicht gesendet werden als einzelne request-Parameter, sondern als eine ganze JSON-string in der oben beschriebenen Weise, müssen Sie nur manuell Parsen der Anfrage Körper mithilfe einer JSON-tool statt mit
getParameter()
den üblichen Weg. Nämlich, servlets nicht unterstütztapplication/json
formatierte Anfragen, aber nurapplication/x-www-form-urlencoded
odermultipart/form-data
formatierte Anfragen. Gson unterstützt auch das Parsen einer JSON-string in ein JSON-Objekt.Tun, beachten Sie, dass dies alles ist mehr plump als nur mit
$.param()
. Normalerweise, die Sie verwenden möchtenJSON.stringify()
nur, wenn der Ziel-service ist z.B. eine JAX-RS (RESTful) Dienstleistung, die aus irgendeinem Grund nur in der Lage, konsumieren von JSON-strings und nicht regelmäßig request-Parameter.Sendet einen redirect von servlet
Wichtig zu erkennen und zu verstehen ist, dass jede
sendRedirect()
undforward()
Anruf von der servlet auf eine ajax-Anfrage nur weiterleiten oder umleiten der ajax-request selbst und nicht das Haupt-Dokument/Fenster, wo der ajax-request stammt. JavaScript/jQuery würde in einem solchen Fall nur abrufen, die umgeleitet/weitergeleitet-Antwort alsresponseText
variable in der callback-Funktion. Wenn es gibt eine ganze HTML-Seite und nicht um eine ajax-spezifische XML-oder JSON-Antwort, dann alles, was Sie tun können, ist zum ersetzen des aktuellen Dokuments mit.Beachten Sie, dass Sie diese nicht ändern, dass die URL als enduser sieht im browser die Adresse bar. So gibt es Probleme mit bookmarkability. Also, es ist viel besser, einfach nur wieder eine "bauanleitung" für JavaScript/jQuery, um eine Umleitung durchzuführen, anstatt den gesamten Inhalt der umgeleiteten Seite. E. g. durch Rückgabe eines boolean oder eine URL.
Siehe auch:
NÖ. Wenn Sie die post Lesen von oben nach unten, erfahren Sie, warum.
Diese Antwort ist meine Lebensader für den letzten Monat oder so lol. Lernen eine Menge von ihm. Ich LIEBE das XML-Beispiel. Vielen Dank für die Umsetzung dieses zusammen! Eine noob Frage und zwar, wenn Sie Zeit haben. Gibt es einen Grund für die Umsetzung der xml-Ordner unter WEB-INF ?
So können Benutzer nicht downloaden.
Ihre XML-Beispiel ist Klasse, danke. Aber ich bin immer "Unable to get property 'ersetzen' von undefined oder null-Verweis" für
$("#somediv").html($(responseXml).find("data").html())
dieser Linie. Es sagt auch "Falsche Anzahl an Argumenten oder ungültige eigenschaftszuweisung". Ich kann auch sehen, dass meine XML ist mit Daten gefüllt, wenn ich Debuggen. Irgendwelche Ideen ?InformationsquelleAutor BalusC
Den richtigen Weg zur Aktualisierung der Seite aktuell angezeigt wird im browser des Benutzers (ohne UMLADUNG) haben einige code-Ausführung im browser aktualisieren die Seite DOM.
Dieser code wird in der Regel javascript-Code eingebettet oder über einen Link in der HTML-Seite, damit der AJAX-Vorschlag. (In der Tat, wenn wir davon ausgehen, dass der aktualisierte text stammt aus dem server über eine HTTP-Anforderung, dies ist ein klassisches AJAX.)
Ist es auch möglich zu implementieren, die diese Art der Sache mit einigen browser-plugin oder add-on, aber es kann schwierig sein, für ein plugin zu erreichen in der browser-Daten, Strukturen, die Aktualisierung der DOM. (Native-code-plugins Schreibe normalerweise auf einige Grafik-Rahmen, der in die Seite eingebettet.)
InformationsquelleAutor Stephen C
Zeige ich Euch eine ganze Beispiel-servlet - & wie ajax-call.
Hier, wir sind gehen zu erstellen, die einfaches Beispiel erstellen Sie das login-Formular mittels servlet.
index.html
Hier ist ajax Sample
LoginServlet Servlet-Code :-
InformationsquelleAutor Mitul Maheshwari
InformationsquelleAutor SUBZ
Ajax (auch AJAX), ein Akronym für Asynchronous JavaScript and XML) ist eine Gruppe von miteinander verbundenen web-development-Techniken auf der client-Seite zu erstellen, asynchrone web-Anwendungen. Mit Ajax web-Anwendungen können Daten senden und abrufen von Daten von einem server asynchron
Unten ist der Beispiel-code:
Jsp-Seite java-script-Funktion zum senden von Daten an servlet mit zwei Variablen firstName und lastName:
Servlet zum Lesen von Daten senden Sie zurück zu jsp in xml-format ( Sie können text als gut. Nur Sie müssen sich ändern-response-Inhalte in text-und render-Daten, die auf javascript-Funktion.)
InformationsquelleAutor user3468976
Normalerweise Sie nicht aktualisieren Sie eine Seite von einem servlet. Client (browser) hat auf Anfrage ein update. Entweder client lädt eine ganz neue Seite oder ist es eine Aktualisierung anfordert, um einen Teil einer bestehenden Seite. Diese Technik nennt sich Ajax.
InformationsquelleAutor Peter Knego
Verwendung von bootstrap-multi-wählen Sie
Ajax
In Servlet
InformationsquelleAutor Thakhani Tharage