소스부터..
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 |