개발노트

[오류노트] hashmap/jackson lib를 이용한 ajax응답

별토끼. 2017. 9. 5. 14:28
반응형


[오류노트] hashmap/jackson lib를 이용한 ajax응답


spring mvc를 이용하여 modal을 클릭하면 조회수를 올리는 작업을 하던 중이었다. 

modal을 클릭하면 조회수가 올라가야하는데 DB의 데이터는 올라갔지만 화면에 뿌려주는 작업은 새로고침을 안하면 바뀌지 않았다.


-문제점?

조회수 return 을 int type으로 해서 ajax에서 값을 받으려 했기 때문이었다.

따라서, 응답받는 데이터 타입을 바꿔야한다.


[해결방법]

1. jsp페이지

ajax통신을 get method로 하고 data를 받는 모습

1
2
3
4
5
6
7
8
9
10
11
            $.ajax({
                url:"${pageContext.request.contextPath}/pages/notice/hitNum.do",
                method:"get",
                data:{num:num},
                success:function(data){            
                    $(".hitNum").text(data.hitnum);
                },
                error:function(err){
                    console.log(err);
                }
            });
cs


2. controller페이지

- dao와 service를 통해 return된 int type의 hitnum을 변수에 넣어준 뒤

- map형태로 넣어준다.

- @ResponseBody를 넣어준다. [참고 : http://aljjabaegi.tistory.com/148]

- jackson라이브러리를 이용한다. (3번 참고)

- map형태로 넣어주면 {"hitnum", 99} 이러한 형태로 전달되고 jackson라이브러리가 형태를 json형태로 자동 변형해준다.

1
2
3
4
5
6
7
8
    @RequestMapping("/pages/notice/hitNum")
    @ResponseBody
    public Map<String,Object> NoticehitNum(@RequestParam int num) {
        int hitnum=noticeService.hitNum(num);
        Map<String, Object> map=new HashMap<>();
        map.put("hitnum", hitnum);
        return map;  // {"hitnum", 99}
    }
cs


3. pom.xml

- jackson library 를 통해 map형태의 데이터가 json형태로 자동 변환 된다.

1
2
3
4
5
6
        <!--  json, xml 응답을 편하게 할수 있도록 도와 주는 라이브러리 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.0</version>
        </dependency>
cs


반응형