javascript - 调用 Servlet 并从 JavaScript 和参数调用 Java 代码

标签 javascript jsp servlets parameter-passing

我有一个 session key ,它是一个从 REST API 调用中获得的 JavaScript 变量。我需要在 servlet 中调用 Java 代码并将该 key 作为参数传递。我可以使用什么 JavaScript 函数来做到这一点?

最佳答案

几种方法:

  1. 使用 window.location 触发 GET 请求。需要注意的是它是同步的(因此客户端将看到当前页面正在更改)。

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

    请注意内置 encodeURIComponent() 函数在传递请求参数之前对其进行编码的重要性。

  2. 使用 form.submit() 触发 GET 或 POST 请求。需要注意的是它是同步的。

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

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

    或者,您也可以只设置现有表单的隐藏字段,然后等待用户提交。

  3. 使用 XMLHttpRequest#send() 在后台触发异步请求(也称为 Ajax)。下面的示例将调用 servlet 的 doGet()

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

    下面的示例将调用 servlet 的 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. 使用jQuery发送跨浏览器兼容的 Ajax 请求(上面的 xhr 代码仅适用于真实浏览器,为了兼容 MSIE,您需要添加一些困惑;))。

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

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

    请注意,jQuery 本身已经对请求参数进行了透明编码,因此您此处不需要 encodeURIComponent()

无论哪种方式,key 都只能通过 Servlet 中的 request.getParameter("key") 获取。

另请参阅:

关于javascript - 调用 Servlet 并从 JavaScript 和参数调用 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54877331/

相关文章:

javascript - 使用 jQuery 从文本变量中选择带有选择器的标签

javascript - 根据浏览器宽度完成大图像背景拉伸(stretch)的最简单方法?

java - 单击 href 链接时使用 struts 将数据从 jsp 页面传递到操作类

java - 调用 Facebook API 的 Servlet 获取访问 token

java - 你如何发送带有中文字符的Javamail?

javascript - 如何确定是否启用了 activex 控件?

javascript - 切换 css 类以显示/ overflow hidden 不会重新显示内容

java - 如何将 spring 表单输入占位符属性值引用到消息源属性?

java - JSP Google API 导入错误

Java CGI 与 Servlet