简体   繁体   English

从ajax发送json数据并在servlet中解析

[英]send json data from ajax and parse in servlet

Hi I am a newbie in servlet and trying to send object from javascript to servlet using ajax.嗨,我是 servlet 的新手,正在尝试使用 ajax 将对象从 javascript 发送到 servlet。 javascript code looks like this: javascript 代码如下所示:

$.ajax({
      url:'GetUserServlet',
      contentType: "application/json",
      data: JSON.stringify(response),
      type:'post',
      cache:false,
      success:function(data){
         //alert(data);
        $('#somediv').text("user info sent successfully"); 
      },
      error:function(){
          $('#somediv').text("some error occured"); 
      }
   }

); );

Here response is object received from facebook api.这里的响应是从 facebook api 收到的对象。 It is:这是:

reponse={ first_name: "Jhon", last_name: "Doe", id: "19862217575855" }

The doPost method of GetUserServlet is defined as: GetUserServletdoPost方法定义为:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Gson gson = new Gson();
    User user = gson.fromJson(request.getParameter(response), User.class);
    System.out.println(user);
}

User.class is another class containing getter and setter for first_name , last_name and id User.class是另一个包含first_namelast_nameid getter 和 setter 的类

But the program is not getting compiled.但是程序没有被编译。 I have used many syntax changes but cannot find the correct value.我使用了许多语法更改,但找不到正确的值。 How can i get the response object inside servlet?如何在 servlet 中获取response对象?

        // 1. get received JSON data from request
        BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String json = "";
        if(br != null){
            json = br.readLine();
        }

        // 2. initiate jackson mapper
        ObjectMapper mapper = new ObjectMapper();

        // 3. Convert received JSON to User
        User user = mapper.readValue(json, User.class);

        // 4. Set response type to JSON
        response.setContentType("application/json");            

       System.out.println("..user.." + user);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM