프로그래밍 언어/자바 & 코틀린
ajax에서 JSON.stringify로 넘긴 파라미터를 서버에서 @RequestBody로 받기.
희랍인 조르바
2018. 1. 21. 18:01
평소 ajax를 사용할 때, dataType을 json으로 선언만 하고, 넘길 파라미터를 Map에 담아서 넘겼었다.
근데 담긴 Map을 json 문자열로 변형하여 넘기는 코드를 봤다.
서버에서 파라미터가 담긴 Map을 @RequestParam을 이용해 그냥 받으려고 했더니 자꾸 에러가 떴다.
1 2 3 4 5 6 7 8 9 | $.ajax({ type: "POST", url: "<c:url value='/practice/jsonStringifyTest'/>", dataType: 'json', data: JSON.stringify({"startDate": startDate, "endDate": endDate}), contentType:'application/json; charset=utf-8', success: function(data){ alert("JSON.stringify로 파라미터로 넘기기 성공!" + data.result); } | cs |
위와 같은 코드를 @RequestParam으로 서버에서 받을 수가 없었다.
@RequestBody를 이용하면 받을 수 있다는 것을 찾아냄!
(왠지 @ResponseBody는 json형태로 반환하니 그걸 받는 형태가 있을거라고 생각했다.)
1 2 3 4 5 6 7 8 9 | @RequestMapping(value="/practice/jsonStringifyTest") public ModelAndView jsonStringifyTest(@RequestBody Map<String, Object> params, HttpServletRequest request){ ModelAndView mv = new ModelAndView(); boolean result = true; mv.addObject("result", result); mv.setViewName("/practice/jsonStringifyTest.jsp"); return mv; } | cs |
결론은 JSON.stringify(json문자열)로 넘어온 파라미터는 서버에서 @RequestBody를 이용하면 받을 수 있다는 것.