본문 바로가기
프로그래밍/spring

spring ajax

by 카라미 2015. 7. 29.
소스부터..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var data = {usr_id : "jack" , usr_pw : "jack", usr_name : "jack"};
      
$.ajax({
 url : "/contextPath/test/json",
 method : "POST",
 contentType : "application/json",
 data : JSON.stringify(data),          
 success : function() {
  alert("전송 성공");
 },
 error : function(XHR, textStatus, errorThrown) {
        
     alert("Error: " + textStatus);     
     alert("Error: " + errorThrown);
 
 }
});

위와 같이 json 객체를 JSON.stringify 를 이용하여 문자열로 변환후 전송하려 할때 spring에서를 어떻게 받아야 할까?

1
2
3
4
5
6
7
8
@RequestMapping(value = "/test/json", method = RequestMethod.POST, consumes="application/json")
public void ajax_sendJSON(@RequestBody Map< String, Object> data, HttpServletResponse response) { 
     
 logger.info("ajax_sendJSON\n"+data);  
   
 response.setStatus(HttpServletResponse.SC_NO_CONTENT);
        //응답 없음
}
위와 같이 받으면 된다. 만약에 json객체가 [] 로 된 배열형태라면
List< Map< String,Object>> 로 받으면 된다.

json객체를 내보낼때도 마찬가지다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@ResponseBody
@RequestMapping(value = "/test/json", method = RequestMethod.GET, produces="application/json")
public List< Map< String, Object>> ajax_receiveJSON() {
   
 logger.info("ajax_receiveJSON");
   
 List< Map< String, Object>> list = new ArrayList< Map< String, Object>>();
   
 for(int i=0 ; i<3 ; i++) {
    
  Map< String, Object> map = new HashMap< String, Object>();
    
  map.put("id", "id"+i);
  map.put("name", "name"+i);
    
  list.add(map);
 }
   
 return list;   
}
위와 같이 리턴해주면 json형태로 손쉽게 받을 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$.ajax({
 url : "/contextPath/test/json",
 method : "GET"
 dataType:"JSON",
 success : function(json) {
        
   alert(JSON.stringify(json));      
        
 },
 error : function(XHR, textStatus, errorThrown) {
        
     alert("Error: " + textStatus);     
     alert("Error: " + errorThrown);
 
 }
});
받는 것도 위 처럼 받으면 된다

매우 좋은 기능이지만 그냥 사용 할 수는 없다. pom.xml 에서 다음을 추가하면 된다.

1
2
3
4
5
6
7
8
9
10
<dependency>
 <groupid>org.codehaus.jackson</groupid>
 <artifactid>jackson-core-asl</artifactid>
 <version>1.9.12</version>
</dependency>
<dependency>
 <groupid>org.codehaus.jackson</groupid>
 <artifactid>jackson-mapper-asl</artifactid>
 <version>1.9.12</version>
</dependency>
그리고 전에 글에 servlet-context.xml 에서 처럼 json 관련 
bean을 추가해주면 된다.


'프로그래밍 > spring' 카테고리의 다른 글

springMVC config  (0) 2015.10.28
springMVC config  (0) 2015.10.28
sping ioc annotaion 기반 설정 예제  (0) 2015.10.27
spring ApplicationContext bean 초기화  (0) 2015.10.26
spring BeanFactory bean 초기화 예제  (0) 2015.10.26