-
[ajax] 406 에러 해결 - jackson 라이브러리 추가개발/문제 해결 2019. 1. 21. 12:39
문제 상황
: 스프링 MVC + MyBatis + JSON 으로 데이터 뽑아오도록 짜놓은 상태
쿼리문 정상, 쿼리 결과 정상 확인
그러나 브라우저에는 아무런 결과가 출력되지 않아 Network 상태를 보니 406 에러가 떠있는 상태
출처 : https://itcrowd2016.tistory.com/63
https://bryan7.tistory.com/458
http://www.nextree.co.kr/p11205/
그 전까지는 Maven 설정을 위한 pom.xml 을 작성할 때 DB 연결 정도만 신경쓰고
나머지는 남이 올려준걸 그냥 긁어다 썼더니 이런것도 모르고 406 에러를 띄웠다.
정리하자면 406 에러가 뜨는 원인은 서버에서 request가 알려준 content type에 맞는 response 를 생성할 수 없기 때문에 발생하고,
AJAX를 써서 JSON 형태로 데이터를 반환하는 구조에서 406 에러가 발생한다면 대부분 JSON Mapper를 제대로 못 쓰기 때문
따라서
1. pom.xml 에 JSON Mapper 라이브러리 추가
- Spring 4.1에서 Jackson 1.8/1.9의 지원을 중단했기 때문에
jackson-mapper-asl 라이브러리를 쓰고 있었다면 jackson-databind 라이브러리로 대체
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
2. servlet-context.xml 파일에 annotation-driven 태그 추가
<annotation-driven />
3. 컨트롤러 메소드 반환형에 @ResponseBody 어노테이션 선언
이렇게 하고 나니 정상적으로 데이터 반환이 된다. 휴
'개발 > 문제 해결' 카테고리의 다른 글
[Mac OS] react.js 앱 초기화 시 error Command failed with exit code 1. 해결 (0) 2019.03.26 [MyBatis] resultMap 과 resultType (resultClass) 의 차이점 (0) 2019.01.16 [이클립스 에러] Document base does not exist or is not a readable directory (0) 2019.01.14 [이클립스 에러] No suitable driver found for jdbc 해결 (0) 2019.01.11 [이클립스 에러] Access restriction: The type Cookie is not accessible... (0) 2018.10.22 댓글