여니의 성장 diary
article thumbnail
728x90
반응형

지난 포스팅에서 JSON 데이터 전송 자체 오류는

@ResponseBody, @RequestBody 어노테이션으로 해결했었는데,

이번에는 Encoding 오류가 발생하고 말았다😣

 

 

'UTF-8'로 정상적으로 인코딩이 되지않아서

문구 전체가 물음표로 가득해져서 다시 해결 방법을 찾아 나섰다!

 

RootConfig에서나 xml, jsp 등 화면 출력 인코딩 문제는 아닌 것 같고,

오류의 원인을 찾기가 힘들어서 chatGPT의 힘을 빌려보았음😵

 

Java - Controller
JavaScirpt

자바 코드와 자바 스크립트 코드는 각각 이렇게 작성되었고,

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를 활용해서

인코딩을 설정할 수 있으니 기억해두기 위해서 기록!

 

728x90
반응형
profile

여니의 성장 diary

@pponyo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!