본문 바로가기
Programming/Spring

Spring 3.x 에서 @ResponseBody 로 응답시 Encoding 문제

by 막이 2012. 5. 17.
특정 요청에 따른 JSON 응답을 해주기 위해 @ResponseBody를 이용하여 
아래와 같은 코드를 작성하였습니다. 

@RequestMapping(value="/json", method=RequestMethod.GET)
@ResponseBody
public String responseBodyJsonOutput() { 
	return "~~~~~~";
}
 


그러나 여지없이 한글 Encoding 문제가 되어 ??? 로 표기되는 현상이 일어나는..
구글링 결과 Filter를 이용하는 방법과 String의 Encoding 재설정 등 여러가지 방법을 시도하였으나 결과는 동일... 

성공한 방법은 일단 SpringContext 에 아래와 같이 StringHttpMessageConverter Bean을 정의합니다.

<!-- StringHttpMessageConverter UTF-8 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
	<property name="messageConverters">
		<list>
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes">
					<value>text/plain;charset=UTF-8</value>
				</property>
			</bean>
		</list>
	</property>
</bean>
 



그리고 아래와 같이 @ResponseBody 를 이용하지 않,고 ResponseEntity

 로 Controller의 메소드의 리턴 타입을 정의합니다.

 

@RequestMapping(value="json", method=RequestMethod.GET)
public ResponseEntity<string> getNotifierLogList() {	
	HttpHeaders responseHeaders = new HttpHeaders();
	responseHeaders.add("Content-Type", "text/html; charset=UTF-8");
	return new ResponseEntity<string>("~~~~jsondata~~~~`", responseHeaders, HttpStatus.CREATED);
}
</string></string>
 

 

출처 : http://dptablo.tistory.com/entry/Spring-3x-%EC%97%90%EC%84%9C-ResponseBody-%EB%A1%9C-%EC%9D%91%EB%8B%B5%EC%8B%9C-Encoding-%EB%AC%B8%EC%A0%9C

'Programming > Spring' 카테고리의 다른 글

Mybatis Mapper  (0) 2012.09.28
Spring Annotation - @Component, @Service, @Repository, @Controller  (0) 2012.09.28
@Qualifier  (0) 2012.09.28
Autowired  (0) 2012.09.28
BeanFactory, ApplicationContext  (0) 2012.04.24