我有一个 session key ,它是一个从 REST API 调用中获得的 JavaScript 变量。我需要在 servlet 中调用 Java 代码并将该 key 作为参数传递。我可以使用什么 JavaScript 函数来做到这一点?
最佳答案
几种方法:
使用
window.location
触发 GET 请求。需要注意的是它是同步的(因此客户端将看到当前页面正在更改)。window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
请注意内置
encodeURIComponent()
函数在传递请求参数之前对其进行编码的重要性。使用
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>
或者,您也可以只设置现有表单的隐藏字段,然后等待用户提交。
使用
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));
使用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/