프로그래밍 언어/자바 & 코틀린

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<StringObject> 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를 이용하면 받을 수 있다는 것.