2016-02-05 81 views
1

這是我使用ajax將json數據發送到singup.java頁面的js文件。如何使用ajax和Stringify解碼java中的json輸入

function signup() 
{ 
    var name = document.getElementById('name').value; 
    var mobileNo = document.getElementById('mobileNo').value; 
    var emailId = document.getElementById('emailId').value; 
    var password = document.getElementById('password').value; 
    alert(name); 
    alert(mobileNo); 
    alert(emailId); 
    alert(password); 
    var data = {"signUp":[{"name":name,"password":password,"mobileNo":mobileNo,"emailId":emailId}]}; 
    alert(JSON.stringify(data)); 
    var sendData = function(data){ 
    alert(JSON.stringify(data)); 
     $.ajax({ 
    url:'/Signup/signup', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify(data), 
    success: function(response) 
    { 
      alert(response); 
    }, 
}); 
}; 
sendData(data); 
} 

這是我想要獲取json值的signup.java頁面。我不知道正確的語法。如何在Java中進行json解析?

package Json; 

    try 
    { 
      String name =request.getParameter("name"); 
      String mobileno =request.getParameter("mobileNo"); 
      String email =request.getParameter("emailId"); 
      String password =request.getParameter("password"); 
      Class.forName("com.mysql.jdbc.Driver"); 
      java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","admin"); 
      PreparedStatement ps=con.prepareStatement("insert into comments values(?,?,?,?)"); 
      ps.setString(1, name); 
      ps.setString(2,mobileno); 
      ps.setString(3, email); 
      ps.setString(4, password); 
      ps.executeUpdate(); 
      out.println("inserted"); 
    } 
    catch(Exception ee) 
    { 
     out.println("error"+ee.toString()); 
    } 
} 

回答

1

的request.getParameter是查詢字符串時,你的URI的一部分?名稱= TOTO &的firstName =蒂蒂或與使用相同格式的形式POST數據。

爲了閱讀json,您必須自己解析它或使用解析器。

我建議你使用jackson https://github.com/FasterXML/jackson

一旦導入到做基本的東西是

new ObjectMapper().readerFor(MyClass.class).readValue(request.getInputStream()); 

對於這個工作,你的類必須有:的getter/setter,不帶參數的公共構造 - >不要忘了,如果你聲明一個帶有參數,默認的一個變成私有的,所以你必須聲明它。編輯:我建議你如果你用傑克遜做這樣的發送:var data = [{「name」:name,「password」:password,「mobileNo」:mobileNo,「emailId」:emailId }];

並聲明一個類「MyClass」,其中包含字段名稱,密碼,mobileNo,emailId

+0

我是初學者json。我不知道哪些軟件包應該在我的singup.java頁面中導入。那麼,請您詳細告訴我該過程。 –

+0

如果您使用maven或任何依賴關係管理器,請在此處獲取庫:http:// mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.7.1。然後,您需要的唯一導入是:import com.fasterxml.jackson.databind.ObjectMapper – Walfrat