Appeler Servlet et invoquer le code Java à partir de JavaScript avec les paramètres

j'ai la clé de session qui est une variable JavaScript que j'ai obtenue à partir d'un appel D'API REST. Je dois appeler mon code Java dans un servlet et passer cette clé comme paramètre. Quelle fonction JavaScript puis-je utiliser pour faire cela?

6
demandé sur BalusC 2010-01-25 15:40:31

3 réponses

plusieurs façons:

  1. utilisez window.location pour lancer une requête GET. La mise en garde est que c'est synchrone (de sorte que le client verra la page actuelle être changée).

    window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
    

    notez l'importance de la fonction encodeURIComponent() intégrée pour coder les paramètres de la requête avant de la passer.

  2. utilisez form.submit() pour lancer une demande GET ou POST. Le problème est aussi que il"s synchrone.

    document.formname.key.value = key;
    document.formname.submit();
    

    avec

    <form name="formname" action="servlet" method="post">
        <input type="hidden" name="key">
    </form>
    

    Sinon, vous pouvez également définir le champ caché du formulaire et attendez jusqu'à ce que l'utilisateur soumet.

  3. utilisez XMLHttpRequest#send() pour lancer une requête asynchrone en arrière-plan (également connu sous le nom D'Ajax). L'exemple ci-dessous va invoquer servlet"s doGet() .

    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key));
    xhr.send(null);
    

    ci-dessous l'exemple invoquera servlet " s 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. Utiliser jQuery pour envoyer un crossbrowser compatible requête Ajax (au-dessus xhr code fonctionne dans la vraie uniquement pour les navigateurs, pour MSIE compatibilité, vous"ll faut ajouter un peu de désordre ;) ).

    $.get("http://example.com/servlet", { "key": key });
    

    $.post("http://example.com/servlet", { "key": key });
    

    notez que jQuery encode déjà de manière transparente les paramètres de la requête tout seul, donc vous n'avez pas besoin encodeURIComponent() ici.

dans tous les cas, le key sera disponible dès request.getParameter("key") dans le servlet.

voir aussi:

11
répondu BalusC 2018-04-07 07:23:42

aucune fonction JavaScript en soi, mais les navigateurs généralement * fournir un XMLHttpRequest objet et vous pouvez passer par ce .

Bibliothèques comme YUI et jQuery fournir des fonctions d'assistance pour simplifier son utilisation.

* pour une valeur de "Habituellement" qui comprend à peu près n'importe quel navigateur qui supporte JavaScript et a été libéré depuis la mort de Netscape 4

1
répondu Quentin 2010-01-25 12:43:07

lors de L'envoi de l'en-tête add POST xhttp.setRequestHeader ("Content-type"," application/x-www-form-urlencoded");

le code ressemble à Client:

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

serveur:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(req.getParameter("lorem"));
}
1
répondu SoSen 2017-07-17 04:58:23