将值和控件从javascript传递给servlet
我有一个带有google地图、place autocomplete和几个按钮的jsp文件。submit按钮单击调用Javascript中的一个方法,inturn将jsp页面“input”数据作为“params”传递给callServlet()方法。我想调用一个servlet页面MyServlet并将参数传递给它。但是,我的callServlet()执行得非常完美,但没有将控件/参数传递给MyServlet。 还有,如何在MyServlet中读取参数 请帮我解决它 JS代码:将值和控件从javascript传递给servlet,javascript,java,jquery,jsp,servlets,Javascript,Java,Jquery,Jsp,Servlets,我有一个带有google地图、place autocomplete和几个按钮的jsp文件。submit按钮单击调用Javascript中的一个方法,inturn将jsp页面“input”数据作为“params”传递给callServlet()方法。我想调用一个servlet页面MyServlet并将参数传递给它。但是,我的callServlet()执行得非常完美,但没有将控件/参数传递给MyServlet。 还有,如何在MyServlet中读取参数 请帮我解决它 JS代码: function c
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模板)
公共类MyServlet扩展了HttpServlet{
受保护的void processRequest(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException,IOException{…}
@凌驾
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
processRequest(请求、响应);
}
@凌驾
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
系统输出打印(“aaas”);
processRequest(请求、响应);
}
@凌驾
公共字符串getServletInfo(){
返回“简短描述”;
}//
}
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>
mapServlet
MyServlet
mapServlet
/mapServlet
您不使用jQuery的具体原因是什么
基本上,xmlhttp.send(params)希望接收key=value字符串,而不是Json。如果打算使用裸XMLHttpRequest,则需要自己创建此字符串
此外,此映射:var url=“./mapServlet”
;可能是错误的,因为您通常从根目录提供代码,而您的JS文件是从资源目录(如/JS)提供的。使用'var url=“/mapServlet”会更好
最后,到达servlet后,可以使用request.getParameter(“参数名称”)
要使用jQuery调用服务器,请从使用jQuery.post()方法开始:
我不知道jQuery解决方案。你能把它寄出去吗。此外,url是正确的。我将尝试这个不使用json作为参数的解决方案。jquery在通过MyServlet后在控制台上打印JSP页面,但不会在浏览器上加载JSP页面。为什么会这样?您需要用实际代码替换console.log。
<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>
$.post( "./mapServlet", params)
.done(function( data ) {
console.log("Got ", data);
});