Ich habe einen Sitzungsschlüssel, der eine JavaScript-Variable ist, die ich von einem REST-API-Aufruf erhalten habe. Ich muss meinen Java-Code in einem Servlet aufrufen und diesen Schlüssel als Parameter übergeben. Welche JavaScript-Funktion kann ich dafür verwenden?
Rufen Sie Servlet auf und rufen Sie Java-Code zusammen mit Parametern aus JavaScript auf
Pranav
BalusC
Verschiedene Wege:
-
Verwenden
window.location
um eine GET-Anforderung auszulösen. Vorbehalt ist, dass es synchron ist (der Client sieht also, dass die aktuelle Seite geändert wird).window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
Beachten Sie die Bedeutung von eingebaut
encodeURIComponent()
-Funktion, um die Anforderungsparameter zu codieren, bevor sie übergeben werden. -
Verwenden
form.submit()
um eine GET- oder POST-Anforderung auszulösen. Die Einschränkung ist auch, dass es synchron ist.document.formname.key.value = key; document.formname.submit();
Mit
<form name="formname" action="servlet" method="post"> <input type="hidden" name="key"> </form>
Alternativ können Sie auch nur das versteckte Feld eines bestehenden Formulars setzen und einfach warten, bis der Benutzer es absendet.
-
Verwenden
XMLHttpRequest#send()
um eine asynchrone Anfrage im Hintergrund abzufeuern (auch bekannt als Ajax). Das folgende Beispiel ruft Servlets aufdoGet()
.var xhr = new XMLHttpRequest(); xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key)); xhr.send(null);
Das folgende Beispiel ruft Servlets auf
doPost()
.var xhr = new XMLHttpRequest(); xhr.open("POST", "http://example.com/servlet"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("key=" + encodeURIComponent(key));
-
Verwenden jQuery um eine Crossbrowser-kompatible Ajax-Anfrage zu senden (oben
xhr
Code funktioniert nur in echten Browsern, für MSIE-Kompatibilität müssen Sie etwas Unordnung hinzufügen 😉 ).$.get("http://example.com/servlet", { "key": key });
$.post("http://example.com/servlet", { "key": key });
Beachten Sie, dass jQuery die Anforderungsparameter bereits von selbst transparent codiert, sodass Sie dies nicht benötigen
encodeURIComponent()
hier.
So oder so, die key
wird nur bis verfügbar sein request.getParameter("key")
im Servlet.
Siehe auch:
- Wie verwendet man Servlets und Ajax?
- Greifen Sie in JavaScript auf Java-/Servlet-/JSP-/JSTL-/EL-Variablen zu
Keine JavaScript-Funktion per se, aber Browser bieten in der Regel* eine an XMLHttpRequest Objekt und Sie können geh da durch.
Bibliotheken wie zum Beispiel YUI und jQuery bieten Hilfsfunktionen, um die Verwendung zu vereinfachen.
* für einen Wert von “normalerweise”, der so ziemlich jeden Browser einschließt, der JavaScript unterstützt und seit dem Tod von Netscape 4 veröffentlicht wurde
Beim Senden von POST Header xhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
Der Code sieht aus wie
Klient:
function executeRequest(req) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// Typical action to be performed when the document is ready:
document.getElementById("response").value = xhttp.responseText;
}
};
xhttp.open("POST", "execute/cardbrowser", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("lorem=ipsum&name=binny");
}
Server:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(req.getParameter("lorem"));
}