2012. 2. 27. 18:22
Spring 에서 JSON 사용하기 I.lib()/I.lib(Spring)2012. 2. 27. 18:22
..
..
..
.
우선 찾아본 바로는 spring에서 지원하는 json데이타 처리법에는 크게 3가지가 있다.( 물론 더 있는거같다)
1. http://www.ibm.com/developerworks/kr/library/wa-restful/index.html
메세지 컨버터를 이용한 방법.
응답 메시지를 json데이타로 컨버팅하는 방법이다.
젤 간단하고 광역적으로 쓸수 있다.
2. http://whiteship.tistory.com/2297
MappingJacksonJsonView 를 이용한 방법
이 방법은 세번째랑 비슷한데 Jackson에서 제공하는 json뷰를 쓴다는거만 틀리고 같다.
위에꺼랑 맞먹게 간단한데.... 좀더 불편한건 ModelAndView를 만들때마다 jsonView로 만든 뷰의 이름으로 생성해야 된다는거
3. http://ultteky.egloos.com/10496535
그동안 자주 써왔던 json-lib를 이용한 방법이다.
jackson도 안되던 부분이 이놈 뷰를 쓰니까 됐다....슈발...
2번이나 똑같은데 단지 라이브러리 종류가 틀리다.
[펌] : http://msfury.tistory.com/117
------------------------------------------------------------------------------------------------------
3번 json-lib를 사용하는 방법
서버에서 클라이언트로 리턴할 오브젝트를 Json형태로 변환 하거나 또는 그반대로
Json 데이터를 해당 오브젝트로 변환하는 라이브러리가 필요 합니다. 그중에서
Json-lib를 사용 합니다 .
(해당 사이트에 접속하면 다양한 json 라이브러리를 다운 받을 수 있습니다. ).
여기서 최신 버전으로 다운로드를 받습니다.
다운로드 후 이클립스 프로젝트에
라이브러리를 추가 합니다.
웹 사이트 : http://json-lib.sourceforge.net/
다운로드 : http://sourceforge.net/projects/json-lib/files/
사용법은 해당 사이트를 참고 하시면 됩니다.
거기서 최신 버전의 라이브러리를 다운로드 후 이클립스 프로젝트에
추가 합니다.
다운로드 : http://sourceforge.net/projects/json-lib/files/
JsonView를 인식 하기 위해서 "BeanNameViewResolver"를 설정 합니다.
WebApplication에서는 여러 Resolver가 존재 할수 있기 때문에
우선 순위를 "0"으로 설정해서 최우선으로 설정 합니다.
없이 평소처럼 코딩 하면 됩니다. 모든 ajax 처리는 JsonView가
처리 함으로써 단지 JsonView가 선언된 스프링 빈 id를
ModelAndView의 "setViewName" 메서드에 선언만
하면 됩니다.
※ 샘플 도메인
customizing이 필요하면 JsonView 클래스를 상속 받은 후에 "renderMergedOutputModel"
메서드를 override 하시거 아니면 직접 다운로드 사이트에서
소스를 받은 후에 수정 후 적용 하시면 됩니다.
1. http://www.ibm.com/developerworks/kr/library/wa-restful/index.html
메세지 컨버터를 이용한 방법.
응답 메시지를 json데이타로 컨버팅하는 방법이다.
젤 간단하고 광역적으로 쓸수 있다.
2. http://whiteship.tistory.com/2297
MappingJacksonJsonView 를 이용한 방법
이 방법은 세번째랑 비슷한데 Jackson에서 제공하는 json뷰를 쓴다는거만 틀리고 같다.
위에꺼랑 맞먹게 간단한데.... 좀더 불편한건 ModelAndView를 만들때마다 jsonView로 만든 뷰의 이름으로 생성해야 된다는거
3. http://ultteky.egloos.com/10496535
그동안 자주 써왔던 json-lib를 이용한 방법이다.
jackson도 안되던 부분이 이놈 뷰를 쓰니까 됐다....슈발...
2번이나 똑같은데 단지 라이브러리 종류가 틀리다.
[펌] : http://msfury.tistory.com/117
------------------------------------------------------------------------------------------------------
3번 json-lib를 사용하는 방법
서버에서 클라이언트로 리턴할 오브젝트를 Json형태로 변환 하거나 또는 그반대로
Json 데이터를 해당 오브젝트로 변환하는 라이브러리가 필요 합니다. 그중에서
Json-lib를 사용 합니다 .
(해당 사이트에 접속하면 다양한 json 라이브러리를 다운 받을 수 있습니다. ).
여기서 최신 버전으로 다운로드를 받습니다.
다운로드 후 이클립스 프로젝트에
라이브러리를 추가 합니다.
웹 사이트 : http://json-lib.sourceforge.net/
다운로드 : http://sourceforge.net/projects/json-lib/files/
사용법은 해당 사이트를 참고 하시면 됩니다.
- 스프링 전용 JsonView 다운 받기
거기서 최신 버전의 라이브러리를 다운로드 후 이클립스 프로젝트에
추가 합니다.
다운로드 : http://sourceforge.net/projects/json-lib/files/
- JsonView 스프링 빈 설정
<bean id="jsonView" class="net.sf.json.spring.web.servlet.view.JsonView"/>
- ViewResolver 설정
JsonView를 인식 하기 위해서 "BeanNameViewResolver"를 설정 합니다.
WebApplication에서는 여러 Resolver가 존재 할수 있기 때문에
우선 순위를 "0"으로 설정해서 최우선으로 설정 합니다.
<bean id="beanNameResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver"
p:order="0" />
- Controller Code
없이 평소처럼 코딩 하면 됩니다. 모든 ajax 처리는 JsonView가
처리 함으로써 단지 JsonView가 선언된 스프링 빈 id를
ModelAndView의 "setViewName" 메서드에 선언만
하면 됩니다.
public final ModelAndView handlerRequest(final HttpServletRequest request,
final HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
DummyMember dummyMember1 = new DummyMember();
dummyMember1.setId("xxxxxxx");
DummyMember dummyMember2 = new DummyMember();
dummyMember2.setId("yyyyyy");
List list = new ArrayList();
list.add(dummyMember1);
list.add(dummyMember2);
Map resultMap = new HashMap();
resultMap.put("result1", list);
resultMap.put("result2", dummyMember1);
modelAndView.addAllObjects(resultMap);
modelAndView.setViewName("jsonView");
return modelAndView;
}
※ 샘플 도메인
public class DummyMember {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
- 결과 JSON 패킷
{"result2":{"id":"xxxxxxx"},"result1":[{"id":"xxxxxxx"},{"id":"yyyyyy"}]}
customizing이 필요하면 JsonView 클래스를 상속 받은 후에 "renderMergedOutputModel"
메서드를 override 하시거 아니면 직접 다운로드 사이트에서
소스를 받은 후에 수정 후 적용 하시면 됩니다.
'I.lib() > I.lib(Spring)' 카테고리의 다른 글
DispatcherServlet 이란? (3) | 2012.03.07 |
---|---|
[ViewResolver] ViewResolver (1) | 2012.03.07 |
org.springframework.web.context.contextloaderlistener classnotfound 해결방법 (2) | 2012.02.20 |
Spring(스프링) 이란?! - 정말 이해하기 쉬운 정리 (13) | 2012.01.04 |
이클립스(eclipse) Spring 자동완성이 안될때 (1) | 2011.05.27 |