2016-09-10 6 views
1

私はjspファイルをGoogleマップで作成し、オートコンプリートといくつかのボタンを配置します。送信ボタンクリックはJavascriptのメソッドを呼び出します。このメソッドは、jspページの入力データをcallServlet()メソッドに 'params'として渡します。私はサーブレットページMyServletを呼び出して、それにパラメータを渡したいと思います。しかし、私のcallServlet()は完全に実行されますが、MyServletにコントロール/パラメータを渡すことはありません。 また、MyServletのparamsを読み取る方法は?javascriptからサーブレットへの値渡しと制御

私はそれを解決するのを手伝ってください。

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);  

    } 

サーブレットコード:(このページへの変更を加えていないシンプルなサーブレットテンプレート)

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> 

答えて

2

jQueryを使用しない特定の理由はありますか?

基本的に、xmlhttp.send(params)は、Jsonではなくkey = value文字列を受け取ることを想定しています。裸のXMLHttpRequestを使用する場合は、この文字列を自分で作成する必要があります。

また、このマッピング:var url = "./mapServlet";通常はルートからコードを提供し、JSファイルは/ jsなどのリソースディレクトリから提供されるため、間違っている可能性があります。 `var url ="/mapServlet "を使う方が良いでしょう。あなたは、サーブレットに到達した後

最後に、あなたはjQueryのjQuery.postを使用して起動し使用してサーバーを呼び出すにはrequest.getParameter("parameter_name")

を使用してパラメータを読み取ることができます()メソッド:

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

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

私はjQueryソリューションを認識していません。あなたはそれを投稿できますか? URLの他にも正しいのです。と私はパラメータとしてjsonなしでこのソリューションを試してみます –

+0

私はjQuery.postの例で私の答えを更新しました。 –

+0

jqueryは、MyServletを通過した後にコンソール上のJSP pgを表示しますが、jspページをブラウザにロードしません。 –

関連する問題