gpt4 book ai didi

javascript - 将值和控制从 javascript 传递到 servlet

转载 作者:行者123 更新时间:2023-11-30 07:09:42 24 4
gpt4 key购买 nike

我有一个带有谷歌地图的jsp文件,放置自动完成功能和几个按钮。单击提交按钮会调用 Javascript 中的一个方法,该方法又将 jsp 页面的“输入”数据作为“参数”传递给 callServlet() 方法。我想调用 servlet 页面 MyServlet 并将参数传递给它。然而,我的 callServlet() 执行完美,但没有将控制/参数传递给 MyServlet。另外如何读取 MyServlet 中的参数?

请帮我解决一下。

JS代码:

function callServlet(params) {

var xmlhttp = new XMLHttpRequest();
var url = "./mapServlet";

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
console.log(url);
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
console.log("Its perfect");
} else {
alert(xmlhttp.status);
}
}
xmlhttp.open("POST", url, true);

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-Length", params.length); // POST request MUST have a Content-Length header (as per HTTP/1.1)

// params is of json format with key value pairs
xmlhttp.send(params);

}

Servlet 代码:(未对此页面进行任何更改。它是一个简单的 Servlet 模板)

public class MyServlet extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { ... }

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.print("aaas");
processRequest(request, response);
}

@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>

}

web.xml

  <servlet>
<servlet-name>mapServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mapServlet</servlet-name>
<url-pattern>/mapServlet</url-pattern>
</servlet-mapping>

最佳答案

您不使用 jQuery 有什么具体原因吗?

基本上,xmlhttp.send(params) 期望接收 key=value 字符串,而不是 Json。如果您打算使用裸 XMLHttpRequest,则需要自己创建此字符串。

此外,此映射:var url = "./mapServlet";可能是错误的,因为通常您从 root 提供代码,并且您的 JS 文件是从资源目录(例如/js)提供的。使用 `var url = "/mapServlet"会更好。

最后,到达 servlet 后,您可以使用 request.getParameter("parameter_name") 读取参数

要使用 jQuery 调用服务器,请从使用 jQuery.post() 方法开始:

https://api.jquery.com/jquery.post/

$.post( "./mapServlet", params)
.done(function( data ) {
console.log("Got ", data);
});

关于javascript - 将值和控制从 javascript 传递到 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39425174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com