1 minute read

코드

HomeController.java

@ResponseBody
@RequestMapping(value = "/getYarnResource", method = RequestMethod.POST)
public List<Map<String, Object>> getYarnResource(@RequestBody HashMap<String, Object> param) {

	logger.info("ChartController getYarnResource() start >>");
	//로직 작성
	return new ArrayList<Map<String, Object>>();
}

sample.js

var paramJsonData = {}

$.ajax({
    url: '/chart/getYarnResource',
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    async: true,
    cache: false,
    data: JSON.stringify(paramJsonData),   // {} 
    success: function(result) {
        // 성공적으로 데이터를 받아왔을 때 처리하는 부분
        console.log('Success:', result);
    },
    error: function(xhr, status, error) {
        // 요청이 실패하거나 에러가 발생했을 때 처리하는 부분
        console.error('Error:', status, error);
    }
});

원하는점

JSON 데이터를 처리하고싶다.
💡 json 데이터를 넘겨서 간편하게 컨트롤러측에서 Map 으로 받고 싶었다.

문제점

401 에러 발생
💡 계속해서 406, 415 에러가 발생했다.

계속 응답 Content-Type 이 text/html 이다.
💡 @ResponseBody 로 처리되어 리턴되면 Content-Type 은 application/json 이 되어야한다.
💡 서버에서 에러가 발생하면서 멈추니까 계속 아래처럼 응답했다…….

사진1

정상 시
💡정상이라면 아래처럼 나와야 한다.

사진1

해결법

STEP1. jackson 라이브러리 추가

<!-- Data Binding -->
<!-- JSON 데이터 처리를 위한 dependency -->
<dependency> 
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.9.8</version>
</dependency>
 
<dependency>
<groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
	<version>1.9.13</version>
</dependency>

💡 위 라이브러리 임포트

STEP2. servlet-context.xml 설정 확인(1)

<context:component-scan base-package="com.kbcard.bdp" />

💡 패키지 빈등록이 제대로 되었는지 확인

STEP3. servlet-context.xml 설정 확인(2)

STS 하단 Namespaces 탭 > mvc 체크 확인

정리

일부 스프링3에는 기본적으로 내장된 기능이 없다.
💡 라이브러리를 추가하니까 가능했다.
💡 도움된 포스팅: https://devks.tistory.com/26

스프링 jackson 라이브러리 내장
💡 정말 오랫동안 문제를 해결하려고 찾는도중에 기록할만한 내용이 보인다.
💡 스프링은 jackson 라이브러리를 기본내장한다고 한다.
💡 메이븐에서 스프링 버전에 기본내장된 jackson 라이브러리 확인하고 다운받았다.

💡 컨트롤러 로직을 수행이 가능해졌다. 하지;만 여전히 응답을 json으로 뱉지 못했다..
💡 jackson 라이브러리의 문제라는것을 직감했고 위 포스팅을 보고 jackson-mapper-asl 가 필요하다는 것을 알게되었다.

Updated:

Leave a comment