스프링 프레임워크를 이용해서 웹 개발시 AJAX를 이용해서 클라이언트 단을 구현하려면
스프링의 컨트롤러에서는 데이터만 JSON응답으로 클라이언트에 넘겨 줘야한다.
JSON을 넘겨주기 위한 방법은 여러가지가 있지만
많이 사용하는 방법은 JSON Mapper를 이용하는 방법이다.
구현 방법은 간략하게
▶ JSON Mapper 라이브러리 추가
▶ <mvc:annotation-driven/> 태그 추가
▶ 컨트롤러 메소드 반환형에 @ResponseBody 어노테이션 추가
실행 결과로 406에러가 떳다면,
위에서 설명한 설정이 제대로 되어있는지 확인하자.
▶ JSON Mapper 라이브러리 추가
스프링의 메이븐 설정을 하는 pom.xml에 JSON관련 라이브러리를 추가
버전은 내가 임의로 한 것이니까 본인 상황에 맞게 설정!
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
▶ <mvc:annotation-driven/> 태그 추가
스프링 컨테이너 설정파일인 servlet.xml 파일에 annotation-driven태그 추가
위 그림과 같이 Namespaces 탭으로 이동해서 mvc에 체크 후Source에서 <mvc:annotation-driven/> 태그 추가
▶ 컨트롤러 메소드 반환형에 @ResponseBody 어노테이션 추가
해당 컨트롤러의 메소드에 @ResponseBody 어노테이션을 추가해서 데이터만 반환하도록 설정한다.
아래는 예시
@RequestMapping("test.do")
public @ResponseBody HashMap<String, Object> test(){
// 컨트롤러의 반환형인 HashMap 데이터만 리턴하겠단 의미
HashMap<String, Object> result = new HashMap<String,Object>();
result.put("msg", "안녕");
return result;
}
아주 간략한 형태의 AJAX 구문을 첨부한다.
$.ajax({
url : "test.do",
success : function(data){
alert(data.msg);
}
});
웹 어플리케이션 실행시 원하는대로 동작을 안할 때 웹 브라우저의 개발자 도구를 이용해서 분석해 봤을때 아래와 같이 406에러가 확인됬다면
요청에 대한 응답을 살펴보자.
아래 그림과 같이 Content-Type가 여전히 text/html인것을 볼 수 있다. (JSON 데이터가 넘어오지 않은 것!)
위의 방법으로 설정을 마친후 실행이 성공되면 406 Error는 사라지고 응답을 살펴보면 아래와 같이 JSON으로 변경된 것도 확인 가능하다!
'프로그래밍 > 스프링 프레임워크' 카테고리의 다른 글
[Maven] oracle 라이브러리 추가시 Missing artifact 오류 발생 (8) | 2019.05.22 |
---|---|
javax.servlet import 오류 해결 방법 (4) | 2017.11.16 |