簡體   English   中英

使用Ajax將JSON對象發送到servlet

[英]Sending JSON Object to servlet using Ajax

我正在嘗試編寫一個簡單的在線BMI計算器,我是將Ajax與servlet結合使用的初學者。 我正在嘗試將JSON對象發送到servlet,該對象看起來像(這只是一個示例)

{“ fname”:“名稱”,“ lname”:“姓氏”,“電子郵件”:“ jh”}

該Servlet應該考慮重量和高度並計算BMI以將其返回給網頁

在index.jsp頁面上應用此代碼后

然后我以這種方式處理servlet中的請求:




$(document).ready(function(){
$("#simplepost").click(function(e)
{
var data = $('#ajaxform').serializeObject();



$.ajax({
    type: "POST",
    url: "AddServlet",
    contentType: "application/json", 
    data: JSON.stringify(data),
    success: function(response) {
        // ...

    }
});

});
});



import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.HTTP;
import org.json.JSONException;
import org.json.JSONObject;



public class AddServlet extends HttpServlet  {

private static final long serialVersionUID = 1L;

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


         JSONObject jsonObject;

         StringBuffer jb = new StringBuffer();
          String line = null;
          try {
            BufferedReader reader = request.getReader();
            while ((line = reader.readLine()) != null)
              jb.append(line);


          } catch (Exception e) { e.printStackTrace(); }

          try {


             jsonObject =  HTTP.toJSONObject(jb.toString());

             System.out.println("jsonObject    "+jsonObject);
             System.out.println("jb   "+jb);



          } catch (JSONException e) {
            // crash and burn
            throw new IOException("Error parsing JSON request string");
          }



     }
}


我在servlet上得到了這個結果:

jsonObject  

  {"Request-URI":"","Method":"{\"fname\":\"name\",\"lname\":\"lastname\",\"email\":\"jh\"}","HTTP-Version":""}

jb  

{"fname":"kjh","lname":"jkh","email":"jh"}

如何在Servlet上讀取JSON數據以計算BMI?

以及如何將結果(數字)作為響應發送到網頁?

**我嘗試使用ObjectMapper類,但出現錯誤,嘗試添加依賴項,但是當我嘗試更新索引時,eclipse停止工作

您可以使用JSONObject(String)String轉換為JSONObject 像這樣:

jsonObject =  new JSONObject(jb.toString());

要創建新的JSON對象,請使用JSONObject()和各種put(String, ?) JSONObject() put(String, ?)方法。 例如:

JSONObject obj = new JSONObject();
obj.put("BMI", 100);

要發送響應,類似這樣的方法應該起作用:

response.setStatus(200);
response.setContentType("application/json");
PrintWriter writer = response.getWriter();
writer.append(obj.toString());
writer.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM