지난 포스팅에서 JSON 데이터 전송 자체 오류는
@ResponseBody, @RequestBody 어노테이션으로 해결했었는데,
이번에는 Encoding 오류가 발생하고 말았다😣
'UTF-8'로 정상적으로 인코딩이 되지않아서
문구 전체가 물음표로 가득해져서 다시 해결 방법을 찾아 나섰다!
RootConfig에서나 xml, jsp 등 화면 출력 인코딩 문제는 아닌 것 같고,
오류의 원인을 찾기가 힘들어서 chatGPT의 힘을 빌려보았음😵
자바 코드와 자바 스크립트 코드는 각각 이렇게 작성되었고,
java의 controller에서 return 되는 String 객체를
javaScript에서 JSON 객체로 전달받아
update_result, remove_result를 modal창에서 출력하는 코드이다.
chatGPT의 도움을 받아 확인한 결과,
Java에서 JSON 데이터를 생성할 때 문자열 데이터에 대한 인코딩 문제였다.
알고보니 치명적으로 빠뜨린 부분들이 있었다.
JSP 프로젝트를 진행할 때에는 GSON 라이브러리만으로 가능했지만
Spring에서는 Jackson 라이브러리를 추가적으로 의존성 추가 해주어야 하고,
'configureMessageConverters()' 메소드를 이용하여 MessageConverter를 직접 등록해야
JSON 데이터의 인코딩이 정상적으로 가능하다는 것😭
<!-- json (pom.xml) -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
먼저 pom.xml 파일에 jackson-core, jackson-databind
두 가지 라이브러리를 의존성 추가해주었다.
import java.nio.charset.Charset;
import java.util.List;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setDefaultCharset(Charset.forName("UTF-8"));
converters.add(converter);
}
}
그리고 WebMvcConfigure를 구현하는 AppConfig를 생성하여
configureMessageCoverters() 메서드를 이용해 인코딩을 직접 등록해주었다!
결과는 정상적으로 인코딩 성공 💖💖💖
이렇게 막연하게 오류를 찾기 힘들때에는
구글링 + chatGPT를 활용해 답을 찾는게 역시 답이다😂
Spring 버전에 따라 5.0 이전에서는 WebMvcConfigurerAdapter,
5.0 이후부터는 WebMvcConfigurer를 활용해서
인코딩을 설정할 수 있으니 기억해두기 위해서 기록!
'Project > My only universe(Spring framework)' 카테고리의 다른 글
[Spring] MessageConverter 등록 시 이미지 파일명 인코딩 오류 해결 (0) | 2023.04.06 |
---|---|
BootStrap을 활용한 navbar에서 menu 글자 위치 조정하기(중앙, 우측 정렬) (0) | 2023.03.28 |
JSON 형태의 데이터 반환, @ResponseBody, @RequestBody 어노테이션 (0) | 2023.03.28 |
[Error] Login 기능 구현 중 Parameter 송신 오류 및 결과값 타입 변환 오류 (0) | 2023.03.24 |
[3월 4주 차] 프로젝트 시작 후 24일째, 진행 상황 중간 점검 (0) | 2023.03.22 |