Отправка объекта JSON в сервлет с использованием Ajax - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь написать простой онлайн-калькулятор ИМТ, я новичок в использовании Ajax с сервлетом.Я пытаюсь отправить объект JSON сервлету, этот объект выглядит (это только пример)

{"fname": "name", "lname": "lastname", "email": "jh "}

Предполагается, что сервлет берет вес и рост и вычисляет BMI, чтобы вернуть его в ответ на веб-страницу

после применения этого кода на странице index.jsp

затем я обрабатываю запрос в сервлете следующим образом:




$(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");
          }



     }
}


Я получаю этот результат на сервлете:

jsonObject  

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

jb  

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

Как я могу прочитать данные JSON наСервлет для расчета ИМТ?

И как я могу отправить результат (число) в качестве ответа на веб-страницу?

** Я пытался использовать класс ObjectMapper, я получаю ошибки,Я пытался добавить зависимости, но затмение перестает работать, когда я пытаюсь обновить индексы

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете преобразовать String в JSONObject, используя JSONObject(String).Например:

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

Чтобы создать новый объект JSON, используйте 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...