Rufen Sie Servlet auf und rufen Sie Java-Code zusammen mit Parametern aus JavaScript auf

Lesezeit: 2 Minuten

Benutzer-Avatar
Pranav

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?

Benutzer-Avatar
BalusC

Verschiedene Wege:

  1. 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.

  2. 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.

  3. Verwenden XMLHttpRequest#send() um eine asynchrone Anfrage im Hintergrund abzufeuern (auch bekannt als Ajax). Das folgende Beispiel ruft Servlets auf doGet().

    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));
    
  4. 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"));
}

1015450cookie-checkRufen Sie Servlet auf und rufen Sie Java-Code zusammen mit Parametern aus JavaScript auf

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy