猿问
下载APP

调用servlet并从JavaScript调用Java代码以及参数

调用servlet并从JavaScript调用Java代码以及参数

我有会话键,它是从RESTAPI调用中获得的JavaScript变量。我需要在servlet中调用我的Java代码,并将该键作为参数传递。我可以使用什么JavaScript函数来完成这个任务?



牛魔王的故事
浏览 147回答 3
3回答

陪伴而非守候

有几种方式:使用window.location发出一个GET请求。请注意,它是同步的(因此客户端将看到当前页面被更改)。window.location&nbsp;=&nbsp;"http://example.com/servlet?key="&nbsp;+&nbsp;encodeURIComponent(key);请注意内置的重要性。encodeURIComponent()函数在传递请求参数之前对其进行编码。使用form.submit()发射GET或POST请求。但要注意的是,它是同步的。document.formname.key.value&nbsp;=&nbsp;key;document.formname.submit();带着<form&nbsp;name="formname"&nbsp;action="servlet"&nbsp;method="post"> &nbsp;&nbsp;&nbsp;&nbsp;<input&nbsp;type="hidden"&nbsp;name="key"></form>或者,您也只能设置现有表单的隐藏字段,然后等待用户提交。使用XMLHttpRequest#send()在后台触发异步请求(也称为Ajax)。下面的示例将调用servlet的doGet().var&nbsp;xhr&nbsp;=&nbsp;new&nbsp;XMLHttpRequest();xhr.open("GET",&nbsp;"http://example.com/servlet?key="&nbsp;+&nbsp;encodeURIComponent(key));xhr.send(null);下面的示例将调用servlet的doPost().var&nbsp;xhr&nbsp;=&nbsp;new&nbsp;XMLHttpRequest();xhr.open("POST",&nbsp;"http://example.com/servlet");xhr.setRequestHeader("Content-Type",&nbsp;"application/x-www-form-urlencoded");xhr.send("key="&nbsp;+&nbsp;encodeURIComponent(key));使用jQuery发送与跨浏览器兼容的Ajax请求(见上文)xhr代码只在实际浏览器中工作,为了兼容MSIE,您需要添加一些杂乱;)。$.get("http://example.com/servlet",&nbsp;{&nbsp;"key":&nbsp;key&nbsp;});$.post("http://example.com/servlet",&nbsp;{&nbsp;"key":&nbsp;key&nbsp;});请注意,jQuery本身已经透明地编码了请求参数,因此您不需要encodeURIComponent()这里。不管怎样,key将在request.getParameter("key")在servlet中。另见:如何使用servlet和Ajax?访问JavaScript中的Java/servlet/JSP/JSTL/EL变量

动漫人物

没有JavaScript函数本身,但是浏览器通常*提供一个XMLHttpRequest对象,您可以经历一下.图书馆比如悦和jQuery提供辅助函数以简化其使用。*对于“通常”的值,该值包含几乎所有支持JavaScript的浏览器,并且在Netscape 4死后发布。

拉丁的传说

发送POST时,添加标题xhttp.setRequestHeader(“Contenttype”、“application/x-www-form-urlencode”);代码看起来像客户:&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;executeRequest(req)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xhttp&nbsp;=&nbsp;new&nbsp;XMLHttpRequest(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhttp.onreadystatechange&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this.readyState&nbsp;==&nbsp;4&nbsp;&&&nbsp;this.status&nbsp;==&nbsp;200)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Typical&nbsp;action&nbsp;to&nbsp;be&nbsp;performed&nbsp;when&nbsp;the&nbsp;document&nbsp;is&nbsp;ready: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("response").value&nbsp;=&nbsp;xhttp.responseText; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhttp.open("POST",&nbsp;"execute/cardbrowser",&nbsp;true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhttp.setRequestHeader("Content-type",&nbsp;"application/x-www-form-urlencoded"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhttp.send("lorem=ipsum&name=binny"); &nbsp;&nbsp;&nbsp;&nbsp;}服务器:protected&nbsp;void&nbsp;doPost(HttpServletRequest&nbsp;req,&nbsp;HttpServletResponse&nbsp;resp)&nbsp;throws&nbsp;ServletException,&nbsp;IOException&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(req.getParameter("lorem"));}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答