Chame o Servlet e invoque o código Java do JavaScript junto com os parâmetros

Eu tenho chave de session que é uma variável JavaScript que recebi de uma chamada da API REST. Eu preciso chamar meu código Java em um servlet e passar essa chave como um parâmetro. Qual function JavaScript posso usar para fazer isso?

Várias formas:

  1. Use window.location para acionar uma solicitação GET. Ressalva é que é síncrona (para que o cliente veja a página atual sendo alterada).

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

    Observe a importância da function encodeURIComponent() incorporada para codificar os parâmetros de solicitação antes de transmiti-los.

  2. Use form.submit() para triggersr uma solicitação GET ou POST. A advertência é também que é síncrona.

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

    Com

     

    Como alternativa, você também pode definir apenas o campo oculto de um formulário existente e aguardar até que o usuário o envie.

  3. Use XMLHttpRequest#send() para triggersr uma solicitação assíncrona em segundo plano (também conhecida como Ajax). Abaixo do exemplo, será invocado o doGet() servlet.

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

    Abaixo do exemplo, será invocado o doPost() servlet.

     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. Use jQuery para enviar uma solicitação Ajax compatível com crossbrowser (o código xhr acima funciona apenas em navegadores reais, para compatibilidade com o MSIE, você precisará adicionar alguma desordem;)).

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

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

    Observe que o jQuery já codifica de forma transparente os parâmetros de solicitação por si só, portanto, não é necessário encodeURIComponent() aqui.

De qualquer forma, a key estará disponível apenas por request.getParameter("key") no servlet.

Veja também:

  • Como usar o Servlets e o Ajax?
  • Acessar variables ​​Java / Servlet / JSP / JSTL / EL em JavaScript

Nenhuma function JavaScript per se, mas os navegadores normalmente * fornecem um object XMLHttpRequest e você pode passar por isso .

Bibliotecas como YUI e jQuery fornecem funções auxiliares para simplificar seu uso.

* por um valor de “normalmente” que inclui praticamente qualquer navegador que suporte JavaScript e foi lançado desde que o Netscape 4 morreu

Ao enviar o POST, adicione o header xhttp.setRequestHeader (“Content-type”, “application / x-www-form-urlencoded”);

O código se parece com o cliente:

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

Servidor:

 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(req.getParameter("lorem")); }