본 글에서는 코드 예시를 통해 spring mvc가 json 데이터를 수신하는 방법을 소개하고 있다.
JSON 수신
프런트엔드에서 @RequestBody 주석을 사용하려면 형식화된 JSON을 컨트롤러에 제출하기만 하면 되며 Spring은 자동으로 이를 빈으로 어셈블합니다.
1) 위 프로젝트에서 JSON을 반환하는 첫 번째 메소드를 기반으로 다음 메소드를 추가합니다.
자바 코드
@RequestMapping(value="/add",method=RequestMethod.POST, headers = {"content-type=application/json","content-type=application/xml"}) @ResponseBody public Object addUser(@RequestBody User user) { System.out.println(user.getName() + " " + user.getAge()); return new HashMap<String, String>().put("success", "true"); }
POJO는 다음과 같습니다.
자바 코드
public class User { private String name; private String age; //getter setter }
2) 프론트엔드에서는 jQuery를 사용하여 JSON을 처리할 수 있습니다. 여기에서 양식의 데이터를 JSON 개체로 반환할 수 있는 jQuery 플러그인이 있습니다.
JS 코드
$.fn.serializeObject = function(){ var o = {}; var a = this.serializeArray(); $.each(a, function(){ if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };
다음은 jQuery를 이용하여 JSON을 주고 받는 코드입니다.
JS 코드
$(document).ready(function(){ jQuery.ajax({ type: 'GET', contentType: 'application/json', url: 'jsonfeed.do', dataType: 'json', success: function(data){ if (data && data.status == "0") { $.each(data.data, function(i, item){ $('#info').append("姓名:" + item.name +",年龄:" +item.age); }); } }, error: function(){ alert("error") } }); $("#submit").click(function(){ var jsonuserinfo = $.toJSON($('#form').serializeObject()); jQuery.ajax({ type: 'POST', contentType: 'application/json', url: 'add.do', data: jsonuserinfo, dataType: 'json', success: function(data){ alert("新增成功!"); }, error: function(){ alert("error") } }); }); });
그런데 Spring을 사용하는 것은 정말 귀찮은 일인 것 같습니다. Jersey의 RESTful 구현에 비해 간결하지 않은 부분이 참으로 많습니다.
위 내용은 이 글에서 공유한 json 데이터를 수신하는 Spring mvc 관련 정보입니다.