Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值和控件从javascript传递给servlet_Javascript_Java_Jquery_Jsp_Servlets - Fatal编程技术网

将值和控件从javascript传递给servlet

将值和控件从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

我有一个带有google地图、place autocomplete和几个按钮的jsp文件。submit按钮单击调用Javascript中的一个方法,inturn将jsp页面“input”数据作为“params”传递给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模板)

公共类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);
  });